Skip to content

Commit dc38398

Browse files
Add two output-only fields (membership_id, membership_location) under google_container_cluster.fleet (#9974) (#17305)
* add 2 output only fields under resource_container_cluster.fleet * fix format * fix format * fix format * fix format * fix format * fix format * fix format * fix format * fix format * update documentation * update documentation * update documentation * update documentation * fix [upstream:3577ce32d9754ee0da8b2c23a4c732ae455ad98f] Signed-off-by: Modular Magician <[email protected]>
1 parent 25f7cd6 commit dc38398

File tree

3 files changed

+31
-3
lines changed

3 files changed

+31
-3
lines changed

.changelog/9974.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
container: added output-only fields `membership_id` and `membership_location` under `fleet` in `google_container_cluster` resource
3+
```

google/services/container/resource_container_cluster.go

+24-3
Original file line numberDiff line numberDiff line change
@@ -1878,6 +1878,16 @@ func ResourceContainerCluster() *schema.Resource {
18781878
Computed: true,
18791879
Description: `Whether the cluster has been registered via the fleet API.`,
18801880
},
1881+
"membership_id": {
1882+
Type: schema.TypeString,
1883+
Computed: true,
1884+
Description: `Short name of the fleet membership, for example "member-1".`,
1885+
},
1886+
"membership_location": {
1887+
Type: schema.TypeString,
1888+
Computed: true,
1889+
Description: `Location of the fleet membership, for example "us-central1".`,
1890+
},
18811891
},
18821892
},
18831893
},
@@ -5523,11 +5533,22 @@ func flattenFleet(c *container.Fleet) []map[string]interface{} {
55235533
if c == nil {
55245534
return nil
55255535
}
5536+
5537+
// Parse membership_id and membership_location from full membership name.
5538+
var membership_id, membership_location string
5539+
membershipRE := regexp.MustCompile(`^(//[a-zA-Z0-9\.\-]+)?/?projects/([^/]+)/locations/([a-zA-Z0-9\-]+)/memberships/([^/]+)$`)
5540+
if match := membershipRE.FindStringSubmatch(c.Membership); match != nil {
5541+
membership_id = match[4]
5542+
membership_location = match[3]
5543+
}
5544+
55265545
return []map[string]interface{}{
55275546
{
5528-
"project": c.Project,
5529-
"membership": c.Membership,
5530-
"pre_registered": c.PreRegistered,
5547+
"project": c.Project,
5548+
"membership": c.Membership,
5549+
"membership_id": membership_id,
5550+
"membership_location": membership_location,
5551+
"pre_registered": c.PreRegistered,
55315552
},
55325553
}
55335554
}

website/docs/r/container_cluster.html.markdown

+4
Original file line numberDiff line numberDiff line change
@@ -1348,6 +1348,10 @@ exported:
13481348

13491349
* `fleet.0.membership` - The resource name of the fleet Membership resource associated to this cluster with format `//gkehub.googleapis.com/projects/{{project}}/locations/{{location}}/memberships/{{name}}`. See the official doc for [fleet management](https://cloud.google.com/kubernetes-engine/docs/fleets-overview).
13501350

1351+
* `fleet.0.membership_id` - The short name of the fleet membership, extracted from `fleet.0.membership`. You can use this field to configure `membership_id` under [google_gkehub_feature_membership](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/gke_hub_feature_membership).
1352+
1353+
* `fleet.0.membership_location` - The location of the fleet membership, extracted from `fleet.0.membership`. You can use this field to configure `membership_location` under [google_gkehub_feature_membership](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/gke_hub_feature_membership).
1354+
13511355
## Timeouts
13521356

13531357
This resource provides the following

0 commit comments

Comments
 (0)