/
node_groups.go
26 lines (23 loc) 路 1.26 KB
/
node_groups.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
package cluster
import eksav1alpha1 "github.com/aws/eks-anywhere/pkg/api/v1alpha1"
func BuildMapForWorkerNodeGroupsByName(workerNodeGroups []eksav1alpha1.WorkerNodeGroupConfiguration) map[string]eksav1alpha1.WorkerNodeGroupConfiguration {
workerNodeGroupConfigs := make(map[string]eksav1alpha1.WorkerNodeGroupConfiguration, len(workerNodeGroups))
for _, config := range workerNodeGroups {
workerNodeGroupConfigs[config.Name] = config
}
return workerNodeGroupConfigs
}
func NodeGroupsToDelete(currentSpec, newSpec *Spec) []eksav1alpha1.WorkerNodeGroupConfiguration {
workerConfigs := BuildMapForWorkerNodeGroupsByName(newSpec.Cluster.Spec.WorkerNodeGroupConfigurations)
nodeGroupsToDelete := make([]eksav1alpha1.WorkerNodeGroupConfiguration, 0, len(currentSpec.Cluster.Spec.WorkerNodeGroupConfigurations))
for _, prevWorkerNodeGroupConfig := range currentSpec.Cluster.Spec.WorkerNodeGroupConfigurations {
// Current spec doesn't have the default name since we never set the defaults at the api server level
if prevWorkerNodeGroupConfig.Name == "" {
prevWorkerNodeGroupConfig.Name = "md-0"
}
if _, ok := workerConfigs[prevWorkerNodeGroupConfig.Name]; !ok {
nodeGroupsToDelete = append(nodeGroupsToDelete, prevWorkerNodeGroupConfig)
}
}
return nodeGroupsToDelete
}