diff --git a/go.mod b/go.mod index a826ceb827..bbe6a0e58c 100644 --- a/go.mod +++ b/go.mod @@ -49,6 +49,7 @@ require ( github.com/osbuild/images v0.99.0 github.com/osbuild/osbuild-composer/pkg/splunk_logger v0.0.0-20240814102216-0239db53236d github.com/osbuild/pulp-client v0.1.0 + github.com/pkg/errors v0.9.1 github.com/prometheus/client_golang v1.20.2 github.com/segmentio/ksuid v1.0.4 github.com/sirupsen/logrus v1.9.3 @@ -201,7 +202,6 @@ require ( github.com/opencontainers/selinux v1.11.0 // indirect github.com/ostreedev/ostree-go v0.0.0-20210805093236-719684c64e4f // indirect github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect - github.com/pkg/errors v0.9.1 // indirect github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/proglottis/gpgme v0.1.3 // indirect diff --git a/internal/cloudapi/v2/handler.go b/internal/cloudapi/v2/handler.go index 34ecd88212..e5c77bc9fc 100644 --- a/internal/cloudapi/v2/handler.go +++ b/internal/cloudapi/v2/handler.go @@ -1354,3 +1354,38 @@ func uploadStatusFromJobStatus(js *worker.JobStatus, je *clienterrors.Error) Upl } return UploadStatusValueSuccess } + +// GetDistributionList returns the list of all supported distribution repositories +// It is arranged by distro name -> architecture -> image type +func (h *apiHandlers) GetDistributionList(ctx echo.Context) error { + distros := make(map[string]map[string]map[string][]rpmmd.RepoConfig) + distroNames := h.server.repos.ListDistros() + sort.Strings(distroNames) + for _, distroName := range distroNames { + distro := h.server.distros.GetDistro(distroName) + if distro == nil { + continue + } + + for _, archName := range distro.ListArches() { + arch, _ := distro.GetArch(archName) + for _, imageType := range arch.ListImageTypes() { + repos, err := h.server.repos.ReposByImageTypeName(distroName, archName, imageType) + if err != nil { + continue + } + + if _, ok := distros[distroName]; !ok { + distros[distroName] = make(map[string]map[string][]rpmmd.RepoConfig) + } + if _, ok := distros[distroName][archName]; !ok { + distros[distroName][archName] = make(map[string][]rpmmd.RepoConfig) + } + + distros[distroName][archName][imageType] = repos + } + } + } + + return ctx.JSON(http.StatusOK, distros) +} diff --git a/internal/cloudapi/v2/openapi.v2.gen.go b/internal/cloudapi/v2/openapi.v2.gen.go index 580cb00cbb..006251b893 100644 --- a/internal/cloudapi/v2/openapi.v2.gen.go +++ b/internal/cloudapi/v2/openapi.v2.gen.go @@ -7,6 +7,7 @@ import ( "bytes" "compress/gzip" "encoding/base64" + "encoding/json" "fmt" "net/http" "net/url" @@ -16,6 +17,7 @@ import ( "github.com/deepmap/oapi-codegen/pkg/runtime" "github.com/getkin/kin-openapi/openapi3" "github.com/labstack/echo/v4" + "github.com/pkg/errors" ) const ( @@ -666,6 +668,16 @@ type Directory struct { User *interface{} `json:"user,omitempty"` } +// DistributionList defines model for DistributionList. +type DistributionList struct { + Map *DistributionList_Map `json:"map,omitempty"` +} + +// DistributionList_Map defines model for DistributionList.Map. +type DistributionList_Map struct { + AdditionalProperties map[string]interface{} `json:"-"` +} + // Error defines model for Error. type Error struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) @@ -1237,6 +1249,59 @@ type PostComposeJSONRequestBody PostComposeJSONBody // PostCloneComposeJSONRequestBody defines body for PostCloneCompose for application/json ContentType. type PostCloneComposeJSONRequestBody PostCloneComposeJSONBody +// Getter for additional properties for DistributionList_Map. Returns the specified +// element and whether it was found +func (a DistributionList_Map) Get(fieldName string) (value interface{}, found bool) { + if a.AdditionalProperties != nil { + value, found = a.AdditionalProperties[fieldName] + } + return +} + +// Setter for additional properties for DistributionList_Map +func (a *DistributionList_Map) Set(fieldName string, value interface{}) { + if a.AdditionalProperties == nil { + a.AdditionalProperties = make(map[string]interface{}) + } + a.AdditionalProperties[fieldName] = value +} + +// Override default JSON handling for DistributionList_Map to handle AdditionalProperties +func (a *DistributionList_Map) UnmarshalJSON(b []byte) error { + object := make(map[string]json.RawMessage) + err := json.Unmarshal(b, &object) + if err != nil { + return err + } + + if len(object) != 0 { + a.AdditionalProperties = make(map[string]interface{}) + for fieldName, fieldBuf := range object { + var fieldVal interface{} + err := json.Unmarshal(fieldBuf, &fieldVal) + if err != nil { + return errors.Wrap(err, fmt.Sprintf("error unmarshaling field %s", fieldName)) + } + a.AdditionalProperties[fieldName] = fieldVal + } + } + return nil +} + +// Override default JSON handling for DistributionList_Map to handle AdditionalProperties +func (a DistributionList_Map) MarshalJSON() ([]byte, error) { + var err error + object := make(map[string]json.RawMessage) + + for fieldName, field := range a.AdditionalProperties { + object[fieldName], err = json.Marshal(field) + if err != nil { + return nil, errors.Wrap(err, fmt.Sprintf("error marshaling '%s'", fieldName)) + } + } + return json.Marshal(object) +} + // ServerInterface represents all server handlers. type ServerInterface interface { // The status of a cloned compose @@ -1263,6 +1328,9 @@ type ServerInterface interface { // Get the SBOMs for a compose. // (GET /composes/{id}/sboms) GetComposeSBOMs(ctx echo.Context, id string) error + // Get all of the supported distribution repository details + // (GET /distributions) + GetDistributionList(ctx echo.Context) error // Get a list of all possible errors // (GET /errors) GetErrorList(ctx echo.Context, params GetErrorListParams) error @@ -1408,6 +1476,17 @@ func (w *ServerInterfaceWrapper) GetComposeSBOMs(ctx echo.Context) error { return err } +// GetDistributionList converts echo context to params. +func (w *ServerInterfaceWrapper) GetDistributionList(ctx echo.Context) error { + var err error + + ctx.Set(BearerScopes, []string{""}) + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.GetDistributionList(ctx) + return err +} + // GetErrorList converts echo context to params. func (w *ServerInterfaceWrapper) GetErrorList(ctx echo.Context) error { var err error @@ -1500,6 +1579,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL router.GET(baseURL+"/composes/:id/manifests", wrapper.GetComposeManifests) router.GET(baseURL+"/composes/:id/metadata", wrapper.GetComposeMetadata) router.GET(baseURL+"/composes/:id/sboms", wrapper.GetComposeSBOMs) + router.GET(baseURL+"/distributions", wrapper.GetDistributionList) router.GET(baseURL+"/errors", wrapper.GetErrorList) router.GET(baseURL+"/errors/:id", wrapper.GetError) router.GET(baseURL+"/openapi", wrapper.GetOpenapi) @@ -1509,191 +1589,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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", + "//+w01dKTc0AAA==", } // 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..29f09558e3 100644 --- a/internal/cloudapi/v2/openapi.v2.yml +++ b/internal/cloudapi/v2/openapi.v2.yml @@ -397,6 +397,27 @@ paths: schema: $ref: '#/components/schemas/Error' + /distributions: + get: + operationId: getDistributionList + summary: |- + Get all of the supported distribution repository details + security: + - Bearer: [] + responses: + '200': + description: Distribution repositories + content: + application/json: + schema: + $ref: '#/components/schemas/DistributionList' + '500': + description: Unexpected error occurred + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /errors/{id}: get: operationId: getError @@ -548,6 +569,21 @@ components: items: $ref: '#/components/schemas/Error' + DistributionList: + properties: + map: + type: object + additionalProperties: + map: + type: object + additionalProperties: + map: + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/BlueprintRepository' + ComposeStatus: allOf: - $ref: '#/components/schemas/ObjectReference'