Skip to content

Commit 7ba97c3

Browse files
committed
Added dedicated host support
1 parent a7b9fca commit 7ba97c3

File tree

3 files changed

+25
-13
lines changed

3 files changed

+25
-13
lines changed

manifests/0000_30_cluster-api_01_credentials-request.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ spec:
2525
- ec2:DescribeDhcpOptions
2626
- ec2:DescribeImages
2727
- ec2:DescribeInstances
28+
- ec2:DescribeInstanceTypes
2829
- ec2:DescribeInternetGateways
2930
- ec2:DescribeSecurityGroups
3031
- ec2:DescribeSubnets

pkg/conversion/capi2mapi/aws.go

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -169,15 +169,19 @@ func (m machineAndAWSMachineAndAWSCluster) toProviderSpec() (*mapiv1beta1.AWSMac
169169
}
170170

171171
// Dedicated host support
172-
if m.awsMachine.Spec.HostID != nil {
173-
mapaProviderConfig.HostID = m.awsMachine.Spec.HostID
174-
}
175172
if m.awsMachine.Spec.HostAffinity != nil {
176173
switch *m.awsMachine.Spec.HostAffinity {
177174
case "host":
178-
*mapaProviderConfig.HostAffinity = mapiv1.HostAffinityHost
175+
*mapaProviderConfig.HostPlacement = mapiv1.HostPlacement{
176+
Affinity: ptr.To(mapiv1.HostAffinityDedicatedHost),
177+
DedicatedHost: &mapiv1.DedicatedHost{
178+
ID: *m.awsMachine.Spec.HostID,
179+
},
180+
}
179181
case "default":
180-
*mapaProviderConfig.HostAffinity = mapiv1.HostAffinityAnyAvailable
182+
*mapaProviderConfig.HostPlacement = mapiv1.HostPlacement{
183+
Affinity: ptr.To(mapiv1.HostAffinityAnyAvailable),
184+
}
181185
default:
182186
errors = append(errors, field.Invalid(fldPath.Child("hostAffinity"), m.awsMachine.Spec.HostAffinity, errUnsupportedHostAffinityType))
183187
}

pkg/conversion/mapi2capi/aws.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -286,14 +286,21 @@ func (m *awsMachineAndInfra) toAWSMachine(providerSpec mapiv1beta1.AWSMachinePro
286286
}
287287

288288
// Dedicated host support
289-
if providerSpec.HostID != nil {
290-
spec.HostID = providerSpec.HostID
291-
}
292-
if providerSpec.HostAffinity != nil {
293-
spec.HostAffinity = ptr.To(string(*providerSpec.HostAffinity))
294-
}
295-
if providerSpec.HostAffinity != nil && providerSpec.HostID == nil {
296-
errs = append(errs, field.Invalid(fldPath.Child("hostAffinity"), providerSpec.HostAffinity, "hostAffinity requires hostID to be set"))
289+
if providerSpec.HostPlacement != nil {
290+
dhPath := fldPath.Child("hostPlacement")
291+
placement := providerSpec.HostPlacement
292+
switch *placement.Affinity {
293+
case mapiv1.HostAffinityAnyAvailable:
294+
spec.HostAffinity = ptr.To("default")
295+
case mapiv1.HostAffinityDedicatedHost:
296+
if placement.DedicatedHost != nil {
297+
spec.HostAffinity = ptr.To("host")
298+
spec.HostID = ptr.To(placement.DedicatedHost.ID)
299+
} else {
300+
errs = append(errs, field.Required(dhPath.Child("dedicatedHost"), "affinity DedicatedHost requires dedicatedHost field to be set"))
301+
}
302+
default:
303+
}
297304
}
298305

299306
if providerSpec.CapacityReservationID != "" {

0 commit comments

Comments
 (0)