Skip to content

Commit

Permalink
Add missing pagination for data source google_service_accounts (Googl…
Browse files Browse the repository at this point in the history
  • Loading branch information
bestefreund authored Jan 18, 2025
1 parent 3250f7c commit 5b7326c
Showing 1 changed file with 21 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,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 @@ -73,25 +75,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 5b7326c

Please sign in to comment.