Skip to content

Commit 69cc108

Browse files
Export email output in service_identity (#3924) (#2447)
* expose email * fix member * fix member * unnecessary google-beta Signed-off-by: Modular Magician <[email protected]>
1 parent 0968ea6 commit 69cc108

File tree

4 files changed

+35
-16
lines changed

4 files changed

+35
-16
lines changed

.changelog/3924.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
google_project_service_identity: add `email` output.
3+
```

google-beta/resource_project_service_identity.go

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@ func resourceProjectServiceIdentity() *schema.Resource {
3232
Computed: true,
3333
ForceNew: true,
3434
},
35+
"email": {
36+
Type: schema.TypeString,
37+
Computed: true,
38+
},
3539
},
3640
}
3741
}
@@ -61,21 +65,31 @@ func resourceProjectServiceIdentityCreate(d *schema.ResourceData, meta interface
6165
return fmt.Errorf("Error creating Service Identity: %s", err)
6266
}
6367

64-
err = serviceUsageOperationWaitTime(
65-
config, res, project, "Creating Service Identity",
68+
var opRes map[string]interface{}
69+
err = serviceUsageOperationWaitTimeWithResponse(
70+
config, res, &opRes, project, "Creating Service Identity",
6671
d.Timeout(schema.TimeoutCreate))
67-
6872
if err != nil {
6973
return err
7074
}
7175

76+
log.Printf("[DEBUG] Finished creating Service Identity %q: %#v", d.Id(), res)
77+
7278
id, err := replaceVars(d, config, "projects/{{project}}/services/{{service}}")
7379
if err != nil {
7480
return fmt.Errorf("Error constructing id: %s", err)
7581
}
7682
d.SetId(id)
7783

78-
log.Printf("[DEBUG] Finished creating Service Identity %q: %#v", d.Id(), res)
84+
emailVal, ok := opRes["email"]
85+
if !ok {
86+
return fmt.Errorf("response %v missing 'email'", opRes)
87+
}
88+
email, ok := emailVal.(string)
89+
if !ok {
90+
return fmt.Errorf("unexpected type for email: got %T, want string", email)
91+
}
92+
d.Set("email", email)
7993
return nil
8094
}
8195

google-beta/resource_project_service_identity_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ func testGoogleProjectServiceIdentity_basic() string {
2525
data "google_project" "project" {}
2626
2727
resource "google_project_service_identity" "hc_sa" {
28-
project = data.google_project.project.project_id
29-
service = "healthcare.googleapis.com"
28+
project = data.google_project.project.project_id
29+
service = "healthcare.googleapis.com"
3030
}
3131
3232
resource "google_project_iam_member" "hc_sa_bq_jobuser" {
33-
project = google_project_service_identity.hc_sa.project
34-
role = "roles/bigquery.jobUser"
35-
member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-healthcare.iam.gserviceaccount.com"
33+
project = data.google_project.project.project_id
34+
role = "roles/bigquery.jobUser"
35+
member = "serviceAccount:${google_project_service_identity.hc_sa.email}"
3636
}`
3737
}

website/docs/r/project_service_identity.html.markdown

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ To get more information about Service Identity, see:
2323

2424
## Example Usage - Service Identity Basic
2525

26-
2726
```hcl
2827
data "google_project" "project" {}
2928
@@ -35,34 +34,37 @@ resource "google_project_service_identity" "hc_sa" {
3534
}
3635
3736
resource "google_project_iam_member" "hc_sa_bq_jobuser" {
38-
project = google_project_service_identity.hc_sa.project
39-
role = "roles/bigquery.jobUser"
40-
member = "serviceAccount:service-${data.google_project.project.number}@gcp-sa-healthcare.iam.gserviceaccount.com"
37+
project = data.google_project.project.project_id
38+
role = "roles/bigquery.jobUser"
39+
member = "serviceAccount:${google_project_service_identity.hc_sa.email}"
4140
}
4241
```
4342

4443
## Argument Reference
4544

4645
The following arguments are supported:
4746

48-
4947
* `service` -
5048
(Required)
5149
The service to generate identity for.
5250

53-
5451
- - -
5552

5653
* `project` - (Optional) The ID of the project in which the resource belongs.
5754
If it is not provided, the provider project is used.
5855

56+
## Attributes Reference
57+
58+
In addition to the arguments listed above, the following computed attributes are exported:
59+
60+
* `email` - The email address of the Google managed service account.
5961

6062
## Timeouts
6163

6264
This resource provides the following
6365
[Timeouts](/docs/configuration/resources.html#timeouts) configuration options:
6466

65-
- `create` - Default is 20 minutes.
67+
* `create` - Default is 20 minutes.
6668

6769
## User Project Overrides
6870

0 commit comments

Comments
 (0)