Skip to content

Commit c57e796

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

File tree

2 files changed

+34
-0
lines changed

2 files changed

+34
-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: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,28 @@ 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+
CapacityReservationID: aws.String("old-reservation"),
779+
},
780+
want: true,
781+
wantErr: false,
782+
},
783+
{
784+
name: "Should return true if one has capacity reservation ID and other doesn't",
785+
incoming: &expinfrav1.AWSLaunchTemplate{
786+
CapacityReservationID: aws.String("new-reservation"),
787+
},
788+
existing: &expinfrav1.AWSLaunchTemplate{
789+
CapacityReservationID: nil,
790+
},
791+
want: true,
792+
wantErr: false,
793+
},
772794
}
773795
for _, tt := range tests {
774796
t.Run(tt.name, func(t *testing.T) {

0 commit comments

Comments
 (0)