Skip to content

Commit 160156e

Browse files
committed
asset: rhcos: make asset multi-arch aware
For some platforms, we will need to be able to get different RHCOS images based on the architecture of the nodes. Currently it's assumed that the same image is used for all nodes.
1 parent d9e5e66 commit 160156e

File tree

16 files changed

+62
-44
lines changed

16 files changed

+62
-44
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: 5 additions & 5 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
@@ -488,7 +488,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
488488
}
489489

490490
useImageGallery := ic.Platform.Azure.CloudName != azuretypes.StackCloud
491-
sets, err := azure.MachineSets(clusterID.InfraID, ic, &pool, string(*rhcosImage), "worker", workerUserDataSecretName, capabilities, useImageGallery)
491+
sets, err := azure.MachineSets(clusterID.InfraID, ic, &pool, rhcosImage.Compute, "worker", workerUserDataSecretName, capabilities, useImageGallery)
492492
if err != nil {
493493
return errors.Wrap(err, "failed to create worker machine objects")
494494
}
@@ -523,7 +523,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
523523
mpool.Zones = azs
524524
}
525525
pool.Platform.GCP = &mpool
526-
sets, err := gcp.MachineSets(clusterID.InfraID, ic, &pool, string(*rhcosImage), "worker", workerUserDataSecretName)
526+
sets, err := gcp.MachineSets(clusterID.InfraID, ic, &pool, rhcosImage.Compute, "worker", workerUserDataSecretName)
527527
if err != nil {
528528
return errors.Wrap(err, "failed to create worker machine objects")
529529
}
@@ -565,7 +565,7 @@ func (w *Worker) Generate(ctx context.Context, dependencies asset.Parents) error
565565
mpool.Set(pool.Platform.OpenStack)
566566
pool.Platform.OpenStack = &mpool
567567

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

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

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

620620
sets, err := ovirt.MachineSets(clusterID.InfraID, ic, &pool, imageName, "worker", workerUserDataSecretName)
621621
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)