diff --git a/mmv1/third_party/tgc/services/resourcemanager/service_account.go b/mmv1/third_party/tgc/services/resourcemanager/service_account.go index 5adf5679fe06..a87baf8a4f1f 100644 --- a/mmv1/third_party/tgc/services/resourcemanager/service_account.go +++ b/mmv1/third_party/tgc/services/resourcemanager/service_account.go @@ -41,7 +41,6 @@ func GetServiceAccountCaiObject(d tpgresource.TerraformResourceData, config *tra func GetServiceAccountApiObject(d tpgresource.TerraformResourceData, config *transport_tpg.Config) (map[string]interface{}, error) { obj := make(map[string]interface{}) - project, err := tpgresource.GetProject(d, config) if err != nil { return nil, err @@ -54,7 +53,7 @@ func GetServiceAccountApiObject(d tpgresource.TerraformResourceData, config *tra obj["description"] = descriptionProp } - emailProp, err := expandServiceAccountDescription(d.Get("email"), d, config) + emailProp, err := expandServiceAccountEmail(d.Get("email"), d, config) if err != nil { return nil, err } else if v, ok := d.GetOkExists("email"); !tpgresource.IsEmptyValue(reflect.ValueOf(emailProp)) && (ok || !reflect.DeepEqual(v, emailProp)) { @@ -105,7 +104,11 @@ func GetServiceAccountApiObject(d tpgresource.TerraformResourceData, config *tra // Generating email when the service account is being created (email not present) obj["email"] = fmt.Sprintf("%s@%s.iam.gserviceaccount.com", accountId, project) } + if _, ok := obj["name"]; !ok { + obj["name"] = fmt.Sprintf("projects/%s/serviceAccounts/%s@%s.iam.gserviceaccount.com", project, accountId, project) + } } + return obj, nil } diff --git a/mmv1/third_party/tgc/tests/data/example_container_cluster.json b/mmv1/third_party/tgc/tests/data/example_container_cluster.json index 23fabbc6e4ac..fd848e8b6dde 100644 --- a/mmv1/third_party/tgc/tests/data/example_container_cluster.json +++ b/mmv1/third_party/tgc/tests/data/example_container_cluster.json @@ -61,7 +61,7 @@ "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}" }, { - "name": "//iam.googleapis.com/projects/{{.Provider.project}}/serviceAccounts/placeholder-QJgu5Gv8", + "name": "//iam.googleapis.com/projects/{{.Provider.project}}/serviceAccounts/service-account-cc@{{.Provider.project}}.iam.gserviceaccount.com", "asset_type": "iam.googleapis.com/ServiceAccount", "resource": { "version": "v1", @@ -71,6 +71,7 @@ "data": { "displayName": "Service Account", "email": "service-account-cc@{{.Provider.project}}.iam.gserviceaccount.com", + "name": "projects/{{.Provider.project}}/serviceAccounts/service-account-cc@{{.Provider.project}}.iam.gserviceaccount.com", "projectId": "{{.Provider.project}}" } }, diff --git a/mmv1/third_party/tgc/tests/data/example_service_account.json b/mmv1/third_party/tgc/tests/data/example_service_account.json index 33b0eae6a510..5f0dc56eaf48 100644 --- a/mmv1/third_party/tgc/tests/data/example_service_account.json +++ b/mmv1/third_party/tgc/tests/data/example_service_account.json @@ -1,6 +1,6 @@ [ { - "name": "//iam.googleapis.com/projects/{{.Provider.project}}/serviceAccounts/placeholder-unique-id", + "name": "//iam.googleapis.com/projects/{{.Provider.project}}/serviceAccounts/service-account-id@{{.Provider.project}}.iam.gserviceaccount.com", "asset_type": "iam.googleapis.com/ServiceAccount", "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", "resource": { @@ -12,6 +12,7 @@ "displayName": "Service Account", "email": "service-account-id@{{.Provider.project}}.iam.gserviceaccount.com", "description": "Service Account Description", + "name": "projects/{{.Provider.project}}/serviceAccounts/service-account-id@{{.Provider.project}}.iam.gserviceaccount.com", "projectId": "{{.Provider.project}}" } } diff --git a/mmv1/third_party/tgc/tests/data/example_service_account_update.json b/mmv1/third_party/tgc/tests/data/example_service_account_update.json index 68dc5d42edd4..5f0dc56eaf48 100644 --- a/mmv1/third_party/tgc/tests/data/example_service_account_update.json +++ b/mmv1/third_party/tgc/tests/data/example_service_account_update.json @@ -1,6 +1,6 @@ [ { - "name": "//iam.googleapis.com/projects/{{.Provider.project}}/serviceAccounts/108592438577779299646", + "name": "//iam.googleapis.com/projects/{{.Provider.project}}/serviceAccounts/service-account-id@{{.Provider.project}}.iam.gserviceaccount.com", "asset_type": "iam.googleapis.com/ServiceAccount", "ancestry_path": "{{.Ancestry}}/project/{{.Provider.project}}", "resource": { @@ -13,8 +13,7 @@ "email": "service-account-id@{{.Provider.project}}.iam.gserviceaccount.com", "description": "Service Account Description", "name": "projects/{{.Provider.project}}/serviceAccounts/service-account-id@{{.Provider.project}}.iam.gserviceaccount.com", - "projectId": "{{.Provider.project}}", - "uniqueId": "108592438577779299646" + "projectId": "{{.Provider.project}}" } } }