Skip to content

Commit

Permalink
Added the capacity reservation id
Browse files Browse the repository at this point in the history
Removed the tests by verify-gen
  • Loading branch information
athiruma committed Jul 16, 2024
1 parent dc07755 commit 5e44fa5
Show file tree
Hide file tree
Showing 11 changed files with 40 additions and 36 deletions.
1 change: 1 addition & 0 deletions api/v1beta1/awscluster_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ func (src *AWSCluster) ConvertTo(dstRaw conversion.Hub) error {
dst.Status.Bastion.PlacementGroupPartition = restored.Status.Bastion.PlacementGroupPartition
dst.Status.Bastion.PrivateDNSName = restored.Status.Bastion.PrivateDNSName
dst.Status.Bastion.PublicIPOnLaunch = restored.Status.Bastion.PublicIPOnLaunch
dst.Status.Bastion.CapacityReservationID = restored.Status.Bastion.CapacityReservationID
}
dst.Spec.Partition = restored.Spec.Partition

Expand Down
2 changes: 2 additions & 0 deletions api/v1beta1/awsmachine_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ func (src *AWSMachine) ConvertTo(dstRaw conversion.Hub) error {
dst.Spec.PlacementGroupPartition = restored.Spec.PlacementGroupPartition
dst.Spec.PrivateDNSName = restored.Spec.PrivateDNSName
dst.Spec.SecurityGroupOverrides = restored.Spec.SecurityGroupOverrides
dst.Spec.CapacityReservationID = restored.Spec.CapacityReservationID
if restored.Spec.ElasticIPPool != nil {
if dst.Spec.ElasticIPPool == nil {
dst.Spec.ElasticIPPool = &infrav1.ElasticIPPool{}
Expand Down Expand Up @@ -102,6 +103,7 @@ func (r *AWSMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
dst.Spec.Template.Spec.PlacementGroupPartition = restored.Spec.Template.Spec.PlacementGroupPartition
dst.Spec.Template.Spec.PrivateDNSName = restored.Spec.Template.Spec.PrivateDNSName
dst.Spec.Template.Spec.SecurityGroupOverrides = restored.Spec.Template.Spec.SecurityGroupOverrides
dst.Spec.Template.Spec.CapacityReservationID = restored.Spec.Template.Spec.CapacityReservationID
if restored.Spec.Template.Spec.ElasticIPPool != nil {
if dst.Spec.Template.Spec.ElasticIPPool == nil {
dst.Spec.Template.Spec.ElasticIPPool = &infrav1.ElasticIPPool{}
Expand Down
5 changes: 2 additions & 3 deletions api/v1beta2/awsmachine_types.go
Original file line number Diff line number Diff line change
Expand Up @@ -194,10 +194,9 @@ type AWSMachineSpec struct {
// +optional
PrivateDNSName *PrivateDNSName `json:"privateDnsName,omitempty"`

// CapacityReservationID specifies the instance that should be launched in the
// reserved compute capacity.
// CapacityReservationID specifies the target Capacity Reservation into which the instance should be launched.
// +optional
CapacityReservationID string `json:"capacityReservationId,omitempty"`
CapacityReservationID *string `json:"capacityReservationId,omitempty"`
}

// CloudInit defines options related to the bootstrapping systems where
Expand Down
5 changes: 2 additions & 3 deletions api/v1beta2/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -250,10 +250,9 @@ type Instance struct {
// +optional
PublicIPOnLaunch *bool `json:"publicIPOnLaunch,omitempty"`

// CapacityReservationID specifies the instance that should be launched in the
// reserved compute capacity.
// CapacityReservationID specifies the target Capacity Reservation into which the instance should be launched.
// +optional
CapacityReservationID string `json:"capacityReservationId,omitempty"`
CapacityReservationID *string `json:"capacityReservationId,omitempty"`
}

// InstanceMetadataState describes the state of InstanceMetadataOptions.HttpEndpoint and InstanceMetadataOptions.InstanceMetadataTags
Expand Down
10 changes: 10 additions & 0 deletions api/v1beta2/zz_generated.deepcopy.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -1091,9 +1091,8 @@ spec:
description: Availability zone of instance
type: string
capacityReservationId:
description: |-
CapacityReservationID specifies the instance that should be launched in the
reserved compute capacity.
description: CapacityReservationID specifies the target Capacity
Reservation into which the instance should be launched.
type: string
ebsOptimized:
description: Indicates whether the instance is optimized for Amazon
Expand Down Expand Up @@ -3100,9 +3099,8 @@ spec:
description: Availability zone of instance
type: string
capacityReservationId:
description: |-
CapacityReservationID specifies the instance that should be launched in the
reserved compute capacity.
description: CapacityReservationID specifies the target Capacity
Reservation into which the instance should be launched.
type: string
ebsOptimized:
description: Indicates whether the instance is optimized for Amazon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2076,9 +2076,8 @@ spec:
description: Availability zone of instance
type: string
capacityReservationId:
description: |-
CapacityReservationID specifies the instance that should be launched in the
reserved compute capacity.
description: CapacityReservationID specifies the target Capacity
Reservation into which the instance should be launched.
type: string
ebsOptimized:
description: Indicates whether the instance is optimized for Amazon
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -625,9 +625,8 @@ spec:
type: string
type: object
capacityReservationId:
description: |-
CapacityReservationID specifies the instance that should be launched in the
reserved compute capacity.
description: CapacityReservationID specifies the target Capacity Reservation
into which the instance should be launched.
type: string
cloudInit:
description: |-
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -555,9 +555,8 @@ spec:
type: string
type: object
capacityReservationId:
description: |-
CapacityReservationID specifies the instance that should be launched in the
reserved compute capacity.
description: CapacityReservationID specifies the target Capacity
Reservation into which the instance should be launched.
type: string
cloudInit:
description: |-
Expand Down
19 changes: 8 additions & 11 deletions pkg/cloud/services/ec2/instances.go
Original file line number Diff line number Diff line change
Expand Up @@ -1122,20 +1122,17 @@ func filterGroups(list []string, strToFilter string) (newList []string) {
return
}

func getCapacityReservationSpecification(capacityReservationID string) *ec2.CapacityReservationSpecification {
if capacityReservationID == "" {
// Instance is not a CapacityReservation instance
func getCapacityReservationSpecification(capacityReservationID *string) *ec2.CapacityReservationSpecification {
if capacityReservationID == nil {
// Not targeting any specific Capacity Reservation
return nil
}

// Set required values for CapacityReservation
capacityReservationTargetOptions := &ec2.CapacityReservationTarget{}
capacityReservationTargetOptions.SetCapacityReservationId(capacityReservationID)

capacityReservationSpecification := &ec2.CapacityReservationSpecification{}
capacityReservationSpecification.SetCapacityReservationTarget(capacityReservationTargetOptions)

return capacityReservationSpecification
return &ec2.CapacityReservationSpecification{
CapacityReservationTarget: &ec2.CapacityReservationTarget{
CapacityReservationId: capacityReservationID,
},
}
}

func getInstanceMarketOptionsRequest(spotMarketOptions *infrav1.SpotMarketOptions) *ec2.InstanceMarketOptionsRequest {
Expand Down
9 changes: 5 additions & 4 deletions pkg/cloud/services/ec2/instances_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5323,19 +5323,20 @@ func mockedGetPrivateDNSDomainNameFromDHCPOptionsEmptyCalls(m *mocks.MockEC2APIM

func TestGetCapacityReservationSpecification(t *testing.T) {
mockCapacityReservationID := "cr-123"
mockCapacityReservationIDPtr := &mockCapacityReservationID
testCases := []struct {
name string
capacityReservationID string
capacityReservationID *string
expectedRequest *ec2.CapacityReservationSpecification
}{
{
name: "with no CapacityReservationID options specified",
capacityReservationID: "",
capacityReservationID: nil,
expectedRequest: nil,
},
{
name: "with an valid CapacityReservationID specified",
capacityReservationID: *aws.String(mockCapacityReservationID),
name: "with a valid CapacityReservationID specified",
capacityReservationID: mockCapacityReservationIDPtr,
expectedRequest: &ec2.CapacityReservationSpecification{
CapacityReservationTarget: &ec2.CapacityReservationTarget{
CapacityReservationId: aws.String(mockCapacityReservationID),
Expand Down

0 comments on commit 5e44fa5

Please sign in to comment.