From a4e609c4501b2d9bd1c77623ad6bb11b54bb7ec9 Mon Sep 17 00:00:00 2001 From: Ole Markus With Date: Tue, 7 Dec 2021 23:18:44 +0100 Subject: [PATCH] Set the default LT version to the new LT version --- cloudmock/aws/mockec2/launch_templates.go | 17 +++++++++++++++-- .../awstasks/launchtemplate_target_api.go | 14 +++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/cloudmock/aws/mockec2/launch_templates.go b/cloudmock/aws/mockec2/launch_templates.go index eee4ebcae5..4aebef9fdb 100644 --- a/cloudmock/aws/mockec2/launch_templates.go +++ b/cloudmock/aws/mockec2/launch_templates.go @@ -155,17 +155,26 @@ func (m *MockEC2) CreateLaunchTemplateVersion(request *ec2.CreateLaunchTemplateV name := request.LaunchTemplateName found := false - for _, ltInfo := range m.LaunchTemplates { + var ltVersion int + var ltID string + for id, ltInfo := range m.LaunchTemplates { if aws.StringValue(ltInfo.name) == aws.StringValue(name) { found = true ltInfo.data = responseLaunchTemplateData(request.LaunchTemplateData) ltInfo.version++ + ltVersion = ltInfo.version + ltID = id } } if !found { return nil, nil // TODO: error } - return &ec2.CreateLaunchTemplateVersionOutput{}, nil + return &ec2.CreateLaunchTemplateVersionOutput{ + LaunchTemplateVersion: &ec2.LaunchTemplateVersion{ + VersionNumber: aws.Int64(int64(ltVersion)), + LaunchTemplateId: <ID, + }, + }, nil } // DeleteLaunchTemplate mocks the deletion of a launch template @@ -189,6 +198,10 @@ func (m *MockEC2) DeleteLaunchTemplate(request *ec2.DeleteLaunchTemplateInput) ( return o, nil } +func (m *MockEC2) ModifyLaunchTemplate(*ec2.ModifyLaunchTemplateInput) (*ec2.ModifyLaunchTemplateOutput, error) { + return &ec2.ModifyLaunchTemplateOutput{}, nil +} + func responseLaunchTemplateData(req *ec2.RequestLaunchTemplateData) *ec2.ResponseLaunchTemplateData { resp := &ec2.ResponseLaunchTemplateData{ DisableApiTermination: req.DisableApiTermination, diff --git a/upup/pkg/fi/cloudup/awstasks/launchtemplate_target_api.go b/upup/pkg/fi/cloudup/awstasks/launchtemplate_target_api.go index 0443af790d..5c4731eb5b 100644 --- a/upup/pkg/fi/cloudup/awstasks/launchtemplate_target_api.go +++ b/upup/pkg/fi/cloudup/awstasks/launchtemplate_target_api.go @@ -20,10 +20,12 @@ import ( "encoding/base64" "fmt" "sort" + "strconv" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/service/ec2" "k8s.io/klog/v2" + "k8s.io/kops/upup/pkg/fi" "k8s.io/kops/upup/pkg/fi/cloudup/awsup" ) @@ -164,8 +166,17 @@ func (t *LaunchTemplate) RenderAWS(c *awsup.AWSAPITarget, a, e, changes *LaunchT LaunchTemplateName: t.Name, LaunchTemplateData: data, } - if _, err = c.Cloud.EC2().CreateLaunchTemplateVersion(input); err != nil { + if version, err := c.Cloud.EC2().CreateLaunchTemplateVersion(input); err != nil { return fmt.Errorf("error creating LaunchTemplateVersion: %v", err) + } else { + newDefault := strconv.FormatInt(*version.LaunchTemplateVersion.VersionNumber, 10) + input := &ec2.ModifyLaunchTemplateInput{ + DefaultVersion: &newDefault, + LaunchTemplateId: version.LaunchTemplateVersion.LaunchTemplateId, + } + if _, err := c.Cloud.EC2().ModifyLaunchTemplate(input); err != nil { + return fmt.Errorf("error updating launch template version: %w", err) + } } if changes.Tags != nil { err = c.UpdateTags(fi.StringValue(a.ID), e.Tags) @@ -174,6 +185,7 @@ func (t *LaunchTemplate) RenderAWS(c *awsup.AWSAPITarget, a, e, changes *LaunchT } } e.ID = a.ID + } return nil