@@ -304,7 +304,7 @@ func ValidateDirectory(dir string) error {
304
304
}
305
305
306
306
func loadPayloadMetadata (releaseDir , releaseImage string ) (* Update , error ) {
307
- release , arch , err := loadReleaseFromMetadata (releaseDir )
307
+ release , err := loadReleaseFromMetadata (releaseDir )
308
308
if err != nil {
309
309
return nil , err
310
310
}
@@ -315,6 +315,12 @@ func loadPayloadMetadata(releaseDir, releaseImage string) (*Update, error) {
315
315
return nil , err
316
316
}
317
317
318
+ arch := string (release .Architecture )
319
+ if arch == "" {
320
+ arch = runtime .GOARCH
321
+ klog .V (2 ).Infof ("Architecture from %s (%s) retrieved from runtime: %q" , cincinnatiJSONFile , release .Version , arch )
322
+ }
323
+
318
324
if imageRef .Name != release .Version {
319
325
return nil , fmt .Errorf ("Version from %s (%s) differs from %s (%s)" , imageReferencesFile , imageRef .Name , cincinnatiJSONFile , release .Version )
320
326
}
@@ -352,52 +358,49 @@ func loadPayloadTasks(releaseDir, cvoDir, releaseImage, clusterProfile string) [
352
358
}}
353
359
}
354
360
355
- func loadReleaseFromMetadata (releaseDir string ) (configv1.Release , string , error ) {
361
+ func loadReleaseFromMetadata (releaseDir string ) (configv1.Release , error ) {
356
362
var release configv1.Release
357
363
path := filepath .Join (releaseDir , cincinnatiJSONFile )
358
364
data , err := os .ReadFile (path )
359
365
if err != nil {
360
- return release , "" , err
366
+ return release , err
361
367
}
362
368
363
369
var metadata metadata
364
370
if err := json .Unmarshal (data , & metadata ); err != nil {
365
- return release , "" , fmt .Errorf ("unmarshal Cincinnati metadata: %w" , err )
371
+ return release , fmt .Errorf ("unmarshal Cincinnati metadata: %w" , err )
366
372
}
367
373
368
374
if metadata .Kind != "cincinnati-metadata-v0" {
369
- return release , "" , fmt .Errorf ("unrecognized Cincinnati metadata kind %q" , metadata .Kind )
375
+ return release , fmt .Errorf ("unrecognized Cincinnati metadata kind %q" , metadata .Kind )
370
376
}
371
377
372
378
if metadata .Version == "" {
373
- return release , "" , errors .New ("missing required Cincinnati metadata version" )
379
+ return release , errors .New ("missing required Cincinnati metadata version" )
374
380
}
375
381
376
382
if _ , err := semver .Parse (metadata .Version ); err != nil {
377
- return release , "" , fmt .Errorf ("Cincinnati metadata version %q is not a valid semantic version: %v" , metadata .Version , err )
383
+ return release , fmt .Errorf ("Cincinnati metadata version %q is not a valid semantic version: %v" , metadata .Version , err )
378
384
}
379
385
380
386
release .Version = metadata .Version
381
387
382
- var arch string
383
- if archInterface , ok := metadata .Metadata ["release.openshift.io/architecture" ]; ok {
384
- if archString , ok := archInterface .(string ); ok {
385
- if archString == releaseMultiArchID {
386
- release .Architecture = configv1 .ClusterVersionArchitectureMulti
387
- arch = string (release .Architecture )
388
- } else {
389
- return release , "" , fmt .Errorf ("Architecture from %s (%s) contains invalid value: %q. Valid value is %q." ,
390
- cincinnatiJSONFile , release .Version , archString , releaseMultiArchID )
391
- }
392
- klog .V (2 ).Infof ("Architecture from %s (%s) is multi: %q" , cincinnatiJSONFile , release .Version , archString )
393
- } else {
394
- return release , "" , fmt .Errorf ("Architecture from %s (%s) is not a string: %v" ,
395
- cincinnatiJSONFile , release .Version , archInterface )
388
+ if archRaw , hasArch := metadata .Metadata ["release.openshift.io/architecture" ]; hasArch {
389
+ arch , isString := archRaw .(string )
390
+ if ! isString {
391
+ return release , fmt .Errorf ("Architecture from %s (%s) is not a string: %v" ,
392
+ cincinnatiJSONFile , release .Version , archRaw )
396
393
}
397
- } else {
398
- arch = runtime .GOARCH
399
- klog .V (2 ).Infof ("Architecture from %s (%s) retrieved from runtime: %q" , cincinnatiJSONFile , release .Version , arch )
394
+
395
+ if arch != releaseMultiArchID {
396
+ return release , fmt .Errorf ("Architecture from %s (%s) contains invalid value: %q. Valid value is %q." ,
397
+ cincinnatiJSONFile , release .Version , arch , releaseMultiArchID )
398
+ }
399
+
400
+ release .Architecture = configv1 .ClusterVersionArchitectureMulti
401
+ klog .V (2 ).Infof ("Architecture from %s (%s) is multi: %q" , cincinnatiJSONFile , release .Version , arch )
400
402
}
403
+
401
404
if urlInterface , ok := metadata .Metadata ["url" ]; ok {
402
405
if urlString , ok := urlInterface .(string ); ok {
403
406
release .URL = configv1 .URL (urlString )
@@ -414,7 +417,7 @@ func loadReleaseFromMetadata(releaseDir string) (configv1.Release, string, error
414
417
}
415
418
}
416
419
417
- return release , arch , nil
420
+ return release , nil
418
421
}
419
422
420
423
func loadImageReferences (releaseDir string ) (* imagev1.ImageStream , error ) {
0 commit comments