Skip to content

Commit

Permalink
Refactor Update ng into private funcs
Browse files Browse the repository at this point in the history
  • Loading branch information
nikimanoledaki committed Jul 1, 2021
1 parent 8fa557a commit 67dd7da
Showing 1 changed file with 47 additions and 31 deletions.
78 changes: 47 additions & 31 deletions pkg/actions/nodegroup/update.go
Expand Up @@ -7,51 +7,67 @@ import (
"github.com/aws/aws-sdk-go/service/eks"
"github.com/kris-nova/logger"

api "github.com/weaveworks/eksctl/pkg/apis/eksctl.io/v1alpha5"
"github.com/weaveworks/eksctl/pkg/managed"
)

func (m *Manager) Update() error {
for _, ng := range m.cfg.ManagedNodeGroups {

logger.Info("checking that nodegroup %s is a managed nodegroup", ng.Name)

describeNodegroupOutput, err := m.ctl.Provider.EKS().DescribeNodegroup(&eks.DescribeNodegroupInput{
ClusterName: &m.cfg.Metadata.Name,
NodegroupName: &ng.Name,
})

if err != nil {
if managed.IsNotFound(err) {
return fmt.Errorf("could not find managed nodegroup with name %q", ng.Name)
}
if err := m.updateNodegroup(ng); err != nil {
return err
}
}
return nil
}

if ng.UpdateConfig == nil {
return fmt.Errorf("the submitted config didn't contain changes for nodegroup %s", ng.Name)
}
func (m *Manager) updateNodegroup(ng *api.ManagedNodeGroup) error {
logger.Info("checking that nodegroup %s is a managed nodegroup", ng.Name)

logger.Info("updating nodegroup %s's UpdateConfig", ng.Name)
updateConfig := &eks.NodegroupUpdateConfig{}
_, err := m.ctl.Provider.EKS().DescribeNodegroup(&eks.DescribeNodegroupInput{
ClusterName: &m.cfg.Metadata.Name,
NodegroupName: &ng.Name,
})

if ng.UpdateConfig.MaxUnavailable != nil {
updateConfig.MaxUnavailable = aws.Int64(int64(*ng.UpdateConfig.MaxUnavailable))
if err != nil {
if managed.IsNotFound(err) {
return fmt.Errorf("could not find managed nodegroup with name %q", ng.Name)
}
return err
}

if ng.UpdateConfig.MaxUnavailablePercentage != nil {
updateConfig.MaxUnavailablePercentage = aws.Int64(int64(*ng.UpdateConfig.MaxUnavailablePercentage))
}
if ng.UpdateConfig == nil {
return fmt.Errorf("the submitted config does not contain any changes for nodegroup %s", ng.Name)
}

_, err = m.ctl.Provider.EKS().UpdateNodegroupConfig(&eks.UpdateNodegroupConfigInput{
UpdateConfig: updateConfig,
ClusterName: &m.cfg.Metadata.Name,
NodegroupName: &ng.Name,
})
if err != nil {
return fmt.Errorf("failed to update nodegroup %s: %w", ng.Name, err)
}
updateConfig, err := updateUpdateConfig(ng)
if err != nil {
return err
}

logger.Info("nodegroup %s successfully updated", ng.Name)
_, err = m.ctl.Provider.EKS().UpdateNodegroupConfig(&eks.UpdateNodegroupConfigInput{
UpdateConfig: updateConfig,
ClusterName: &m.cfg.Metadata.Name,
NodegroupName: &ng.Name,
})
if err != nil {
return fmt.Errorf("failed to update nodegroup %s: %w", ng.Name, err)
}

logger.Info("nodegroup %s successfully updated", ng.Name)
return nil
}

func updateUpdateConfig(ng *api.ManagedNodeGroup) (*eks.NodegroupUpdateConfig, error) {
logger.Info("updating nodegroup %s's UpdateConfig", ng.Name)
updateConfig := &eks.NodegroupUpdateConfig{}

if ng.UpdateConfig.MaxUnavailable != nil {
updateConfig.MaxUnavailable = aws.Int64(int64(*ng.UpdateConfig.MaxUnavailable))
}

if ng.UpdateConfig.MaxUnavailablePercentage != nil {
updateConfig.MaxUnavailablePercentage = aws.Int64(int64(*ng.UpdateConfig.MaxUnavailablePercentage))
}

return updateConfig, nil
}

0 comments on commit 67dd7da

Please sign in to comment.