From 8644d6a07bb5daf1837a9c08c1c24b7ba9c34c62 Mon Sep 17 00:00:00 2001 From: "Brian C. Lane" Date: Tue, 17 Sep 2024 13:55:28 -0700 Subject: [PATCH] cloudapi: Add architecture support to the optional Blueprint The blueprint may have the architecture set. If set it must match the architecture set by the request. This ensures that clients have correctly set the architecture and prevents unexpectedly ignoring the blueprint architecture. With the WELR API the blueprint architecture would override the host arch. But with the Cloud API there is no host arch to override so the request must have the expected architecture set as part of the request. Related: RHEL-60125 --- internal/cloudapi/v2/compose.go | 7 + internal/cloudapi/v2/compose_test.go | 75 +++++ internal/cloudapi/v2/openapi.v2.gen.go | 362 +++++++++++++------------ internal/cloudapi/v2/openapi.v2.yml | 6 + 4 files changed, 271 insertions(+), 179 deletions(-) diff --git a/internal/cloudapi/v2/compose.go b/internal/cloudapi/v2/compose.go index 9f6d91d8f1..0f64daec33 100644 --- a/internal/cloudapi/v2/compose.go +++ b/internal/cloudapi/v2/compose.go @@ -518,6 +518,9 @@ func ConvertRequestBP(rbp Blueprint) (blueprint.Blueprint, error) { if rbp.Distro != nil { bp.Distro = *rbp.Distro } + if rbp.Architecture != nil { + bp.Arch = *rbp.Architecture + } if rbp.Packages != nil { for _, pkg := range *rbp.Packages { @@ -1154,6 +1157,10 @@ func (request *ComposeRequest) GetImageRequests(distroFactory *distrofactory.Fac } var irs []imageRequest for _, ir := range *request.ImageRequests { + // If there is an architecture in the blueprint it must match the request's arch + if len(bp.Arch) > 0 && ir.Architecture != bp.Arch { + return nil, HTTPError(ErrorMismatchedArchitecture) + } arch, err := distribution.GetArch(ir.Architecture) if err != nil { return nil, HTTPError(ErrorUnsupportedArchitecture) diff --git a/internal/cloudapi/v2/compose_test.go b/internal/cloudapi/v2/compose_test.go index f7f8dc7b78..49f9a294d0 100644 --- a/internal/cloudapi/v2/compose_test.go +++ b/internal/cloudapi/v2/compose_test.go @@ -848,6 +848,81 @@ func TestGetImageRequests_BlueprintDistro(t *testing.T) { assert.Equal(t, got[0].blueprint.Distro, "fedora-39") } +// TestGetImageRequests_BlueprintArchEmpty test blueprint with no arch +func TestGetImageRequests_BlueprintArchEmpty(t *testing.T) { + uo := UploadOptions(struct{}{}) + request := &ComposeRequest{ + Distribution: "fedora-40", + ImageRequest: &ImageRequest{ + Architecture: "x86_64", + ImageType: ImageTypesAws, + UploadOptions: &uo, + Repositories: []Repository{}, + }, + Blueprint: &Blueprint{ + Name: "arch-test", + }, + } + // NOTE: current directory is the location of this file, back up so it can use ./repositories/ + rr, err := reporegistry.New([]string{"../../../"}) + require.NoError(t, err) + got, err := request.GetImageRequests(distrofactory.NewDefault(), rr) + assert.NoError(t, err) + require.Len(t, got, 1) + require.Greater(t, len(got[0].repositories), 0) + assert.Equal(t, got[0].imageType.Arch().Name(), "x86_64") +} + +// TestGetImageRequests_BlueprintArch test to make sure matching arch works +func TestGetImageRequests_BlueprintArch(t *testing.T) { + uo := UploadOptions(struct{}{}) + request := &ComposeRequest{ + Distribution: "fedora-40", + ImageRequest: &ImageRequest{ + Architecture: "x86_64", + ImageType: ImageTypesAws, + UploadOptions: &uo, + Repositories: []Repository{}, + }, + Blueprint: &Blueprint{ + Name: "arch-test", + Architecture: common.ToPtr("x86_64"), + }, + } + // NOTE: current directory is the location of this file, back up so it can use ./repositories/ + rr, err := reporegistry.New([]string{"../../../"}) + require.NoError(t, err) + got, err := request.GetImageRequests(distrofactory.NewDefault(), rr) + assert.NoError(t, err) + require.Len(t, got, 1) + require.Greater(t, len(got[0].repositories), 0) + assert.Equal(t, got[0].imageType.Arch().Name(), "x86_64") +} + +// TestGetImageRequests_BlueprintArchError test to make sure mismatched arch returns error +func TestGetImageRequests_BlueprintArchError(t *testing.T) { + uo := UploadOptions(struct{}{}) + request := &ComposeRequest{ + Distribution: "fedora-40", + ImageRequest: &ImageRequest{ + Architecture: "x86_64", + ImageType: ImageTypesAws, + UploadOptions: &uo, + Repositories: []Repository{}, + }, + Blueprint: &Blueprint{ + Name: "arch-test", + Architecture: common.ToPtr("aarch64"), + }, + } + // NOTE: current directory is the location of this file, back up so it can use ./repositories/ + rr, err := reporegistry.New([]string{"../../../"}) + require.NoError(t, err) + _, err = request.GetImageRequests(distrofactory.NewDefault(), rr) + require.Error(t, err) + assert.Equal(t, HTTPError(ErrorMismatchedArchitecture), err) +} + func TestOpenSCAPTailoringOptions(t *testing.T) { cr := ComposeRequest{ Customizations: &Customizations{ diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index d8a2c4318f..a53ccdfbae 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -248,6 +248,10 @@ type AzureUploadStatus struct { // Blueprint defines model for Blueprint. type Blueprint struct { + // Architecture to use for the compose. If left empty the host arch + // will be used. + Architecture *string `json:"architecture,omitempty"` + // Container images to embed into the final artfact Containers *[]Container `json:"containers,omitempty"` Customizations *BlueprintCustomizations `json:"customizations,omitempty"` @@ -1730,185 +1734,185 @@ var swaggerSpec = []string{ "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", - "0o+Hmjf8w2nWjfP12/8PAAD//8sZBmaa4QAA", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/internal/cloudapi/v2/openapi.v2.yml b/internal/cloudapi/v2/openapi.v2.yml index a6d90f430c..dbfbf0e03c 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -1603,6 +1603,12 @@ components: description: | The distribution to use for the compose. If left empty the host distro will be used. + architecture: + type: string + example: 'x86_64' + description: | + Architecture to use for the compose. If left empty the host arch + will be used. packages: type: array description: Packages to be installed