From 241aae6fd4631d5dd0a7dd0e519a37f4bb9ab1a9 Mon Sep 17 00:00:00 2001 From: Sanne Raymaekers Date: Tue, 11 Mar 2025 15:12:38 +0100 Subject: [PATCH] cloudapi: support dnf modules Exposes enabled modules in the api. --- internal/cloudapi/v2/compose.go | 18 ++ internal/cloudapi/v2/depsolve.go | 8 +- internal/cloudapi/v2/openapi.v2.gen.go | 368 +++++++++++++------------ internal/cloudapi/v2/openapi.v2.yml | 25 ++ 4 files changed, 240 insertions(+), 179 deletions(-) diff --git a/internal/cloudapi/v2/compose.go b/internal/cloudapi/v2/compose.go index 9f6d91d8f..2d71b2eb6 100644 --- a/internal/cloudapi/v2/compose.go +++ b/internal/cloudapi/v2/compose.go @@ -539,6 +539,15 @@ func ConvertRequestBP(rbp Blueprint) (blueprint.Blueprint, error) { } } + if rbp.EnabledModules != nil { + for _, em := range *rbp.EnabledModules { + bp.EnabledModules = append(bp.EnabledModules, blueprint.EnabledModule{ + Name: em.Name, + Stream: em.Stream, + }) + } + } + if rbp.Groups != nil { for _, group := range *rbp.Groups { bp.Groups = append(bp.Groups, blueprint.Group{ @@ -614,6 +623,15 @@ func (request *ComposeRequest) GetBlueprintFromCustomizations() (blueprint.Bluep } } + if request.Customizations.EnabledModules != nil { + for _, em := range *request.Customizations.EnabledModules { + bp.EnabledModules = append(bp.EnabledModules, blueprint.EnabledModule{ + Name: em.Name, + Stream: em.Stream, + }) + } + } + if request.Customizations.Containers != nil { for _, c := range *request.Customizations.Containers { bc := blueprint.Container{ diff --git a/internal/cloudapi/v2/depsolve.go b/internal/cloudapi/v2/depsolve.go index 25d8388f0..1fbc62e21 100644 --- a/internal/cloudapi/v2/depsolve.go +++ b/internal/cloudapi/v2/depsolve.go @@ -58,7 +58,13 @@ func (request *DepsolveRequest) Depsolve(df *distrofactory.Factory, rr *reporegi // Send the depsolve request to the worker packageSet := make(map[string][]rpmmd.PackageSet, 1) - packageSet["depsolve"] = []rpmmd.PackageSet{{Include: bp.GetPackages(), Repositories: repos}} + packageSet["depsolve"] = []rpmmd.PackageSet{ + { + Include: bp.GetPackages(), + EnabledModules: bp.GetEnabledModules(), + Repositories: repos, + }, + } depsolveJobID, err := workers.EnqueueDepsolve(&worker.DepsolveJob{ PackageSets: packageSet, diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index 01abd5e16..ee4373042 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -255,7 +255,8 @@ type Blueprint struct { // The distribution to use for the compose. If left empty the host // distro will be used. - Distro *string `json:"distro,omitempty"` + Distro *string `json:"distro,omitempty"` + EnabledModules *[]Module `json:"enabled_modules,omitempty"` // Package groups to be installed Groups *[]PackageGroup `json:"groups,omitempty"` @@ -603,6 +604,7 @@ type Customizations struct { // on the image CustomRepositories *[]CustomRepository `json:"custom_repositories,omitempty"` Directories *[]Directory `json:"directories,omitempty"` + EnabledModules *[]Module `json:"enabled_modules,omitempty"` // FIDO device onboard configuration Fdo *FDO `json:"fdo,omitempty"` @@ -1000,6 +1002,15 @@ type Locale struct { Languages *[]string `json:"languages,omitempty"` } +// Module defines model for Module. +type Module struct { + // Name of the module to enable. + Name string `json:"name"` + + // Stream to enable. + Stream string `json:"stream"` +} + // OCIUploadOptions defines model for OCIUploadOptions. type OCIUploadOptions map[string]interface{} @@ -1756,183 +1767,184 @@ var swaggerSpec = []string{ "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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 85226e830..5bbbdc95e 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -1673,6 +1673,10 @@ components: An alias for packages, retained for backwards compatability items: $ref: '#/components/schemas/Package' + enabled_modules: + type: array + items: + $ref: '#/components/schemas/Module' groups: type: array description: Package groups to be installed @@ -1818,6 +1822,23 @@ components: type: string example: 'anaconda-tools' description: Package group name + Module: + type: object + required: + - name + - stream + additionalProperties: false + properties: + name: + type: string + example: 'nodejs' + description: | + Name of the module to enable. + stream: + type: string + example: '22' + description: | + Stream to enable. Customizations: type: object additionalProperties: false @@ -1844,6 +1865,10 @@ components: example: ['postgres'] items: type: string + enabled_modules: + type: array + items: + $ref: '#/components/schemas/Module' users: type: array items: