From f0736e3804fafa47b8b7c2b05177feccfa738452 Mon Sep 17 00:00:00 2001 From: Lukas Zapletal Date: Thu, 21 Nov 2024 12:47:20 +0100 Subject: [PATCH] blueprint: add cacert customization --- internal/blueprint/blueprint.go | 7 + internal/blueprint/blueprint_convert_test.go | 6 + internal/blueprint/customizations.go | 5 + internal/cloudapi/v2/compose.go | 6 + internal/cloudapi/v2/openapi.v2.gen.go | 381 ++++++++++--------- internal/cloudapi/v2/openapi.v2.yml | 15 + test/cases/api.sh | 12 + test/cases/api/aws.sh | 2 +- test/cases/api/azure.sh | 2 +- test/cases/api/common/common.sh | 22 ++ test/cases/api/common/s3.sh | 2 +- 11 files changed, 271 insertions(+), 189 deletions(-) diff --git a/internal/blueprint/blueprint.go b/internal/blueprint/blueprint.go index 80a13692a4..935e1d0d7c 100644 --- a/internal/blueprint/blueprint.go +++ b/internal/blueprint/blueprint.go @@ -406,6 +406,13 @@ func Convert(bp Blueprint) iblueprint.Blueprint { customizations.RHSM = &irhsm } + + if ca := c.CACerts; ca != nil { + ica := iblueprint.CACustomization{ + PEMCerts: ca.PEMCerts, + } + customizations.CACerts = &ica + } } ibp := iblueprint.Blueprint{ diff --git a/internal/blueprint/blueprint_convert_test.go b/internal/blueprint/blueprint_convert_test.go index d707a830bc..88c49d6678 100644 --- a/internal/blueprint/blueprint_convert_test.go +++ b/internal/blueprint/blueprint_convert_test.go @@ -211,6 +211,9 @@ func TestConvert(t *testing.T) { }, }, }, + CACerts: &CACustomization{ + PEMCerts: []string{"pem-cert"}, + }, }, Distro: "distro", }, @@ -401,6 +404,9 @@ func TestConvert(t *testing.T) { }, }, }, + CACerts: &iblueprint.CACustomization{ + PEMCerts: []string{"pem-cert"}, + }, }, Distro: "distro", }, diff --git a/internal/blueprint/customizations.go b/internal/blueprint/customizations.go index 09ce6684ba..9e2f96c5c1 100644 --- a/internal/blueprint/customizations.go +++ b/internal/blueprint/customizations.go @@ -31,6 +31,7 @@ type Customizations struct { Installer *InstallerCustomization `json:"installer,omitempty" toml:"installer,omitempty"` RPM *RPMCustomization `json:"rpm,omitempty" toml:"rpm,omitempty"` RHSM *RHSMCustomization `json:"rhsm,omitempty" toml:"rhsm,omitempty"` + CACerts *CACustomization `json:"cacerts,omitempty" toml:"cacerts,omitempty"` } type IgnitionCustomization struct { @@ -135,6 +136,10 @@ type OpenSCAPJSONTailoringCustomizations struct { Filepath string `json:"filepath,omitempty" toml:"filepath,omitempty"` } +type CACustomization struct { + PEMCerts []string `json:"pem_certs,omitempty" toml:"pem_certs,omitempty"` +} + type CustomizationError struct { Message string } diff --git a/internal/cloudapi/v2/compose.go b/internal/cloudapi/v2/compose.go index 5d270f6af1..0bbcf07b1c 100644 --- a/internal/cloudapi/v2/compose.go +++ b/internal/cloudapi/v2/compose.go @@ -1015,6 +1015,12 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep bp.Customizations.RHSM = bpRhsm } + if cacerts := request.Customizations.Cacerts; cacerts != nil { + bp.Customizations.CACerts = &blueprint.CACustomization{ + PEMCerts: cacerts.PemCerts, + } + } + // Did bp.Customizations get set at all? If not, set it back to nil if reflect.DeepEqual(*bp.Customizations, blueprint.Customizations{}) { bp.Customizations = nil diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index 580cb00cbb..779680745b 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -271,6 +271,8 @@ type Blueprint struct { // BlueprintCustomizations defines model for BlueprintCustomizations. type BlueprintCustomizations struct { + Cacerts *CACertsCustomization `json:"cacerts,omitempty"` + // Directories to create in the final artifact Directories *[]Directory `json:"directories,omitempty"` @@ -431,6 +433,11 @@ type BlueprintUser struct { Uid *int `json:"uid,omitempty"` } +// CACertsCustomization defines model for CACertsCustomization. +type CACertsCustomization struct { + PemCerts []string `json:"pem_certs"` +} + // CloneComposeBody defines model for CloneComposeBody. type CloneComposeBody interface{} @@ -576,7 +583,8 @@ type CustomRepository struct { // Customizations defines model for Customizations. type Customizations struct { - Containers *[]Container `json:"containers,omitempty"` + Cacerts *CACertsCustomization `json:"cacerts,omitempty"` + Containers *[]Container `json:"containers,omitempty"` // Extra repositories for packages specified in customizations. These // repositories will be used to depsolve and retrieve packages. Additionally, @@ -1509,191 +1517,192 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "ygAA", + "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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 65496a7c97..959a3416c8 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -1175,6 +1175,17 @@ components: properties: config: $ref: '#/components/schemas/RHSMConfig' + CACertsCustomization: + type: object + additionalProperties: false + required: + - pem_certs + properties: + pem_certs: + type: array + example: ['---BEGIN CERTIFICATE---\nMIIC0DCCAbigAwIBAgIUI...\n---END CERTIFICATE---'] + items: + type: string UploadTarget: type: object required: @@ -1518,6 +1529,8 @@ components: $ref: '#/components/schemas/RPMCustomization' rhsm: $ref: '#/components/schemas/RHSMCustomization' + cacerts: + $ref: '#/components/schemas/CACertsCustomization' SSHKey: type: object additionalProperties: false @@ -1666,6 +1679,8 @@ components: $ref: '#/components/schemas/RPMCustomization' rhsm: $ref: '#/components/schemas/RHSMCustomization' + cacerts: + $ref: '#/components/schemas/CACertsCustomization' Container: type: object required: diff --git a/test/cases/api.sh b/test/cases/api.sh index ba9922fdd3..06f4f4b5c1 100755 --- a/test/cases/api.sh +++ b/test/cases/api.sh @@ -484,6 +484,18 @@ EOF ) export RHSM_CUSTOMIZATION_BLOCK +# Test certificate with common name "Test CA for osbuild", serial 27894af897dd2423607045716438a725f28a6d0b valid until 2298 +CACERTS_CUSTOMIZATION_BLOCK=$(cat <