Skip to content

Commit ada76a7

Browse files
authored
Merge branch 'master' into gcp-capi-cases-all
2 parents b665e74 + cfddc49 commit ada76a7

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+33822
-75
lines changed

go.mod

+3-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ require (
1111
github.com/onsi/ginkgo/v2 v2.20.2
1212
github.com/onsi/gomega v1.34.2
1313
github.com/openshift/api v0.0.0-20240924155631-232984653385
14-
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20241112115249-e541d71175dd
14+
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20241119145735-af0b63d8343b
1515
github.com/openshift/cluster-autoscaler-operator v0.0.1-0.20240509123215-40cadf8a4729
1616
github.com/openshift/library-go v0.0.0-20240919205913-c96b82b3762b
1717
github.com/openshift/machine-api-operator v0.2.1-0.20240924183942-9c3e4a04009a
@@ -22,6 +22,7 @@ require (
2222
k8s.io/klog v1.0.0
2323
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
2424
sigs.k8s.io/cluster-api v1.8.4
25+
sigs.k8s.io/cluster-api-provider-aws/v2 v2.6.1
2526
sigs.k8s.io/cluster-api-provider-azure v1.17.1
2627
sigs.k8s.io/cluster-api-provider-gcp v1.8.0
2728
sigs.k8s.io/controller-runtime v0.19.0
@@ -126,7 +127,7 @@ require (
126127
github.com/gostaticanalysis/comment v1.4.2 // indirect
127128
github.com/gostaticanalysis/forcetypeassert v0.1.0 // indirect
128129
github.com/gostaticanalysis/nilerr v0.1.1 // indirect
129-
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect
130+
github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc // indirect
130131
github.com/hashicorp/go-version v1.7.0 // indirect
131132
github.com/hashicorp/hcl v1.0.0 // indirect
132133
github.com/hexops/gotextdiff v1.0.3 // indirect

go.sum

+10-6
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,8 @@ github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfU
207207
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE=
208208
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
209209
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
210+
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
211+
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
210212
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
211213
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
212214
github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8=
@@ -275,8 +277,8 @@ github.com/gostaticanalysis/nilerr v0.1.1/go.mod h1:wZYb6YI5YAxxq0i1+VJbY0s2YONW
275277
github.com/gostaticanalysis/testutil v0.3.1-0.20210208050101-bfb5c8eec0e4/go.mod h1:D+FIZ+7OahH3ePw/izIEeH5I06eKs1IKI4Xr64/Am3M=
276278
github.com/gostaticanalysis/testutil v0.4.0 h1:nhdCmubdmDF6VEatUNjgUZBJKWRqugoISdUv3PPQgHY=
277279
github.com/gostaticanalysis/testutil v0.4.0/go.mod h1:bLIoPefWXrRi/ssLFWX1dx7Repi5x3CuviD3dgAZaBU=
278-
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM=
279-
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
280+
github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc h1:f8eY6cV/x1x+HLjOp4r72s/31/V2aTUtg5oKRRPf8/Q=
281+
github.com/gregjones/httpcache v0.0.0-20190212212710-3befbb6ad0cc/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
280282
github.com/hashicorp/go-version v1.2.1/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
281283
github.com/hashicorp/go-version v1.7.0 h1:5tqGy27NaOTB8yJKUZELlFAS/LTKJkrmONwQKeRZfjY=
282284
github.com/hashicorp/go-version v1.7.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
@@ -405,8 +407,8 @@ github.com/openshift/api v0.0.0-20240924155631-232984653385 h1:P6O191HwBj0ahEfea
405407
github.com/openshift/api v0.0.0-20240924155631-232984653385/go.mod h1:OOh6Qopf21pSzqNVCB5gomomBXb8o5sGKZxG2KNpaXM=
406408
github.com/openshift/client-go v0.0.0-20240918182115-6a8ead8397fd h1:Gd0+bYdcfGIsDOJ8BwTJJjQeXoziyIsTwqp/s38rKyM=
407409
github.com/openshift/client-go v0.0.0-20240918182115-6a8ead8397fd/go.mod h1:EB7GeA/vpf9AHklMgnnT0+uG6l/3f8cChtCFbJFrk4g=
408-
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20241112115249-e541d71175dd h1:drEJQPJXOH36XivQ2d1gMrRzZzY4rOwfU939lYU0lEQ=
409-
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20241112115249-e541d71175dd/go.mod h1:Ns6d57JhMddy6w5c61HHWQ4jqF8Pvrv8mgs2gxg5jKU=
410+
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20241119145735-af0b63d8343b h1:/WI6qAWsweZAXn/mRsbNbUrQqQlgUxGbAgFowq13UUc=
411+
github.com/openshift/cluster-api-actuator-pkg/testutils v0.0.0-20241119145735-af0b63d8343b/go.mod h1:Ns6d57JhMddy6w5c61HHWQ4jqF8Pvrv8mgs2gxg5jKU=
410412
github.com/openshift/cluster-autoscaler-operator v0.0.1-0.20240509123215-40cadf8a4729 h1:SNWwFZ+lMj5LGX99SRbQHafgxLcSOv5JCeBdY6OY/PE=
411413
github.com/openshift/cluster-autoscaler-operator v0.0.1-0.20240509123215-40cadf8a4729/go.mod h1:AJ4/7eaCOr6GtNSv3CvQVRVNlqUINm0Qm9IzatXx4dY=
412414
github.com/openshift/cluster-control-plane-machine-set-operator v0.0.0-20240909043600-373ac49835bf h1:mfMmaD9+vZIZQq3MGXsS/AGHXekj4wIn3zc1Cs1EY8M=
@@ -481,8 +483,8 @@ github.com/sashamelentyev/usestdlibvars v1.27.0 h1:t/3jZpSXtRPRf2xr0m63i32Zrusyu
481483
github.com/sashamelentyev/usestdlibvars v1.27.0/go.mod h1:9nl0jgOfHKWNFS43Ojw0i7aRoS4j6EBye3YBhmAIRF8=
482484
github.com/securego/gosec/v2 v2.21.2 h1:deZp5zmYf3TWwU7A7cR2+SolbTpZ3HQiwFqnzQyEl3M=
483485
github.com/securego/gosec/v2 v2.21.2/go.mod h1:au33kg78rNseF5PwPnTWhuYBFf534bvJRvOrgZ/bFzU=
484-
github.com/sergi/go-diff v1.2.0 h1:XU+rvMAioB0UC3q1MFrIQy4Vo5/4VsRDQQXHsEya6xQ=
485-
github.com/sergi/go-diff v1.2.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM=
486+
github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8=
487+
github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I=
486488
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c h1:W65qqJCIOVP4jpqPQ0YvHYKwcMEMVWIzWC5iNQQfBTU=
487489
github.com/shazow/go-diff v0.0.0-20160112020656-b6b7b6733b8c/go.mod h1:/PevMnwAxekIXwN8qQyfc5gl2NlkB3CQlkizAbOkeBs=
488490
github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk=
@@ -810,6 +812,8 @@ mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f h1:lMpcwN6GxNbWtbpI1+xzFLSW8
810812
mvdan.cc/unparam v0.0.0-20240528143540-8a5130ca722f/go.mod h1:RSLa7mKKCNeTTMHBw5Hsy2rfJmd6O2ivt9Dw9ZqCQpQ=
811813
sigs.k8s.io/cluster-api v1.8.4 h1:jBKQH1H/HUdUFk8T6qDzIxZJfWw1F5ZP0ZpYQJDmTHs=
812814
sigs.k8s.io/cluster-api v1.8.4/go.mod h1:pXv5LqLxuIbhGIXykyNKiJh+KrLweSBajVHHitPLyoY=
815+
sigs.k8s.io/cluster-api-provider-aws/v2 v2.6.1 h1:vbZUYEB7OfPlfHk6wis+UrvRLTqv5F4Nrjl2WDJ1kiw=
816+
sigs.k8s.io/cluster-api-provider-aws/v2 v2.6.1/go.mod h1:1aq1EZbirRW6NC2gYUFCc7cVFwX9PM/vDvoU+2oGPuw=
813817
sigs.k8s.io/cluster-api-provider-azure v1.17.1 h1:f1sTGfv6hAN9WrxeawE4pQ2nRhEKb7AJjH6MhU/wAzg=
814818
sigs.k8s.io/cluster-api-provider-azure v1.17.1/go.mod h1:16VtsvIpK8qtNHplG2ZHZ74/JKTzOUQIAWWutjnpvEc=
815819
sigs.k8s.io/cluster-api-provider-gcp v1.8.0 h1:K3/fa4VEPCIgtzGsKKPs3qwbJEkMxt+YjT+fkmE7CG8=

pkg/capi/aws.go

+235
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
package capi
2+
3+
import (
4+
"context"
5+
6+
. "github.com/onsi/ginkgo/v2"
7+
. "github.com/onsi/gomega"
8+
configv1 "github.com/openshift/api/config/v1"
9+
mapiv1 "github.com/openshift/api/machine/v1beta1"
10+
"github.com/openshift/cluster-api-actuator-pkg/pkg/framework"
11+
"github.com/openshift/cluster-api-actuator-pkg/pkg/framework/gatherer"
12+
capiinfrastructurev1beta2resourcebuilder "github.com/openshift/cluster-api-actuator-pkg/testutils/resourcebuilder/cluster-api/infrastructure/v1beta2"
13+
corev1 "k8s.io/api/core/v1"
14+
awsv1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
15+
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
16+
17+
"sigs.k8s.io/controller-runtime/pkg/client/config"
18+
19+
"sigs.k8s.io/controller-runtime/pkg/client"
20+
yaml "sigs.k8s.io/yaml"
21+
)
22+
23+
const (
24+
awsMachineTemplateName = "aws-machine-template"
25+
infrastructureName = "cluster"
26+
infraAPIVersion = "infrastructure.cluster.x-k8s.io/v1beta1"
27+
)
28+
29+
var _ = Describe("Cluster API AWS MachineSet", framework.LabelCAPI, framework.LabelDisruptive, Ordered, func() {
30+
var (
31+
cl client.Client
32+
ctx = context.Background()
33+
platform configv1.PlatformType
34+
clusterName string
35+
oc *gatherer.CLI
36+
awsMachineTemplate *awsv1.AWSMachineTemplate
37+
machineSetParams framework.CAPIMachineSetParams
38+
machineSet *clusterv1.MachineSet
39+
mapiDefaultProviderSpec *mapiv1.AWSMachineProviderConfig
40+
err error
41+
)
42+
43+
BeforeAll(func() {
44+
cfg, err := config.GetConfig()
45+
Expect(err).ToNot(HaveOccurred(), "Failed to GetConfig")
46+
47+
cl, err = client.New(cfg, client.Options{})
48+
Expect(err).ToNot(HaveOccurred(), "Failed to create Kubernetes client for test")
49+
50+
infra := &configv1.Infrastructure{}
51+
infraName := client.ObjectKey{
52+
Name: infrastructureName,
53+
}
54+
Expect(cl.Get(ctx, infraName, infra)).To(Succeed(), "Failed to get cluster infrastructure object")
55+
Expect(infra.Status.PlatformStatus).ToNot(BeNil(), "expected the infrastructure Status.PlatformStatus to not be nil")
56+
clusterName = infra.Status.InfrastructureName
57+
platform = infra.Status.PlatformStatus.Type
58+
if platform != configv1.AWSPlatformType {
59+
Skip("Skipping AWS E2E tests")
60+
}
61+
oc, err = framework.NewCLI()
62+
Expect(err).ToNot(HaveOccurred(), "Failed to new CLI")
63+
framework.SkipIfNotTechPreviewNoUpgrade(oc, cl)
64+
_, mapiDefaultProviderSpec = getDefaultAWSMAPIProviderSpec(cl)
65+
machineSetParams = framework.NewCAPIMachineSetParams(
66+
"aws-machineset",
67+
clusterName,
68+
mapiDefaultProviderSpec.Placement.AvailabilityZone,
69+
1,
70+
corev1.ObjectReference{
71+
Kind: "AWSMachineTemplate",
72+
APIVersion: infraAPIVersion,
73+
Name: awsMachineTemplateName,
74+
},
75+
)
76+
framework.CreateCoreCluster(ctx, cl, clusterName, "AWSCluster")
77+
})
78+
79+
AfterEach(func() {
80+
framework.DeleteCAPIMachineSets(ctx, cl, machineSet)
81+
framework.WaitForCAPIMachineSetsDeleted(ctx, cl, machineSet)
82+
framework.DeleteObjects(ctx, cl, awsMachineTemplate)
83+
})
84+
85+
//huliu-OCP-51071 - [CAPI] Create machineset with CAPI on aws
86+
It("should be able to run a machine with a default provider spec", func() {
87+
awsMachineTemplate = newAWSMachineTemplate(mapiDefaultProviderSpec)
88+
Expect(cl.Create(ctx, awsMachineTemplate)).To(Succeed(), "Failed to create awsmachinetemplate")
89+
machineSetParams = framework.UpdateCAPIMachineSetName("aws-machineset-51071", machineSetParams)
90+
machineSet, err = framework.CreateCAPIMachineSet(ctx, cl, machineSetParams)
91+
Expect(err).ToNot(HaveOccurred(), "Failed to create CAPI machineset")
92+
framework.WaitForCAPIMachinesRunning(ctx, cl, machineSet.Name)
93+
})
94+
95+
//huliu-OCP-75395 - [CAPI] AWS Placement group support.
96+
It("should be able to run a machine with cluster placement group", func() {
97+
awsClient := framework.NewAwsClient(framework.GetCredentialsFromCluster(oc))
98+
placementGroupName := clusterName + "pgcluster"
99+
placementGroupID, err := awsClient.CreatePlacementGroup(placementGroupName, "cluster")
100+
Expect(err).ToNot(HaveOccurred(), "Failed to create placementgroup")
101+
Expect(placementGroupID).ToNot(Equal(""), "expected the placementGroupID to not be empty string")
102+
DeferCleanup(func() {
103+
_, err = awsClient.DeletePlacementGroup(placementGroupName)
104+
Expect(err).ToNot(HaveOccurred(), "Failed to delete placementgroup")
105+
})
106+
107+
awsMachineTemplate = newAWSMachineTemplate(mapiDefaultProviderSpec)
108+
awsMachineTemplate.Spec.Template.Spec.PlacementGroupName = placementGroupName
109+
Expect(cl.Create(ctx, awsMachineTemplate)).To(Succeed(), "Failed to create awsmachinetemplate")
110+
machineSetParams = framework.UpdateCAPIMachineSetName("aws-machineset-75395", machineSetParams)
111+
machineSet, err = framework.CreateCAPIMachineSet(ctx, cl, machineSetParams)
112+
Expect(err).ToNot(HaveOccurred(), "Failed to create CAPI machineset")
113+
framework.WaitForCAPIMachinesRunning(ctx, cl, machineSet.Name)
114+
})
115+
116+
//huliu-OCP-75396 - [CAPI] Creating machines using KMS keys from AWS.
117+
It("should be able to run a machine using KMS keys", framework.LabelQEOnly, func() {
118+
awsMachineTemplate = newAWSMachineTemplate(mapiDefaultProviderSpec)
119+
awskmsClient := framework.NewAwsKmsClient(framework.GetCredentialsFromCluster(oc))
120+
key, err := awskmsClient.CreateKey(infrastructureName + " key 75396")
121+
if err != nil {
122+
Skip("Create key failed, skip the cases!!")
123+
}
124+
defer func() {
125+
err := awskmsClient.DeleteKey(key)
126+
Expect(err).ToNot(HaveOccurred(), "Failed to delete the key")
127+
}()
128+
129+
encryptBool := true
130+
awsMachineTemplate.Spec.Template.Spec.NonRootVolumes = []awsv1.Volume{
131+
{
132+
DeviceName: "/dev/xvda",
133+
Size: 140,
134+
Type: awsv1.VolumeTypeIO1,
135+
IOPS: 5000,
136+
Encrypted: &encryptBool,
137+
EncryptionKey: key,
138+
},
139+
}
140+
Expect(cl.Create(ctx, awsMachineTemplate)).To(Succeed(), "Failed to create awsmachinetemplate")
141+
machineSetParams = framework.UpdateCAPIMachineSetName("aws-machineset-75396", machineSetParams)
142+
machineSet, err = framework.CreateCAPIMachineSet(ctx, cl, machineSetParams)
143+
Expect(err).ToNot(HaveOccurred(), "Failed to create CAPI machineset")
144+
framework.WaitForCAPIMachinesRunning(ctx, cl, machineSet.Name)
145+
})
146+
})
147+
148+
func getDefaultAWSMAPIProviderSpec(cl client.Client) (*mapiv1.MachineSet, *mapiv1.AWSMachineProviderConfig) {
149+
machineSetList := &mapiv1.MachineSetList{}
150+
151+
Eventually(func() error {
152+
return cl.List(framework.GetContext(), machineSetList, client.InNamespace(framework.MachineAPINamespace))
153+
}, framework.WaitShort, framework.RetryShort).Should(Succeed(), "it should be able to list the MAPI machinesets")
154+
Expect(machineSetList.Items).ToNot(HaveLen(0), "expected the MAPI machinesets to be present")
155+
156+
machineSet := &machineSetList.Items[0]
157+
Expect(machineSet.Spec.Template.Spec.ProviderSpec.Value).ToNot(BeNil(), "expected the MAPI machinesets ProviderSpec value to not be nil")
158+
159+
providerSpec := &mapiv1.AWSMachineProviderConfig{}
160+
Expect(yaml.Unmarshal(machineSet.Spec.Template.Spec.ProviderSpec.Value.Raw, providerSpec)).To(Succeed(), "it should be able to unmarshal the raw yaml into providerSpec")
161+
162+
return machineSet, providerSpec
163+
}
164+
165+
func newAWSMachineTemplate(mapiProviderSpec *mapiv1.AWSMachineProviderConfig) *awsv1.AWSMachineTemplate {
166+
By("Creating AWS machine template")
167+
168+
Expect(mapiProviderSpec).ToNot(BeNil(), "expected the mapi ProviderSpec to not be nil")
169+
Expect(mapiProviderSpec.IAMInstanceProfile).ToNot(BeNil(), "expected the mapi IAMInstanceProfile to not be nil")
170+
Expect(mapiProviderSpec.IAMInstanceProfile.ID).ToNot(BeNil(), "expected the mapi IAMInstanceProfile.ID to not be nil")
171+
Expect(mapiProviderSpec.InstanceType).ToNot(BeEmpty(), "expected the mapi InstanceType to not be empty")
172+
Expect(mapiProviderSpec.Placement.AvailabilityZone).ToNot(BeEmpty(), "expected the mapi Placement.AvailabilityZone to not be empty")
173+
Expect(mapiProviderSpec.AMI.ID).ToNot(BeNil(), "expected the mapi AMI.ID to not be nil")
174+
Expect(mapiProviderSpec.SecurityGroups).ToNot(HaveLen(0), "expected the mapi SecurityGroups to be present")
175+
Expect(mapiProviderSpec.SecurityGroups[0].Filters).ToNot(HaveLen(0), "expected the mapi SecurityGroups[0].Filters to be present")
176+
Expect(mapiProviderSpec.SecurityGroups[0].Filters[0].Values).ToNot(HaveLen(0), "expected the mapi SecurityGroups[0].Filters[0].Values to be present")
177+
178+
var subnet awsv1.AWSResourceReference
179+
180+
if len(mapiProviderSpec.Subnet.Filters) == 0 {
181+
subnet = awsv1.AWSResourceReference{
182+
ID: mapiProviderSpec.Subnet.ID,
183+
}
184+
} else {
185+
subnet = awsv1.AWSResourceReference{
186+
Filters: []awsv1.Filter{
187+
{
188+
Name: "tag:Name",
189+
Values: mapiProviderSpec.Subnet.Filters[0].Values,
190+
},
191+
},
192+
}
193+
}
194+
195+
uncompressedUserData := true
196+
ami := awsv1.AMIReference{
197+
ID: mapiProviderSpec.AMI.ID,
198+
}
199+
ignition := &awsv1.Ignition{
200+
Version: "3.4",
201+
StorageType: awsv1.IgnitionStorageTypeOptionUnencryptedUserData,
202+
}
203+
additionalSecurityGroups := []awsv1.AWSResourceReference{
204+
{
205+
Filters: []awsv1.Filter{
206+
{
207+
Name: "tag:Name",
208+
Values: mapiProviderSpec.SecurityGroups[0].Filters[0].Values,
209+
},
210+
},
211+
},
212+
{
213+
Filters: []awsv1.Filter{
214+
{
215+
Name: "tag:Name",
216+
Values: mapiProviderSpec.SecurityGroups[1].Filters[0].Values,
217+
},
218+
},
219+
},
220+
}
221+
awsmt := capiinfrastructurev1beta2resourcebuilder.
222+
AWSMachineTemplate().
223+
WithUncompressedUserData(uncompressedUserData).
224+
WithIAMInstanceProfile(*mapiProviderSpec.IAMInstanceProfile.ID).
225+
WithInstanceType(mapiProviderSpec.InstanceType).
226+
WithAMI(ami).
227+
WithIgnition(ignition).
228+
WithSubnet(&subnet).
229+
WithAdditionalSecurityGroups(additionalSecurityGroups).
230+
WithName(awsMachineTemplateName).
231+
WithNamespace(framework.ClusterAPINamespace).
232+
Build()
233+
234+
return awsmt
235+
}

pkg/e2e_test.go

+6
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
machinev1 "github.com/openshift/api/machine/v1beta1"
1515
"github.com/openshift/cluster-api-actuator-pkg/pkg/framework"
1616
caov1alpha1 "github.com/openshift/cluster-autoscaler-operator/pkg/apis"
17+
awsv1 "sigs.k8s.io/cluster-api-provider-aws/v2/api/v1beta2"
1718
azurev1 "sigs.k8s.io/cluster-api-provider-azure/api/v1beta1"
1819
gcpv1 "sigs.k8s.io/cluster-api-provider-gcp/api/v1beta1"
1920
clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
@@ -51,8 +52,13 @@ func init() {
5152
}
5253

5354
if err := gcpv1.AddToScheme(scheme.Scheme); err != nil {
55+
klog.Fatal(err)
56+
}
57+
58+
if err := awsv1.AddToScheme(scheme.Scheme); err != nil {
5459
klog.Fatal(err)
5560
}
61+
5662
}
5763

5864
func TestE2E(t *testing.T) {

0 commit comments

Comments
 (0)