From 3778d37d18b6b61df12937a528197213574e08a9 Mon Sep 17 00:00:00 2001 From: Ludovico Magnocavallo Date: Sat, 30 Jul 2022 13:53:05 +0000 Subject: [PATCH] Fix gke hub module features condition (#761) * fix features condition * remove test output * fix example tests * fix module tests --- modules/gke-hub/README.md | 5 +-- modules/gke-hub/main.tf | 5 ++- tests/modules/gke_hub/test_plan.py | 52 +++++++++++++++++------------- 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/modules/gke-hub/README.md b/modules/gke-hub/README.md index 035be83b..f4eef38c 100644 --- a/modules/gke-hub/README.md +++ b/modules/gke-hub/README.md @@ -3,6 +3,7 @@ This module allows simplified creation and management of a GKE Hub object and its features for a given set of clusters. The given list of clusters will be registered inside the Hub and all the configured features will be activated. To use this module you must ensure the following APIs are enabled in the target project: + ``` "gkehub.googleapis.com" "gkeconnect.googleapis.com" @@ -116,7 +117,7 @@ module "hub" { } } -# tftest modules=4 resources=16 +# tftest modules=4 resources=15 ``` ## Multi-cluster mesh on GKE @@ -322,7 +323,7 @@ module "hub" { "cluster-2" ] } -# tftest modules=8 resources=29 +# tftest modules=8 resources=28 ``` diff --git a/modules/gke-hub/main.tf b/modules/gke-hub/main.tf index 66688613..f433d322 100644 --- a/modules/gke-hub/main.tf +++ b/modules/gke-hub/main.tf @@ -29,6 +29,9 @@ locals { var.features.configmanagement == true ) } + hub_features = { + for k, v in var.features : k => v if v != null && v != false && v != "" + } } resource "google_gke_hub_membership" "default" { @@ -53,7 +56,7 @@ resource "google_gke_hub_membership" "default" { resource "google_gke_hub_feature" "default" { provider = google-beta - for_each = { for k, v in var.features : k => v if coalesce(v, false) != false } + for_each = local.hub_features project = var.project_id name = each.key location = "global" diff --git a/tests/modules/gke_hub/test_plan.py b/tests/modules/gke_hub/test_plan.py index 4fdce89a..35521813 100644 --- a/tests/modules/gke_hub/test_plan.py +++ b/tests/modules/gke_hub/test_plan.py @@ -17,21 +17,21 @@ import pytest @pytest.fixture def resources(plan_runner): - _, resources = plan_runner() - return resources + _, resources = plan_runner() + return resources def test_resource_count(resources): - "Test number of resources created." - assert len(resources) == 6 - assert sorted(r['address'] for r in resources) == [ - 'module.hub.google_gke_hub_feature.default["configmanagement"]', - 'module.hub.google_gke_hub_feature.default["multiclusteringress"]', - 'module.hub.google_gke_hub_feature_membership.default["cluster-1"]', - 'module.hub.google_gke_hub_feature_membership.default["cluster-2"]', - 'module.hub.google_gke_hub_membership.default["cluster-1"]', - 'module.hub.google_gke_hub_membership.default["cluster-2"]' - ] + "Test number of resources created." + assert len(resources) == 5 + assert sorted(r['address'] for r in resources) == [ + 'module.hub.google_gke_hub_feature.default["configmanagement"]', + 'module.hub.google_gke_hub_feature_membership.default["cluster-1"]', + 'module.hub.google_gke_hub_feature_membership.default["cluster-2"]', + 'module.hub.google_gke_hub_membership.default["cluster-1"]', + 'module.hub.google_gke_hub_membership.default["cluster-2"]' + ] + def test_configmanagement_setup(resources): "Test configuration of configmanagement." @@ -40,15 +40,23 @@ def test_configmanagement_setup(resources): expected_configmanagement = [{ 'binauthz': [], 'config_sync': [{ - 'git': [{ - 'gcp_service_account_email': None, - 'https_proxy': None, - 'policy_dir': 'configsync', - 'secret_type': 'ssh', - 'sync_branch': 'main', - 'sync_repo': 'https://github.com/danielmarzini/configsync-platform-example', - 'sync_rev': None, - 'sync_wait_secs': None + 'git': [{ + 'gcp_service_account_email': + None, + 'https_proxy': + None, + 'policy_dir': + 'configsync', + 'secret_type': + 'ssh', + 'sync_branch': + 'main', + 'sync_repo': + 'https://github.com/danielmarzini/configsync-platform-example', + 'sync_rev': + None, + 'sync_wait_secs': + None }], 'prevent_drift': False, 'source_format': 'hierarchy' @@ -67,4 +75,4 @@ def test_configmanagement_setup(resources): fm_key = f'module.hub.google_gke_hub_feature_membership.default["{cluster}"]' fm = resources[fm_key] print(fm['configmanagement']) - assert fm['configmanagement'] == expected_configmanagement + assert fm['configmanagement'] == expected_configmanagement