diff --git a/lib/shared/addon/components/cluster-driver/driver-gke/component.js b/lib/shared/addon/components/cluster-driver/driver-gke/component.js index 26f016abd..fb87756b0 100644 --- a/lib/shared/addon/components/cluster-driver/driver-gke/component.js +++ b/lib/shared/addon/components/cluster-driver/driver-gke/component.js @@ -511,6 +511,78 @@ export default Component.extend(ClusterDriver, { } }), + showPolicyConfigWarning: computed('config.clusterAddons.networkPolicyConfig', 'editing', 'model.originalCluster.gkeStatus.upstreamSpec', 'upstreamSpec.clusterAddons.networkPolicyConfig', function() { + const upstreamSpec = get(this, 'model.originalCluster.gkeStatus.upstreamSpec'); + + if (this.editing && !isEmpty(upstreamSpec)) { + const ogNetworkPolicyConfig = get(this, 'upstreamSpec.clusterAddons.networkPolicyConfig') ?? false; + const currentNetworkPolicyConfig = get(this, 'config.clusterAddons.networkPolicyConfig') ?? false; + + // if user is turning off show warning + if (ogNetworkPolicyConfig && !currentNetworkPolicyConfig) { + return true; + } + } + + return false; + }), + + showPolicyEnabledWarning: computed('config.networkPolicyEnabled', 'editing', 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled', function() { + const upstreamSpec = get(this, 'model.originalCluster.gkeStatus.upstreamSpec'); + + if (this.editing && !isEmpty(upstreamSpec)) { + const ogNetworkPolicyEnabled = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled') ?? false; + const currentNetworkPolicyEnabled = get(this, 'config.networkPolicyEnabled') ?? false; + + // if user is turning off show warning + if (ogNetworkPolicyEnabled && !currentNetworkPolicyEnabled) { + return true; + } + } + + return false; + }), + + shouldDisableNetworkPolicyEnabled: computed('config.clusterAddons.networkPolicyConfig', 'config.networkPolicyEnabled', 'editing', 'isNewOrEditable', 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig', 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled', function() { + const currentNetworkPolicyConfig = get(this, 'config.clusterAddons.networkPolicyConfig') ?? false; + const ogNetworkPolicyConfig = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig') ?? false; + const ogNetworkPolicyEnabled = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled') ?? false; + + if (this.isNewOrEditable) { + return false; + } else { + if (this.editing) { + if (!ogNetworkPolicyConfig && !ogNetworkPolicyEnabled) { + return true; + } else if (!currentNetworkPolicyConfig) { + return true; + } + } + } + + return false; + }), + + shouldDisableNetworkPolicyConfig: computed('config.networkPolicyEnabled', 'editing', 'isNewOrEditable', 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig', 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled', function() { + const currentNetworkPolicyEnabled = get(this, 'config.networkPolicyEnabled') ?? false; + const ogNetworkPolicyEnabled = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.networkPolicyEnabled') ?? false; + const ogNetworkPolicyConfig = get(this, 'model.originalCluster.gkeStatus.upstreamSpec.clusterAddons.networkPolicyConfig') ?? false; + + if (this.isNewOrEditable) { + return false; + } else { + if (this.editing) { + if (currentNetworkPolicyEnabled && !ogNetworkPolicyEnabled ) { + return true; + } else if (ogNetworkPolicyEnabled && ogNetworkPolicyConfig) { + return true; + } + } + } + + return false; + }), + hasProvisioned: computed('model.cluster', function() { const cluster = get(this, 'model.cluster'); const { state = '', isError = false } = cluster; diff --git a/lib/shared/addon/components/cluster-driver/driver-gke/template.hbs b/lib/shared/addon/components/cluster-driver/driver-gke/template.hbs index a460ccb52..617d27264 100644 --- a/lib/shared/addon/components/cluster-driver/driver-gke/template.hbs +++ b/lib/shared/addon/components/cluster-driver/driver-gke/template.hbs @@ -275,16 +275,51 @@ {{t "clusterNew.googlegke.useIpAliases.label"}} +