Skip to content

Commit 476b2aa

Browse files
committed
Update launch template if capacity-block reservation id changes
1 parent b925771 commit 476b2aa

File tree

2 files changed

+42
-0
lines changed

2 files changed

+42
-0
lines changed

pkg/cloud/services/ec2/launchtemplate.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -712,6 +712,12 @@ func (s *Service) SDKToLaunchTemplate(d *ec2.LaunchTemplateVersion) (*expinfrav1
712712
VersionNumber: d.VersionNumber,
713713
}
714714

715+
if v.CapacityReservationSpecification != nil &&
716+
v.CapacityReservationSpecification.CapacityReservationTarget != nil &&
717+
v.CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationId != nil {
718+
i.CapacityReservationID = v.CapacityReservationSpecification.CapacityReservationTarget.CapacityReservationId
719+
}
720+
715721
if v.MetadataOptions != nil {
716722
i.InstanceMetadataOptions = &infrav1.InstanceMetadataOptions{
717723
HTTPPutResponseHopLimit: aws.Int64Value(v.MetadataOptions.HttpPutResponseHopLimit),
@@ -793,13 +799,19 @@ func (s *Service) LaunchTemplateNeedsUpdate(scope scope.LaunchTemplateScope, inc
793799
if incoming.InstanceType != existing.InstanceType {
794800
return true, nil
795801
}
802+
796803
if !cmp.Equal(incoming.InstanceMetadataOptions, existing.InstanceMetadataOptions) {
797804
return true, nil
798805
}
806+
799807
if !cmp.Equal(incoming.SpotMarketOptions, existing.SpotMarketOptions) {
800808
return true, nil
801809
}
802810

811+
if !cmp.Equal(incoming.CapacityReservationID, existing.CapacityReservationID) {
812+
return true, nil
813+
}
814+
803815
incomingIDs, err := s.GetAdditionalSecurityGroupsIDs(incoming.AdditionalSecurityGroups)
804816
if err != nil {
805817
return false, err

pkg/cloud/services/ec2/launchtemplate_test.go

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,36 @@ func TestServiceLaunchTemplateNeedsUpdate(t *testing.T) {
769769
want: true,
770770
wantErr: false,
771771
},
772+
{
773+
name: "Should return true if capacity reservation IDs are different",
774+
incoming: &expinfrav1.AWSLaunchTemplate{
775+
CapacityReservationID: aws.String("new-reservation"),
776+
},
777+
existing: &expinfrav1.AWSLaunchTemplate{
778+
AdditionalSecurityGroups: []infrav1.AWSResourceReference{
779+
{ID: aws.String("sg-111")},
780+
{ID: aws.String("sg-222")},
781+
},
782+
CapacityReservationID: aws.String("old-reservation"),
783+
},
784+
want: true,
785+
wantErr: false,
786+
},
787+
{
788+
name: "Should return true if one has capacity reservation ID and other doesn't",
789+
incoming: &expinfrav1.AWSLaunchTemplate{
790+
CapacityReservationID: aws.String("new-reservation"),
791+
},
792+
existing: &expinfrav1.AWSLaunchTemplate{
793+
AdditionalSecurityGroups: []infrav1.AWSResourceReference{
794+
{ID: aws.String("sg-111")},
795+
{ID: aws.String("sg-222")},
796+
},
797+
CapacityReservationID: nil,
798+
},
799+
want: true,
800+
wantErr: false,
801+
},
772802
}
773803
for _, tt := range tests {
774804
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)