Skip to content

Commit 5b7326c

Browse files
authored
Add missing pagination for data source google_service_accounts (#12763)
1 parent 3250f7c commit 5b7326c

File tree

1 file changed

+21
-15
lines changed

1 file changed

+21
-15
lines changed

mmv1/third_party/terraform/services/resourcemanager/data_source_google_service_accounts.go

+21-15
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
package resourcemanager
44

55
import (
6+
"context"
67
"fmt"
78
"strings"
89

910
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
1011
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
1112
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
13+
"google.golang.org/api/iam/v1"
1214
)
1315

1416
func DataSourceGoogleServiceAccounts() *schema.Resource {
@@ -73,25 +75,29 @@ func datasourceGoogleServiceAccountsRead(d *schema.ResourceData, meta interface{
7375

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

76-
accountList, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.List("projects/" + project).Do()
77-
if err != nil {
78-
return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service accounts: %s", project))
79-
}
78+
request := config.NewIamClient(userAgent).Projects.ServiceAccounts.List("projects/" + project)
79+
80+
err = request.Pages(context.Background(), func(accountList *iam.ListServiceAccountsResponse) error {
81+
for _, account := range accountList.Accounts {
82+
accounts = append(accounts, map[string]interface{}{
83+
"account_id": strings.Split(account.Email, "@")[0],
84+
"disabled": account.Disabled,
85+
"email": account.Email,
86+
"display_name": account.DisplayName,
87+
"member": "serviceAccount:" + account.Email,
88+
"name": account.Name,
89+
"unique_id": account.UniqueId,
90+
})
91+
}
92+
return nil
93+
})
8094

81-
for _, account := range accountList.Accounts {
82-
accounts = append(accounts, map[string]interface{}{
83-
"account_id": strings.Split(account.Email, "@")[0],
84-
"disabled": account.Disabled,
85-
"email": account.Email,
86-
"display_name": account.DisplayName,
87-
"member": "serviceAccount:" + account.Email,
88-
"name": account.Name,
89-
"unique_id": account.UniqueId,
90-
})
95+
if err != nil {
96+
return fmt.Errorf("Error retrieving service accounts: %s", err)
9197
}
9298

9399
if err := d.Set("accounts", accounts); err != nil {
94-
return fmt.Errorf("Error retrieving service accounts: %s", err)
100+
return fmt.Errorf("Error setting service accounts: %s", err)
95101
}
96102

97103
d.SetId(fmt.Sprintf(

0 commit comments

Comments
 (0)