|
5 | 5 | package resourcemanager
|
6 | 6 |
|
7 | 7 | import (
|
| 8 | + "context" |
8 | 9 | "fmt"
|
9 | 10 | "strings"
|
10 | 11 |
|
11 | 12 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
12 | 13 | "github.com/hashicorp/terraform-provider-google-beta/google-beta/tpgresource"
|
13 | 14 | transport_tpg "github.com/hashicorp/terraform-provider-google-beta/google-beta/transport"
|
| 15 | + "google.golang.org/api/iam/v1" |
14 | 16 | )
|
15 | 17 |
|
16 | 18 | func DataSourceGoogleServiceAccounts() *schema.Resource {
|
@@ -75,25 +77,29 @@ func datasourceGoogleServiceAccountsRead(d *schema.ResourceData, meta interface{
|
75 | 77 |
|
76 | 78 | accounts := make([]map[string]interface{}, 0)
|
77 | 79 |
|
78 |
| - accountList, err := config.NewIamClient(userAgent).Projects.ServiceAccounts.List("projects/" + project).Do() |
79 |
| - if err != nil { |
80 |
| - return transport_tpg.HandleNotFoundError(err, d, fmt.Sprintf("Service accounts: %s", project)) |
81 |
| - } |
| 80 | + request := config.NewIamClient(userAgent).Projects.ServiceAccounts.List("projects/" + project) |
| 81 | + |
| 82 | + err = request.Pages(context.Background(), func(accountList *iam.ListServiceAccountsResponse) error { |
| 83 | + for _, account := range accountList.Accounts { |
| 84 | + accounts = append(accounts, map[string]interface{}{ |
| 85 | + "account_id": strings.Split(account.Email, "@")[0], |
| 86 | + "disabled": account.Disabled, |
| 87 | + "email": account.Email, |
| 88 | + "display_name": account.DisplayName, |
| 89 | + "member": "serviceAccount:" + account.Email, |
| 90 | + "name": account.Name, |
| 91 | + "unique_id": account.UniqueId, |
| 92 | + }) |
| 93 | + } |
| 94 | + return nil |
| 95 | + }) |
82 | 96 |
|
83 |
| - for _, account := range accountList.Accounts { |
84 |
| - accounts = append(accounts, map[string]interface{}{ |
85 |
| - "account_id": strings.Split(account.Email, "@")[0], |
86 |
| - "disabled": account.Disabled, |
87 |
| - "email": account.Email, |
88 |
| - "display_name": account.DisplayName, |
89 |
| - "member": "serviceAccount:" + account.Email, |
90 |
| - "name": account.Name, |
91 |
| - "unique_id": account.UniqueId, |
92 |
| - }) |
| 97 | + if err != nil { |
| 98 | + return fmt.Errorf("Error retrieving service accounts: %s", err) |
93 | 99 | }
|
94 | 100 |
|
95 | 101 | if err := d.Set("accounts", accounts); err != nil {
|
96 |
| - return fmt.Errorf("Error retrieving service accounts: %s", err) |
| 102 | + return fmt.Errorf("Error setting service accounts: %s", err) |
97 | 103 | }
|
98 | 104 |
|
99 | 105 | d.SetId(fmt.Sprintf(
|
|
0 commit comments