@@ -393,25 +393,41 @@ func removeUnspecifiedNodePoolsOverrides(nodePools []interface{}, kubernetesClus
393393 tfNodePoolOverrides := tfNodePoolSpec [OverridesKey ]
394394
395395 if tfNodePoolOverrides != nil && tfNodePoolOverrides .(string ) != "" {
396- tfOverridesVariablesJSON := make (map [string ]interface {})
397- _ = json .Unmarshal ([]byte (tfNodePoolOverrides .(string )), & tfOverridesVariablesJSON )
396+ overridesToKeep := excludeUnspecifiedOverrides (tfNodePoolOverrides .(string ), kubernetesClusterModel .Spec .Topology .NodePools [i ].Spec .Overrides )
397+ kubernetesClusterModel .Spec .Topology .NodePools [i ].Spec .Overrides = overridesToKeep
398+ }
399+ }
400+ }
398401
399- overridesToKeep := make ([]* tkccommonmodels.VmwareTanzuManageV1alpha1ManagementClusterProvisionerTanzukubernetesClusterCommonClusterClusterVariable , 0 )
402+ // removeUnspecifiedControlPlaneOverrides removed node pools overrides returning in the API which do not exist in the Cluster Class schema.
403+ func removeUnspecifiedControlPlaneOverrides (controlPlane interface {}, kubernetesClusterModel * tanzukubernetesclustermodels.VmwareTanzuManageV1alpha1ManagementClusterProvisionerTanzukubernetesClusterTanzuKubernetesCluster ) {
404+ tfControlPlaneOverrides := controlPlane .(map [string ]interface {})[OverridesKey ]
400405
401- for _ , modelOverride := range kubernetesClusterModel .Spec .Topology .NodePools [i ].Spec .Overrides {
402- varKey := modelOverride .Name
406+ if tfControlPlaneOverrides != nil && tfControlPlaneOverrides .(string ) != "" {
407+ overridesToKeep := excludeUnspecifiedOverrides (tfControlPlaneOverrides .(string ), kubernetesClusterModel .Spec .Topology .ControlPlane .Overrides )
408+ kubernetesClusterModel .Spec .Topology .ControlPlane .Overrides = overridesToKeep
409+ }
410+ }
403411
404- if tfOverridesVariableValue , exist := tfOverridesVariablesJSON [varKey ]; exist {
405- // This is necessary because some inner values have defaults and are being returned even when not filled
406- modifiedModelVariableValue := modifyModelVariable (tfOverridesVariableValue , modelOverride .Value )
407- modelOverride .Value = modifiedModelVariableValue
408- overridesToKeep = append (overridesToKeep , modelOverride )
409- }
410- }
412+ // excludeUnspecifiedOverrides removed overrides returning in the API which do not exist in the Cluster Class schema.
413+ func excludeUnspecifiedOverrides (overridesResource string , overrides []* tkccommonmodels.VmwareTanzuManageV1alpha1ManagementClusterProvisionerTanzukubernetesClusterCommonClusterClusterVariable ) []* tkccommonmodels.VmwareTanzuManageV1alpha1ManagementClusterProvisionerTanzukubernetesClusterCommonClusterClusterVariable {
414+ tfOverridesVariablesJSON := make (map [string ]interface {})
415+ _ = json .Unmarshal ([]byte (overridesResource ), & tfOverridesVariablesJSON )
411416
412- kubernetesClusterModel .Spec .Topology .NodePools [i ].Spec .Overrides = overridesToKeep
417+ overridesToKeep := make ([]* tkccommonmodels.VmwareTanzuManageV1alpha1ManagementClusterProvisionerTanzukubernetesClusterCommonClusterClusterVariable , 0 )
418+
419+ for _ , modelOverride := range overrides {
420+ varKey := modelOverride .Name
421+
422+ if tfOverridesVariableValue , exist := tfOverridesVariablesJSON [varKey ]; exist {
423+ // This is necessary because some inner values have defaults and are being returned even when not filled
424+ modifiedModelVariableValue := modifyModelVariable (tfOverridesVariableValue , modelOverride .Value )
425+ modelOverride .Value = modifiedModelVariableValue
426+ overridesToKeep = append (overridesToKeep , modelOverride )
413427 }
414428 }
429+
430+ return overridesToKeep
415431}
416432
417433// modifyModelVariable helps when certain variables do no return from the API or in a case where some values are returning
0 commit comments