@@ -39,6 +39,7 @@ import (
39
39
"github.com/cortexlabs/cortex/pkg/lib/pointer"
40
40
"github.com/cortexlabs/cortex/pkg/lib/sets/strset"
41
41
"github.com/cortexlabs/cortex/pkg/lib/slices"
42
+ libstr "github.com/cortexlabs/cortex/pkg/lib/strings"
42
43
"github.com/cortexlabs/cortex/pkg/lib/structs"
43
44
"github.com/cortexlabs/yaml"
44
45
)
@@ -191,10 +192,11 @@ type ConfigureChanges struct {
191
192
NodeGroupsToRemove []string
192
193
NodeGroupsToScale []string
193
194
EKSNodeGroupsToRemove []string // EKS node group names of (NodeGroupsToRemove ∩ Cortex-converted EKS node groups) ∪ (Cortex-converted EKS node groups - the new cluster config's nodegroups)
195
+ FieldsToUpdate []string
194
196
}
195
197
196
198
func (c * ConfigureChanges ) HasChanges () bool {
197
- return len (c .NodeGroupsToAdd ) != 0 || len (c .NodeGroupsToRemove ) != 0 || len (c .NodeGroupsToScale ) != 0 || len (c .EKSNodeGroupsToRemove ) != 0
199
+ return len (c .NodeGroupsToAdd )+ len (c .NodeGroupsToRemove )+ len (c .NodeGroupsToScale )+ len (c .EKSNodeGroupsToRemove ) + len ( c . FieldsToUpdate ) != 0
198
200
}
199
201
200
202
// GetGhostEKSNodeGroups returns the set difference between EKSNodeGroupsToRemove and the EKS-converted NodeGroupsToRemove
@@ -1029,43 +1031,54 @@ func (cc *Config) validate(awsClient *aws.Client) error {
1029
1031
return nil
1030
1032
}
1031
1033
1032
- func (cc * Config ) validateConfigDiff (oldConfig Config ) error {
1033
- err := cc .validateTopLevelSectionDiff (oldConfig )
1034
- if err != nil {
1035
- return err
1036
- }
1037
-
1038
- return cc .validateSharedNodeGroupsDiff (oldConfig )
1039
- }
1040
-
1041
- func (cc * Config ) validateTopLevelSectionDiff (oldConfig Config ) error {
1034
+ func (cc * Config ) validateTopLevelSectionDiff (oldConfig Config ) ([]string , error ) {
1035
+ var fieldsToUpdate []string
1042
1036
// validate actionable changes
1043
1037
newClusterConfigCopy , err := cc .DeepCopy ()
1044
1038
if err != nil {
1045
- return err
1039
+ return nil , err
1046
1040
}
1047
1041
1048
1042
oldClusterConfigCopy , err := oldConfig .DeepCopy ()
1049
1043
if err != nil {
1050
- return err
1044
+ return nil , err
1045
+ }
1046
+
1047
+ if libstr .Obj (newClusterConfigCopy .SSLCertificateARN ) != libstr .Obj (oldClusterConfigCopy .SSLCertificateARN ) {
1048
+ fieldsToUpdate = append (fieldsToUpdate , SSLCertificateARNKey )
1051
1049
}
1052
1050
1053
- newClusterConfigCopy .NodeGroups = []* NodeGroup {}
1054
- oldClusterConfigCopy .NodeGroups = []* NodeGroup {}
1051
+ if libstr .Obj (newClusterConfigCopy .APILoadBalancerCIDRWhiteList ) != libstr .Obj (oldClusterConfigCopy .APILoadBalancerCIDRWhiteList ) {
1052
+ fieldsToUpdate = append (fieldsToUpdate , APILoadBalancerCIDRWhiteListKey )
1053
+ }
1054
+
1055
+ if libstr .Obj (newClusterConfigCopy .OperatorLoadBalancerCIDRWhiteList ) != libstr .Obj (oldClusterConfigCopy .OperatorLoadBalancerCIDRWhiteList ) {
1056
+ fieldsToUpdate = append (fieldsToUpdate , OperatorLoadBalancerCIDRWhiteListKey )
1057
+ }
1058
+
1059
+ clearUpdatableFields (& newClusterConfigCopy )
1060
+ clearUpdatableFields (& oldClusterConfigCopy )
1055
1061
1056
1062
h1 , err := newClusterConfigCopy .Hash ()
1057
1063
if err != nil {
1058
- return err
1064
+ return nil , err
1059
1065
}
1060
1066
h2 , err := oldClusterConfigCopy .Hash ()
1061
1067
if err != nil {
1062
- return err
1068
+ return nil , err
1063
1069
}
1064
1070
if h1 != h2 {
1065
- return ErrorConfigCannotBeChangedOnConfigure ()
1071
+ return nil , ErrorConfigCannotBeChangedOnConfigure ()
1066
1072
}
1067
1073
1068
- return nil
1074
+ return fieldsToUpdate , nil
1075
+ }
1076
+
1077
+ func clearUpdatableFields (clusterConfig * Config ) {
1078
+ clusterConfig .SSLCertificateARN = nil
1079
+ clusterConfig .APILoadBalancerCIDRWhiteList = nil
1080
+ clusterConfig .OperatorLoadBalancerCIDRWhiteList = nil
1081
+ clusterConfig .NodeGroups = []* NodeGroup {}
1069
1082
}
1070
1083
1071
1084
func (cc * Config ) validateSharedNodeGroupsDiff (oldConfig Config ) error {
@@ -1139,7 +1152,12 @@ func (cc *Config) ValidateOnConfigure(awsClient *aws.Client, oldConfig Config, e
1139
1152
return ConfigureChanges {}, err
1140
1153
}
1141
1154
1142
- err = cc .validateConfigDiff (oldConfig )
1155
+ fieldsToUpdate , err := cc .validateTopLevelSectionDiff (oldConfig )
1156
+ if err != nil {
1157
+ return ConfigureChanges {}, err
1158
+ }
1159
+
1160
+ err = cc .validateSharedNodeGroupsDiff (oldConfig )
1143
1161
if err != nil {
1144
1162
return ConfigureChanges {}, err
1145
1163
}
@@ -1170,6 +1188,7 @@ func (cc *Config) ValidateOnConfigure(awsClient *aws.Client, oldConfig Config, e
1170
1188
NodeGroupsToRemove : GetNodeGroupNames (ngsToBeRemoved ),
1171
1189
NodeGroupsToScale : GetNodeGroupNames (ngNamesToBeScaled ),
1172
1190
EKSNodeGroupsToRemove : getStaleEksNodeGroups (cc .ClusterName , eksNodeGroupStacks , cc .NodeGroups , ngsToBeRemoved ),
1191
+ FieldsToUpdate : fieldsToUpdate ,
1173
1192
}, nil
1174
1193
}
1175
1194
0 commit comments