Skip to content

Commit 8b80710

Browse files
Merge pull request openshift#8698 from r4f4/aws-multi-arch-day-0
MULTIARCH-4569: aws: support multi-arch nodes
2 parents 5748014 + 0847771 commit 8b80710

File tree

19 files changed

+91
-48
lines changed

19 files changed

+91
-48
lines changed

pkg/asset/cluster/openstack/openstack.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ func PreTerraform(ctx context.Context, tfvarsFile *asset.File, installConfig *in
4040
// upload the corresponding image to Glance if rhcosImage contains a
4141
// URL. If rhcosImage contains a name, then that points to an existing
4242
// Glance image.
43-
if imageName, isURL := rhcos.GenerateOpenStackImageName(string(*rhcosImage), clusterID.InfraID); isURL {
44-
if err := preprovision.UploadBaseImage(ctx, installConfig.Config.Platform.OpenStack.Cloud, string(*rhcosImage), imageName, clusterID.InfraID, installConfig.Config.Platform.OpenStack.ClusterOSImageProperties); err != nil {
43+
if imageName, isURL := rhcos.GenerateOpenStackImageName(rhcosImage.ControlPlane, clusterID.InfraID); isURL {
44+
if err := preprovision.UploadBaseImage(ctx, installConfig.Config.Platform.OpenStack.Cloud, rhcosImage.ControlPlane, imageName, clusterID.InfraID, installConfig.Config.Platform.OpenStack.ClusterOSImageProperties); err != nil {
4545
return err
4646
}
4747
}

pkg/asset/cluster/tfvars/tfvars.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
274274
for i, m := range workers {
275275
workerConfigs[i] = m.Spec.Template.Spec.ProviderSpec.Value.Object.(*machinev1beta1.AWSMachineProviderConfig) //nolint:errcheck // legacy, pre-linter
276276
}
277-
osImage := strings.SplitN(string(*rhcosImage), ",", 2)
277+
osImage := strings.SplitN(rhcosImage.ControlPlane, ",", 2)
278278
osImageID := osImage[0]
279279
osImageRegion := installConfig.Config.AWS.Region
280280
if len(osImage) == 2 {
@@ -416,7 +416,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
416416
BaseDomainResourceGroupName: installConfig.Config.Azure.BaseDomainResourceGroupName,
417417
MasterConfigs: masterConfigs,
418418
WorkerConfigs: workerConfigs,
419-
ImageURL: string(*rhcosImage),
419+
ImageURL: rhcosImage.ControlPlane,
420420
ImageRelease: rhcosRelease.GetAzureReleaseVersion(),
421421
PreexistingNetwork: preexistingnetwork,
422422
Publish: installConfig.Config.Publish,
@@ -730,7 +730,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
730730
CISInstanceCRN: cisCRN,
731731
DNSInstanceID: dnsID,
732732
EndpointsJSONFile: endpointsJSONFile,
733-
ImageURL: string(*rhcosImage),
733+
ImageURL: rhcosImage.ControlPlane,
734734
MasterConfigs: masterConfigs,
735735
MasterDedicatedHosts: masterDedicatedHosts,
736736
NetworkResourceGroupName: installConfig.Config.Platform.IBMCloud.NetworkResourceGroupName,
@@ -756,7 +756,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
756756
installConfig,
757757
mastersAsset,
758758
workersAsset,
759-
string(*rhcosImage),
759+
rhcosImage.ControlPlane,
760760
clusterID,
761761
bootstrapIgn,
762762
)
@@ -828,7 +828,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
828828
installConfig.Config.Platform.Ovirt.StorageDomainID,
829829
installConfig.Config.Platform.Ovirt.NetworkName,
830830
installConfig.Config.Platform.Ovirt.VNICProfileID,
831-
string(*rhcosImage),
831+
rhcosImage.ControlPlane,
832832
clusterID.InfraID,
833833
masters[0].Spec.ProviderSpec.Value.Object.(*ovirtprovider.OvirtMachineProviderSpec),
834834
installConfig.Config.Platform.Ovirt.AffinityGroups,
@@ -966,7 +966,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
966966
return err
967967
}
968968

969-
osImage := strings.SplitN(string(*rhcosImage), "/", 2)
969+
osImage := strings.SplitN(rhcosImage.ControlPlane, "/", 2)
970970
data, err = powervstfvars.TFVars(
971971
powervstfvars.TFVarsSources{
972972
MasterConfigs: masterConfigs,
@@ -1015,7 +1015,7 @@ func (t *TerraformVariables) Generate(ctx context.Context, parents asset.Parents
10151015
controlPlaneConfigs[i] = c.Spec.ProviderSpec.Value.Object.(*machinev1.NutanixMachineProviderConfig) //nolint:errcheck // legacy, pre-linter
10161016
}
10171017

1018-
imgURI := string(*rhcosImage)
1018+
imgURI := rhcosImage.ControlPlane
10191019
if installConfig.Config.Nutanix.ClusterOSImage != "" {
10201020
imgURI = installConfig.Config.Nutanix.ClusterOSImage
10211021
}

pkg/asset/ignition/bootstrap/common.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -337,7 +337,7 @@ func (a *Common) getTemplateData(dependencies asset.Parents, bootstrapInPlace bo
337337
EtcdCluster: strings.Join(etcdEndpoints, ","),
338338
Proxy: &proxy.Config.Status,
339339
Registries: registries,
340-
BootImage: string(*rhcosImage),
340+
BootImage: rhcosImage.ControlPlane,
341341
PlatformData: platformData,
342342
ClusterProfile: clusterProfile,
343343
BootstrapInPlace: bootstrapInPlaceConfig,

pkg/asset/machines/clusterapi.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ func (c *ClusterAPI) Generate(ctx context.Context, dependencies asset.Parents) e
117117

118118
mpool := defaultAWSMachinePoolPlatform("master")
119119

120-
osImage := strings.SplitN(string(*rhcosImage), ",", 2)
120+
osImage := strings.SplitN(rhcosImage.ControlPlane, ",", 2)
121121
osImageID := osImage[0]
122122
if len(osImage) == 2 {
123123
osImageID = "" // the AMI will be generated later on
@@ -298,7 +298,7 @@ func (c *ClusterAPI) Generate(ctx context.Context, dependencies asset.Parents) e
298298
installConfig,
299299
clusterID.InfraID,
300300
&pool,
301-
string(*rhcosImage),
301+
rhcosImage.ControlPlane,
302302
)
303303
if err != nil {
304304
return fmt.Errorf("failed to create master machine objects %w", err)
@@ -311,7 +311,7 @@ func (c *ClusterAPI) Generate(ctx context.Context, dependencies asset.Parents) e
311311
installConfig,
312312
clusterID.InfraID,
313313
&pool,
314-
string(*rhcosImage),
314+
rhcosImage.ControlPlane,
315315
)
316316
if err != nil {
317317
return fmt.Errorf("failed to create bootstrap machine objects %w", err)
@@ -394,7 +394,7 @@ func (c *ClusterAPI) Generate(ctx context.Context, dependencies asset.Parents) e
394394
mpool.Set(pool.Platform.OpenStack)
395395
pool.Platform.OpenStack = &mpool
396396

397-
imageName, _ := rhcosutils.GenerateOpenStackImageName(string(*rhcosImage), clusterID.InfraID)
397+
imageName, _ := rhcosutils.GenerateOpenStackImageName(rhcosImage.ControlPlane, clusterID.InfraID)
398398

399399
for _, role := range []string{"master", "bootstrap"} {
400400
openStackMachines, err := openstack.GenerateMachines(

pkg/asset/machines/master.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ func (m *Master) Generate(ctx context.Context, dependencies asset.Parents) error
187187

188188
mpool := defaultAWSMachinePoolPlatform("master")
189189

190-
osImage := strings.SplitN(string(*rhcosImage), ",", 2)
190+
osImage := strings.SplitN(rhcosImage.ControlPlane, ",", 2)
191191
osImageID := osImage[0]
192192
if len(osImage) == 2 {
193193
osImageID = "" // the AMI will be generated later on
@@ -257,7 +257,7 @@ func (m *Master) Generate(ctx context.Context, dependencies asset.Parents) error
257257
mpool.Zones = azs
258258
}
259259
pool.Platform.GCP = &mpool
260-
machines, controlPlaneMachineSet, err = gcp.Machines(clusterID.InfraID, ic, &pool, string(*rhcosImage), "master", masterUserDataSecretName)
260+
machines, controlPlaneMachineSet, err = gcp.Machines(clusterID.InfraID, ic, &pool, rhcosImage.ControlPlane, "master", masterUserDataSecretName)
261261
if err != nil {
262262
return errors.Wrap(err, "failed to create master machine objects")
263263
}
@@ -319,7 +319,7 @@ func (m *Master) Generate(ctx context.Context, dependencies asset.Parents) error
319319
mpool.Set(pool.Platform.OpenStack)
320320
pool.Platform.OpenStack = &mpool
321321

322-
imageName, _ := rhcosutils.GenerateOpenStackImageName(string(*rhcosImage), clusterID.InfraID)
322+
imageName, _ := rhcosutils.GenerateOpenStackImageName(rhcosImage.ControlPlane, clusterID.InfraID)
323323

324324
machines, controlPlaneMachineSet, err = openstack.Machines(ctx, clusterID.InfraID, ic, &pool, imageName, "master", masterUserDataSecretName)
325325
if err != nil {
@@ -378,7 +378,7 @@ func (m *Master) Generate(ctx context.Context, dependencies asset.Parents) error
378378
return err
379379
}
380380
useImageGallery := installConfig.Azure.CloudName != azuretypes.StackCloud
381-
machines, controlPlaneMachineSet, err = azure.Machines(clusterID.InfraID, ic, &pool, string(*rhcosImage), "master", masterUserDataSecretName, capabilities, useImageGallery)
381+
machines, controlPlaneMachineSet, err = azure.Machines(clusterID.InfraID, ic, &pool, rhcosImage.ControlPlane, "master", masterUserDataSecretName, capabilities, useImageGallery)
382382
if err != nil {
383383
return errors.Wrap(err, "failed to create master machine objects")
384384
}
@@ -430,7 +430,7 @@ func (m *Master) Generate(ctx context.Context, dependencies asset.Parents) error
430430
mpool.Set(pool.Platform.Ovirt)
431431
pool.Platform.Ovirt = &mpool
432432

433-
imageName, _ := rhcosutils.GenerateOpenStackImageName(string(*rhcosImage), clusterID.InfraID)
433+
imageName, _ := rhcosutils.GenerateOpenStackImageName(rhcosImage.ControlPlane, clusterID.InfraID)
434434

435435
machines, err = ovirt.Machines(clusterID.InfraID, ic, &pool, imageName, "master", masterUserDataSecretName)
436436
if err != nil {

pkg/asset/machines/master_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ spec:
164164
},
165165
},
166166
}),
167-
(*rhcos.Image)(pointer.StringPtr("test-image")),
167+
rhcos.MakeAsset("test-image"),
168168
(*rhcos.Release)(pointer.StringPtr("412.86.202208101040-0")),
169169
&machine.Master{
170170
File: &asset.File{
@@ -223,7 +223,7 @@ func TestControlPlaneIsNotModified(t *testing.T) {
223223
InfraID: "test-infra-id",
224224
},
225225
installConfig,
226-
(*rhcos.Image)(pointer.StringPtr("test-image")),
226+
rhcos.MakeAsset("test-image"),
227227
(*rhcos.Release)(pointer.StringPtr("412.86.202208101040-0")),
228228
&machine.Master{
229229
File: &asset.File{
@@ -292,7 +292,7 @@ func TestBaremetalGeneratedAssetFiles(t *testing.T) {
292292
InfraID: "test-infra-id",
293293
},
294294
installConfig,
295-
(*rhcos.Image)(pointer.StringPtr("test-image")),
295+
rhcos.MakeAsset("test-image"),
296296
(*rhcos.Release)(pointer.StringPtr("412.86.202208101040-0")),
297297
&machine.Master{
298298
File: &asset.File{

pkg/asset/machines/worker.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -358,7 +358,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
358358
}
359359
mpool := defaultAWSMachinePoolPlatform(pool.Name)
360360

361-
osImage := strings.SplitN(string(*rhcosImage), ",", 2)
361+
osImage := strings.SplitN(rhcosImage.Compute, ",", 2)
362362
osImageID := osImage[0]
363363
if len(osImage) == 2 {
364364
osImageID = "" // the AMI will be generated later on
@@ -399,7 +399,11 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
399399
}
400400

401401
if mpool.InstanceType == "" {
402-
instanceTypes := awsdefaults.InstanceTypes(installConfig.Config.Platform.AWS.Region, installConfig.Config.ControlPlane.Architecture, configv1.HighlyAvailableTopologyMode)
402+
arch := installConfig.Config.ControlPlane.Architecture
403+
if len(installConfig.Config.Compute) > 0 {
404+
arch = installConfig.Config.Compute[0].Architecture
405+
}
406+
instanceTypes := awsdefaults.InstanceTypes(installConfig.Config.Platform.AWS.Region, arch, configv1.HighlyAvailableTopologyMode)
403407
switch pool.Name {
404408
case types.MachinePoolEdgeRoleName:
405409
ok := awsSetPreferredInstanceByEdgeZone(ctx, instanceTypes, installConfig.AWS, zones)
@@ -488,7 +492,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
488492
}
489493

490494
useImageGallery := ic.Platform.Azure.CloudName != azuretypes.StackCloud
491-
sets, err := azure.MachineSets(clusterID.InfraID, ic, &pool, string(*rhcosImage), "worker", workerUserDataSecretName, capabilities, useImageGallery)
495+
sets, err := azure.MachineSets(clusterID.InfraID, ic, &pool, rhcosImage.Compute, "worker", workerUserDataSecretName, capabilities, useImageGallery)
492496
if err != nil {
493497
return errors.Wrap(err, "failed to create worker machine objects")
494498
}
@@ -523,7 +527,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
523527
mpool.Zones = azs
524528
}
525529
pool.Platform.GCP = &mpool
526-
sets, err := gcp.MachineSets(clusterID.InfraID, ic, &pool, string(*rhcosImage), "worker", workerUserDataSecretName)
530+
sets, err := gcp.MachineSets(clusterID.InfraID, ic, &pool, rhcosImage.Compute, "worker", workerUserDataSecretName)
527531
if err != nil {
528532
return errors.Wrap(err, "failed to create worker machine objects")
529533
}
@@ -565,7 +569,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
565569
mpool.Set(pool.Platform.OpenStack)
566570
pool.Platform.OpenStack = &mpool
567571

568-
imageName, _ := rhcosutils.GenerateOpenStackImageName(string(*rhcosImage), clusterID.InfraID)
572+
imageName, _ := rhcosutils.GenerateOpenStackImageName(rhcosImage.Compute, clusterID.InfraID)
569573

570574
sets, err := openstack.MachineSets(ctx, clusterID.InfraID, ic, &pool, imageName, "worker", workerUserDataSecretName)
571575
if err != nil {
@@ -615,7 +619,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
615619
mpool.Set(pool.Platform.Ovirt)
616620
pool.Platform.Ovirt = &mpool
617621

618-
imageName, _ := rhcosutils.GenerateOpenStackImageName(string(*rhcosImage), clusterID.InfraID)
622+
imageName, _ := rhcosutils.GenerateOpenStackImageName(rhcosImage.Compute, clusterID.InfraID)
619623

620624
sets, err := ovirt.MachineSets(clusterID.InfraID, ic, &pool, imageName, "worker", workerUserDataSecretName)
621625
if err != nil {

pkg/asset/machines/worker_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -160,7 +160,7 @@ spec:
160160
},
161161
},
162162
}),
163-
(*rhcos.Image)(pointer.StringPtr("test-image")),
163+
rhcos.MakeAsset("test-image"),
164164
(*rhcos.Release)(pointer.StringPtr("412.86.202208101040-0")),
165165
&machine.Worker{
166166
File: &asset.File{
@@ -222,7 +222,7 @@ func TestComputeIsNotModified(t *testing.T) {
222222
InfraID: "test-infra-id",
223223
},
224224
installConfig,
225-
(*rhcos.Image)(pointer.StringPtr("test-image")),
225+
rhcos.MakeAsset("test-image"),
226226
(*rhcos.Release)(pointer.StringPtr("412.86.202208101040-0")),
227227
&machine.Worker{
228228
File: &asset.File{

pkg/asset/manifests/clusterapi/cluster.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func (c *Cluster) Generate(_ context.Context, dependencies asset.Parents) error
135135
}
136136
case powervstypes.Name:
137137
var err error
138-
osImage := strings.SplitN(string(*rhcosImage), "/", 2)
138+
osImage := strings.SplitN(rhcosImage.ControlPlane, "/", 2)
139139
out, err = powervs.GenerateClusterAssets(installConfig, clusterID, osImage[0], osImage[1])
140140
if err != nil {
141141
return fmt.Errorf("failed to generate PowerVS manifests %w", err)

pkg/asset/manifests/openshift.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -267,7 +267,7 @@ func (o *Openshift) Generate(ctx context.Context, dependencies asset.Parents) er
267267
case baremetaltypes.Name:
268268
bmTemplateData := baremetalTemplateData{
269269
Baremetal: installConfig.Config.Platform.BareMetal,
270-
ProvisioningOSDownloadURL: string(*rhcosImage),
270+
ProvisioningOSDownloadURL: rhcosImage.ControlPlane,
271271
}
272272
assetData["99_baremetal-provisioning-config.yaml"] = applyTemplateData(baremetalConfig.Files()[0].Data, bmTemplateData)
273273
}

0 commit comments

Comments
 (0)