Skip to content

Commit

Permalink
Add support for the management field in ConfigManagement Fleet-level …
Browse files Browse the repository at this point in the history
…default config (#11291) (#18963)

[upstream:fcb51889011bfd782ee5127815ef6635c35eef80]

Signed-off-by: Modular Magician <[email protected]>
  • Loading branch information
modular-magician authored Aug 1, 2024
1 parent 7a12ffc commit 60a1a4b
Show file tree
Hide file tree
Showing 4 changed files with 114 additions and 0 deletions.
3 changes: 3 additions & 0 deletions .changelog/11291.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
gkehub: added `management` field to ConfigManagement `fleet_default_member_config`
```
23 changes: 23 additions & 0 deletions google/services/gkehub2/resource_gke_hub_feature.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,12 @@ func ResourceGKEHub2Feature() *schema.Resource {
},
},
},
"management": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: verify.ValidateEnum([]string{"MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL", ""}),
Description: `Set this field to MANAGEMENT_AUTOMATIC to enable Config Sync auto-upgrades, and set this field to MANAGEMENT_MANUAL or MANAGEMENT_UNSPECIFIED to disable Config Sync auto-upgrades. Possible values: ["MANAGEMENT_UNSPECIFIED", "MANAGEMENT_AUTOMATIC", "MANAGEMENT_MANUAL"]`,
},
"version": {
Type: schema.TypeString,
Optional: true,
Expand Down Expand Up @@ -1340,6 +1346,8 @@ func flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagement(v interface{}
transformed := make(map[string]interface{})
transformed["version"] =
flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementVersion(original["version"], d, config)
transformed["management"] =
flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementManagement(original["management"], d, config)
transformed["config_sync"] =
flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementConfigSync(original["configSync"], d, config)
return []interface{}{transformed}
Expand All @@ -1348,6 +1356,10 @@ func flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementVersion(v inte
return v
}

func flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementManagement(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
return v
}

func flattenGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementConfigSync(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return nil
Expand Down Expand Up @@ -2234,6 +2246,13 @@ func expandGKEHub2FeatureFleetDefaultMemberConfigConfigmanagement(v interface{},
transformed["version"] = transformedVersion
}

transformedManagement, err := expandGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementManagement(original["management"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedManagement); val.IsValid() && !tpgresource.IsEmptyValue(val) {
transformed["management"] = transformedManagement
}

transformedConfigSync, err := expandGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementConfigSync(original["config_sync"], d, config)
if err != nil {
return nil, err
Expand All @@ -2248,6 +2267,10 @@ func expandGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementVersion(v inter
return v, nil
}

func expandGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementManagement(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}

func expandGKEHub2FeatureFleetDefaultMemberConfigConfigmanagementConfigSync(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
l := v.([]interface{})
if len(l) == 0 || l[0] == nil {
Expand Down
83 changes: 83 additions & 0 deletions google/services/gkehub2/resource_gke_hub_feature_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -434,10 +434,53 @@ func TestAccGKEHubFeature_FleetDefaultMemberConfigConfigManagement(t *testing.T)
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagementEnableAutomaticManagementUpdate(context),
},
{
ResourceName: "google_gke_hub_feature.feature",
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagementRemovalUpdate(context),
},
{
ResourceName: "google_gke_hub_feature.feature",
ImportState: true,
ImportStateVerify: true,
},
{
Config: testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagementAutomaticManagement(context),
},
{
ResourceName: "google_gke_hub_feature.feature",
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagementAutomaticManagement(context map[string]interface{}) string {
return gkeHubFeatureProjectSetupForGA(context) + acctest.Nprintf(`
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
fleet_default_member_config {
configmanagement {
management = "MANAGEMENT_AUTOMATIC"
config_sync {
enabled = true
}
}
}
depends_on = [google_project_service.anthos, google_project_service.gkehub, google_project_service.acm]
project = google_project.project.project_id
}
`, context)
}

func testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagement(context map[string]interface{}) string {
return gkeHubFeatureProjectSetupForGA(context) + acctest.Nprintf(`
resource "google_gke_hub_feature" "feature" {
Expand Down Expand Up @@ -473,6 +516,7 @@ resource "google_gke_hub_feature" "feature" {
fleet_default_member_config {
configmanagement {
version = "1.16.1"
management = "MANAGEMENT_MANUAL"
config_sync {
enabled = true
prevent_drift = true
Expand All @@ -493,6 +537,45 @@ resource "google_gke_hub_feature" "feature" {
`, context)
}

func testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagementEnableAutomaticManagementUpdate(context map[string]interface{}) string {
return gkeHubFeatureProjectSetupForGA(context) + acctest.Nprintf(`
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
fleet_default_member_config {
configmanagement {
version = "1.16.1"
management = "MANAGEMENT_AUTOMATIC"
config_sync {
prevent_drift = true
source_format = "unstructured"
oci {
sync_repo = "us-central1-docker.pkg.dev/corp-gke-build-artifacts/acm/configs:latest"
policy_dir = "/acm/nonprod-root/"
secret_type = "gcpserviceaccount"
sync_wait_secs = "15"
gcp_service_account_email = "[email protected]"
}
}
}
}
depends_on = [google_project_service.anthos, google_project_service.gkehub, google_project_service.acm]
project = google_project.project.project_id
}
`, context)
}

func testAccGKEHubFeature_FleetDefaultMemberConfigConfigManagementRemovalUpdate(context map[string]interface{}) string {
return gkeHubFeatureProjectSetupForGA(context) + acctest.Nprintf(`
resource "google_gke_hub_feature" "feature" {
name = "configmanagement"
location = "global"
depends_on = [google_project_service.anthos, google_project_service.gkehub, google_project_service.acm]
project = google_project.project.project_id
}
`, context)
}

func TestAccGKEHubFeature_Clusterupgrade(t *testing.T) {
// VCR fails to handle batched project services
acctest.SkipIfVcr(t)
Expand Down
5 changes: 5 additions & 0 deletions website/docs/r/gke_hub_feature.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -480,6 +480,11 @@ The following arguments are supported:
(Optional)
Version of ACM installed

* `management` -
(Optional)
Set this field to MANAGEMENT_AUTOMATIC to enable Config Sync auto-upgrades, and set this field to MANAGEMENT_MANUAL or MANAGEMENT_UNSPECIFIED to disable Config Sync auto-upgrades.
Possible values are: `MANAGEMENT_UNSPECIFIED`, `MANAGEMENT_AUTOMATIC`, `MANAGEMENT_MANUAL`.

* `config_sync` -
(Optional)
ConfigSync configuration for the cluster
Expand Down

0 comments on commit 60a1a4b

Please sign in to comment.