Skip to content

Commit

Permalink
Add missing pagination for data source google_service_accounts (#12763)…
Browse files Browse the repository at this point in the history
… (#20966)

[upstream:5b7326c0b2a239b8ae35d01446c7f73c2adf5efe]

Signed-off-by: Modular Magician <magic-modules@google.com>
  • Loading branch information
modular-magician authored Jan 18, 2025
1 parent f754c62 commit db3a571
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 15 deletions.
3 changes: 3 additions & 0 deletions .changelog/12763.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
iam: fixed missing result by adding pagination for data source `google_service_accounts`.
```
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
package resourcemanager

import (
"context"
"fmt"
"strings"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
"google.golang.org/api/iam/v1"
)

func DataSourceGoogleServiceAccounts() *schema.Resource {
Expand Down Expand Up @@ -75,25 +77,29 @@ func datasourceGoogleServiceAccountsRead(d *schema.ResourceData, meta interface{

accounts := make([]map[string]interface{}, 0)

accountList, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.List("projects/" + project).Do()
if err != nil {
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service accounts: %s", project))
}
request := config.NewIamClient(userAgent).Projects.ServiceAccounts.List("projects/" + project)

err = request.Pages(context.Background(), func(accountList *iam.ListServiceAccountsResponse) error {
for _, account := range accountList.Accounts {
accounts = append(accounts, map[string]interface{}{
"account_id": strings.Split(account.Email, "@")[0],
"disabled": account.Disabled,
"email": account.Email,
"display_name": account.DisplayName,
"member": "serviceAccount:" + account.Email,
"name": account.Name,
"unique_id": account.UniqueId,
})
}
return nil
})

for _, account := range accountList.Accounts {
accounts = append(accounts, map[string]interface{}{
"account_id": strings.Split(account.Email, "@")[0],
"disabled": account.Disabled,
"email": account.Email,
"display_name": account.DisplayName,
"member": "serviceAccount:" + account.Email,
"name": account.Name,
"unique_id": account.UniqueId,
})
if err != nil {
return fmt.Errorf("Error retrieving service accounts: %s", err)
}

if err := d.Set("accounts", accounts); err != nil {
return fmt.Errorf("Error retrieving service accounts: %s", err)
return fmt.Errorf("Error setting service accounts: %s", err)
}

d.SetId(fmt.Sprintf(
Expand Down

0 comments on commit db3a571

Please sign in to comment.