From ed37c34a928ccf16b194c83bb79349a38ee6a1d8 Mon Sep 17 00:00:00 2001 From: Ciprian Hacman Date: Sat, 7 Nov 2020 09:57:41 +0200 Subject: [PATCH] Use LaunchTemplate id instead of name for ASGs --- cloudmock/aws/mockautoscaling/group.go | 7 ++++--- cloudmock/aws/mockec2/api.go | 3 ++- cloudmock/aws/mockec2/launch_templates.go | 5 +++-- upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go | 16 ++++++++-------- 4 files changed, 17 insertions(+), 14 deletions(-) diff --git a/cloudmock/aws/mockautoscaling/group.go b/cloudmock/aws/mockautoscaling/group.go index 27af9b7843..946e99e96d 100644 --- a/cloudmock/aws/mockautoscaling/group.go +++ b/cloudmock/aws/mockautoscaling/group.go @@ -18,7 +18,6 @@ package mockautoscaling import ( "fmt" - "hash/crc64" "time" "github.com/aws/aws-sdk-go/aws" @@ -78,8 +77,10 @@ func (m *MockAutoscaling) CreateAutoScalingGroup(input *autoscaling.CreateAutoSc } if input.LaunchTemplate != nil { - launchTemplateCrc := crc64.Checksum([]byte(aws.StringValue(input.LaunchTemplate.LaunchTemplateName)), crc64.MakeTable(crc64.ECMA)) - g.LaunchTemplate.LaunchTemplateId = aws.String(fmt.Sprintf("lt-%x", launchTemplateCrc)) + g.LaunchTemplate.LaunchTemplateName = input.AutoScalingGroupName + if g.LaunchTemplate.LaunchTemplateId == nil { + return nil, fmt.Errorf("AutoScalingGroup has LaunchTemplate without ID") + } } for _, tag := range input.Tags { diff --git a/cloudmock/aws/mockec2/api.go b/cloudmock/aws/mockec2/api.go index d7519e7881..2e14eaa1dc 100644 --- a/cloudmock/aws/mockec2/api.go +++ b/cloudmock/aws/mockec2/api.go @@ -55,7 +55,8 @@ type MockEC2 struct { InternetGateways map[string]*ec2.InternetGateway - LaunchTemplates map[string]*launchTemplateInfo + launchTemplateNumber int + LaunchTemplates map[string]*launchTemplateInfo NatGateways map[string]*ec2.NatGateway diff --git a/cloudmock/aws/mockec2/launch_templates.go b/cloudmock/aws/mockec2/launch_templates.go index 15e66e7af2..75719372a7 100644 --- a/cloudmock/aws/mockec2/launch_templates.go +++ b/cloudmock/aws/mockec2/launch_templates.go @@ -87,8 +87,9 @@ func (m *MockEC2) CreateLaunchTemplate(request *ec2.CreateLaunchTemplateInput) ( klog.V(2).Infof("Mock CreateLaunchTemplate: %v", request) - crc := crc64.Checksum([]byte(aws.StringValue(request.LaunchTemplateName)), crc64.MakeTable(crc64.ECMA)) - id := fmt.Sprintf("lt-%x", crc) + m.launchTemplateNumber++ + n := m.launchTemplateNumber + id := fmt.Sprintf("lt-%d", n) if m.LaunchTemplates == nil { m.LaunchTemplates = make(map[string]*launchTemplateInfo) diff --git a/upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go b/upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go index 91ca8f074b..360b9dcb8d 100644 --- a/upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go +++ b/upup/pkg/fi/cloudup/awstasks/autoscalinggroup.go @@ -366,8 +366,8 @@ func (v *AutoscalingGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Autos }, LaunchTemplate: &autoscaling.LaunchTemplate{ LaunchTemplateSpecification: &autoscaling.LaunchTemplateSpecification{ - LaunchTemplateName: e.LaunchTemplate.Name, - Version: aws.String("$Latest"), + LaunchTemplateId: e.LaunchTemplate.ID, + Version: aws.String("$Latest"), }, }, } @@ -379,8 +379,8 @@ func (v *AutoscalingGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Autos } } else if e.LaunchTemplate != nil { request.LaunchTemplate = &autoscaling.LaunchTemplateSpecification{ - LaunchTemplateName: e.LaunchTemplate.Name, - Version: aws.String("$Latest"), + LaunchTemplateId: e.LaunchTemplate.ID, + Version: aws.String("$Latest"), } } else { return fmt.Errorf("could not find one of launch template, mixed instances policy, or launch configuration") @@ -446,8 +446,8 @@ func (v *AutoscalingGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Autos if changes.LaunchTemplate != nil { spec := &autoscaling.LaunchTemplateSpecification{ - LaunchTemplateName: changes.LaunchTemplate.Name, - Version: aws.String("$Latest"), + LaunchTemplateId: changes.LaunchTemplate.ID, + Version: aws.String("$Latest"), } if e.UseMixedInstancesPolicy() { setup(request).LaunchTemplate = &autoscaling.LaunchTemplate{LaunchTemplateSpecification: spec} @@ -481,8 +481,8 @@ func (v *AutoscalingGroup) RenderAWS(t *awsup.AWSAPITarget, a, e, changes *Autos if setup(request).LaunchTemplate == nil { setup(request).LaunchTemplate = &autoscaling.LaunchTemplate{ LaunchTemplateSpecification: &autoscaling.LaunchTemplateSpecification{ - LaunchTemplateName: changes.LaunchTemplate.Name, - Version: aws.String("$Latest"), + LaunchTemplateId: changes.LaunchTemplate.ID, + Version: aws.String("$Latest"), }, } }