|
3 | 3 | package resourcemanager
|
4 | 4 |
|
5 | 5 | import (
|
| 6 | + "context" |
6 | 7 | "fmt"
|
7 | 8 | "strings"
|
8 | 9 |
|
9 | 10 | "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
|
10 | 11 | "github.com/hashicorp/terraform-provider-google/google/tpgresource"
|
11 | 12 | transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
|
| 13 | + "google.golang.org/api/iam/v1" |
12 | 14 | )
|
13 | 15 |
|
14 | 16 | func DataSourceGoogleServiceAccounts() *schema.Resource {
|
@@ -73,25 +75,29 @@ func datasourceGoogleServiceAccountsRead(d *schema.ResourceData, meta interface{
|
73 | 75 |
|
74 | 76 | accounts := make([]map[string]interface{}, 0)
|
75 | 77 |
|
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 | + }) |
80 | 94 |
|
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) |
91 | 97 | }
|
92 | 98 |
|
93 | 99 | 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) |
95 | 101 | }
|
96 | 102 |
|
97 | 103 | d.SetId(fmt.Sprintf(
|
|
0 commit comments