// Package v2 provides primitives to interact with the openapi HTTP API. // // Code generated by github.com/deepmap/oapi-codegen version v1.8.2 DO NOT EDIT. package v2 import ( "bytes" "compress/gzip" "encoding/base64" "fmt" "net/http" "net/url" "path" "strings" "github.com/deepmap/oapi-codegen/pkg/runtime" "github.com/getkin/kin-openapi/openapi3" "github.com/labstack/echo/v4" ) const ( BearerScopes = "Bearer.Scopes" ) // Defines values for ComposeStatusValue. const ( ComposeStatusValueFailure ComposeStatusValue = "failure" ComposeStatusValuePending ComposeStatusValue = "pending" ComposeStatusValueSuccess ComposeStatusValue = "success" ) // Defines values for CustomizationsPartitioningMode. const ( CustomizationsPartitioningModeAutoLvm CustomizationsPartitioningMode = "auto-lvm" CustomizationsPartitioningModeLvm CustomizationsPartitioningMode = "lvm" CustomizationsPartitioningModeRaw CustomizationsPartitioningMode = "raw" ) // Defines values for ImageStatusValue. const ( ImageStatusValueBuilding ImageStatusValue = "building" ImageStatusValueFailure ImageStatusValue = "failure" ImageStatusValuePending ImageStatusValue = "pending" ImageStatusValueRegistering ImageStatusValue = "registering" ImageStatusValueSuccess ImageStatusValue = "success" ImageStatusValueUploading ImageStatusValue = "uploading" ) // Defines values for ImageTypes. const ( ImageTypesAws ImageTypes = "aws" ImageTypesAwsHaRhui ImageTypes = "aws-ha-rhui" ImageTypesAwsRhui ImageTypes = "aws-rhui" ImageTypesAwsSapRhui ImageTypes = "aws-sap-rhui" ImageTypesAzure ImageTypes = "azure" ImageTypesAzureEap7Rhui ImageTypes = "azure-eap7-rhui" ImageTypesAzureRhui ImageTypes = "azure-rhui" ImageTypesAzureSapRhui ImageTypes = "azure-sap-rhui" ImageTypesEdgeCommit ImageTypes = "edge-commit" ImageTypesEdgeContainer ImageTypes = "edge-container" ImageTypesEdgeInstaller ImageTypes = "edge-installer" ImageTypesGcp ImageTypes = "gcp" ImageTypesGcpRhui ImageTypes = "gcp-rhui" ImageTypesGuestImage ImageTypes = "guest-image" ImageTypesImageInstaller ImageTypes = "image-installer" ImageTypesIotCommit ImageTypes = "iot-commit" ImageTypesIotContainer ImageTypes = "iot-container" ImageTypesIotInstaller ImageTypes = "iot-installer" ImageTypesIotRawImage ImageTypes = "iot-raw-image" ImageTypesLiveInstaller ImageTypes = "live-installer" ImageTypesOci ImageTypes = "oci" ImageTypesVsphere ImageTypes = "vsphere" ImageTypesVsphereOva ImageTypes = "vsphere-ova" ImageTypesWsl ImageTypes = "wsl" ) // Defines values for UploadStatusValue. const ( UploadStatusValueFailure UploadStatusValue = "failure" UploadStatusValuePending UploadStatusValue = "pending" UploadStatusValueRunning UploadStatusValue = "running" UploadStatusValueSuccess UploadStatusValue = "success" ) // Defines values for UploadTypes. const ( UploadTypesAws UploadTypes = "aws" UploadTypesAwsS3 UploadTypes = "aws.s3" UploadTypesAzure UploadTypes = "azure" UploadTypesContainer UploadTypes = "container" UploadTypesGcp UploadTypes = "gcp" UploadTypesOciObjectstorage UploadTypes = "oci.objectstorage" UploadTypesPulpOstree UploadTypes = "pulp.ostree" ) // AWSEC2CloneCompose defines model for AWSEC2CloneCompose. type AWSEC2CloneCompose struct { Region string `json:"region"` ShareWithAccounts *[]string `json:"share_with_accounts,omitempty"` } // AWSEC2UploadOptions defines model for AWSEC2UploadOptions. type AWSEC2UploadOptions struct { Region string `json:"region"` ShareWithAccounts []string `json:"share_with_accounts"` SnapshotName *string `json:"snapshot_name,omitempty"` } // AWSEC2UploadStatus defines model for AWSEC2UploadStatus. type AWSEC2UploadStatus struct { Ami string `json:"ami"` Region string `json:"region"` } // AWSS3UploadOptions defines model for AWSS3UploadOptions. type AWSS3UploadOptions struct { // If set to false (the default value), a long, obfuscated URL // is returned. Its expiration might be sooner than for other upload // targets. // // If set to true, a shorter URL is returned and // its expiration is the same as for the other upload targets. Public *bool `json:"public,omitempty"` Region string `json:"region"` } // AWSS3UploadStatus defines model for AWSS3UploadStatus. type AWSS3UploadStatus struct { Url string `json:"url"` } // AzureUploadOptions defines model for AzureUploadOptions. type AzureUploadOptions struct { // Name of the uploaded image. It must be unique in the given resource group. // If name is omitted from the request, a random one based on a UUID is // generated. ImageName *string `json:"image_name,omitempty"` // Location of the provided resource_group, where the image should be uploaded and registered. // How to list all locations: // https://docs.microsoft.com/en-us/cli/azure/account?view=azure-cli-latest#az_account_list_locations' // If the location is not specified, it is deducted from the provided resource_group. Location *string `json:"location,omitempty"` // Name of the resource group where the image should be uploaded. ResourceGroup string `json:"resource_group"` // ID of subscription where the image should be uploaded. SubscriptionId string `json:"subscription_id"` // ID of the tenant where the image should be uploaded. // How to find it in the Azure Portal: // https://docs.microsoft.com/en-us/azure/active-directory/fundamentals/active-directory-how-to-find-tenant TenantId string `json:"tenant_id"` } // AzureUploadStatus defines model for AzureUploadStatus. type AzureUploadStatus struct { ImageName string `json:"image_name"` } // CloneComposeBody defines model for CloneComposeBody. type CloneComposeBody interface{} // CloneComposeResponse defines model for CloneComposeResponse. type CloneComposeResponse struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema Id string `json:"id"` } // CloneStatus defines model for CloneStatus. type CloneStatus struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded struct due to allOf(#/components/schemas/UploadStatus) UploadStatus `yaml:",inline"` } // ComposeId defines model for ComposeId. type ComposeId struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema Id string `json:"id"` } // ComposeLogs defines model for ComposeLogs. type ComposeLogs struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema ImageBuilds []interface{} `json:"image_builds"` Koji *KojiLogs `json:"koji,omitempty"` } // ComposeManifests defines model for ComposeManifests. type ComposeManifests struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema Manifests []interface{} `json:"manifests"` } // ComposeMetadata defines model for ComposeMetadata. type ComposeMetadata struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema // ID (hash) of the built commit OstreeCommit *string `json:"ostree_commit,omitempty"` // Package list including NEVRA Packages *[]PackageMetadata `json:"packages,omitempty"` } // ComposeRequest defines model for ComposeRequest. type ComposeRequest struct { Customizations *Customizations `json:"customizations,omitempty"` Distribution string `json:"distribution"` ImageRequest *ImageRequest `json:"image_request,omitempty"` ImageRequests *[]ImageRequest `json:"image_requests,omitempty"` Koji *Koji `json:"koji,omitempty"` } // ComposeStatus defines model for ComposeStatus. type ComposeStatus struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema ImageStatus ImageStatus `json:"image_status"` ImageStatuses *[]ImageStatus `json:"image_statuses,omitempty"` KojiStatus *KojiStatus `json:"koji_status,omitempty"` Status ComposeStatusValue `json:"status"` } // ComposeStatusError defines model for ComposeStatusError. type ComposeStatusError struct { Details *interface{} `json:"details,omitempty"` Id int `json:"id"` Reason string `json:"reason"` } // ComposeStatusValue defines model for ComposeStatusValue. type ComposeStatusValue string // Container defines model for Container. type Container struct { // Name to use for the container from the image Name *string `json:"name,omitempty"` // Reference to the container to embed Source string `json:"source"` // Control TLS verifification TlsVerify *bool `json:"tls_verify,omitempty"` } // ContainerUploadOptions defines model for ContainerUploadOptions. type ContainerUploadOptions struct { // Name for the created container image Name *string `json:"name,omitempty"` // Tag for the created container image Tag *string `json:"tag,omitempty"` } // ContainerUploadStatus defines model for ContainerUploadStatus. type ContainerUploadStatus struct { // Digest of the manifest of the uploaded container on the registry Digest string `json:"digest"` // FQDN of the uploaded image Url string `json:"url"` } // CustomRepository defines model for CustomRepository. type CustomRepository struct { Baseurl *[]string `json:"baseurl,omitempty"` CheckGpg *bool `json:"check_gpg,omitempty"` CheckRepoGpg *bool `json:"check_repo_gpg,omitempty"` Enabled *bool `json:"enabled,omitempty"` Filename *string `json:"filename,omitempty"` Gpgkey *[]string `json:"gpgkey,omitempty"` Id string `json:"id"` Metalink *string `json:"metalink,omitempty"` Mirrorlist *string `json:"mirrorlist,omitempty"` ModuleHotfixes *bool `json:"module_hotfixes,omitempty"` Name *string `json:"name,omitempty"` Priority *int `json:"priority,omitempty"` SslVerify *bool `json:"ssl_verify,omitempty"` } // Customizations defines model for Customizations. type Customizations struct { Containers *[]Container `json:"containers,omitempty"` // Extra repositories for packages specified in customizations. These // repositories will be used to depsolve and retrieve packages. Additionally, // these packages will be saved and imported to the `/etc/yum.repos.d/` directory // on the image CustomRepositories *[]CustomRepository `json:"custom_repositories,omitempty"` Directories *[]Directory `json:"directories,omitempty"` // FIDO device onboard configuration Fdo *FDO `json:"fdo,omitempty"` Files *[]File `json:"files,omitempty"` Filesystem *[]Filesystem `json:"filesystem,omitempty"` // System FIPS mode setup Fips *FIPS `json:"fips,omitempty"` // Firewalld configuration Firewall *FirewallCustomization `json:"firewall,omitempty"` // List of groups to create Groups *[]Group `json:"groups,omitempty"` // Configures the hostname Hostname *string `json:"hostname,omitempty"` // Ignition configuration Ignition *Ignition `json:"ignition,omitempty"` // Name of the installation device, currently only useful for the edge-simplified-installer type InstallationDevice *string `json:"installation_device,omitempty"` Kernel *Kernel `json:"kernel,omitempty"` // Locale configuration Locale *Locale `json:"locale,omitempty"` Openscap *OpenSCAP `json:"openscap,omitempty"` Packages *[]string `json:"packages,omitempty"` // Select how the disk image will be partitioned. 'auto-lvm' will use raw unless // there are one or more mountpoints in which case it will use LVM. 'lvm' always // uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions // even when there are one or more mountpoints. PartitioningMode *CustomizationsPartitioningMode `json:"partitioning_mode,omitempty"` // Extra repositories for packages specified in customizations. These // repositories will only be used to depsolve and retrieve packages // for the OS itself (they will not be available for the build root or // any other part of the build process). The package_sets field for these // repositories is ignored. PayloadRepositories *[]Repository `json:"payload_repositories,omitempty"` Services *Services `json:"services,omitempty"` Subscription *Subscription `json:"subscription,omitempty"` // Timezone configuration Timezone *Timezone `json:"timezone,omitempty"` Users *[]User `json:"users,omitempty"` } // Select how the disk image will be partitioned. 'auto-lvm' will use raw unless // there are one or more mountpoints in which case it will use LVM. 'lvm' always // uses LVM, even when there are no extra mountpoints. 'raw' uses raw partitions // even when there are one or more mountpoints. type CustomizationsPartitioningMode string // A custom directory to create in the final artifact. type Directory struct { // Ensure that the parent directories exist EnsureParents *bool `json:"ensure_parents,omitempty"` // Group of the directory as a group name or a gid Group *interface{} `json:"group,omitempty"` // Permissions string for the directory in octal format Mode *string `json:"mode,omitempty"` // Path to the directory Path string `json:"path"` // Owner of the directory as a user name or a uid User *interface{} `json:"user,omitempty"` } // Error defines model for Error. type Error struct { // Embedded struct due to allOf(#/components/schemas/ObjectReference) ObjectReference `yaml:",inline"` // Embedded fields due to inline allOf schema Code string `json:"code"` Details *interface{} `json:"details,omitempty"` OperationId string `json:"operation_id"` Reason string `json:"reason"` } // ErrorList defines model for ErrorList. type ErrorList struct { // Embedded struct due to allOf(#/components/schemas/List) List `yaml:",inline"` // Embedded fields due to inline allOf schema Items []Error `json:"items"` } // FIDO device onboard configuration type FDO struct { DiMfgStringTypeMacIface *string `json:"di_mfg_string_type_mac_iface,omitempty"` DiunPubKeyHash *string `json:"diun_pub_key_hash,omitempty"` DiunPubKeyInsecure *string `json:"diun_pub_key_insecure,omitempty"` DiunPubKeyRootCerts *string `json:"diun_pub_key_root_certs,omitempty"` ManufacturingServerUrl *string `json:"manufacturing_server_url,omitempty"` } // System FIPS mode setup type FIPS struct { // Enables the system FIPS mode Enabled *bool `json:"enabled,omitempty"` } // A custom file to create in the final artifact. type File struct { // Contents of the file as plain text Data *string `json:"data,omitempty"` // Ensure that the parent directories exist EnsureParents *bool `json:"ensure_parents,omitempty"` // Group of the file as a gid or a group name Group *interface{} `json:"group,omitempty"` // Permissions string for the file in octal format Mode *string `json:"mode,omitempty"` // Path to the file Path string `json:"path"` // Owner of the file as a uid or a user name User *interface{} `json:"user,omitempty"` } // Filesystem defines model for Filesystem. type Filesystem struct { // size of the filesystem in bytes MinSize uint64 `json:"min_size"` Mountpoint string `json:"mountpoint"` } // Firewalld configuration type FirewallCustomization struct { // List of ports (or port ranges) and protocols to open Ports *[]string `json:"ports,omitempty"` // Firewalld services to enable or disable Services *struct { // List of services to disable Disabled *[]string `json:"disabled,omitempty"` // List of services to enable Enabled *[]string `json:"enabled,omitempty"` } `json:"services,omitempty"` } // GCPUploadOptions defines model for GCPUploadOptions. type GCPUploadOptions struct { // Name of an existing STANDARD Storage class Bucket. Bucket *string `json:"bucket,omitempty"` // The name to use for the imported and shared Compute Engine image. // The image name must be unique within the GCP project, which is used // for the OS image upload and import. If not specified a random // 'composer-api-' string is used as the image name. ImageName *string `json:"image_name,omitempty"` // The GCP region where the OS image will be imported to and shared from. // The value must be a valid GCP location. See https://cloud.google.com/storage/docs/locations. // If not specified, the multi-region location closest to the source // (source Storage Bucket location) is chosen automatically. Region string `json:"region"` // List of valid Google accounts to share the imported Compute Engine image with. // Each string must contain a specifier of the account type. Valid formats are: // - 'user:{emailid}': An email address that represents a specific // Google account. For example, 'alice@example.com'. // - 'serviceAccount:{emailid}': An email address that represents a // service account. For example, 'my-other-app@appspot.gserviceaccount.com'. // - 'group:{emailid}': An email address that represents a Google group. // For example, 'admins@example.com'. // - 'domain:{domain}': The G Suite domain (primary) that represents all // the users of that domain. For example, 'google.com' or 'example.com'. // If not specified, the imported Compute Engine image is not shared with any // account. ShareWithAccounts *[]string `json:"share_with_accounts,omitempty"` } // GCPUploadStatus defines model for GCPUploadStatus. type GCPUploadStatus struct { ImageName string `json:"image_name"` ProjectId string `json:"project_id"` } // Group defines model for Group. type Group struct { // Group id of the group to create (optional) Gid *int `json:"gid,omitempty"` // Name of the group to create Name string `json:"name"` } // Ignition configuration type Ignition struct { Embedded *IgnitionEmbedded `json:"embedded,omitempty"` Firstboot *IgnitionFirstboot `json:"firstboot,omitempty"` } // IgnitionEmbedded defines model for IgnitionEmbedded. type IgnitionEmbedded struct { Config string `json:"config"` } // IgnitionFirstboot defines model for IgnitionFirstboot. type IgnitionFirstboot struct { // Provisioning URL Url string `json:"url"` } // ImageRequest defines model for ImageRequest. type ImageRequest struct { Architecture string `json:"architecture"` ImageType ImageTypes `json:"image_type"` Ostree *OSTree `json:"ostree,omitempty"` Repositories []Repository `json:"repositories"` // Size of image, in bytes. When set to 0 the image size is a minimum // defined by the image type. Size *uint64 `json:"size,omitempty"` // Options for a given upload destination. // This should really be oneOf but AWSS3UploadOptions is a subset of // AWSEC2UploadOptions. This means that all AWSEC2UploadOptions objects // are also valid AWSS3UploadOptionas objects which violates the oneOf // rules. Therefore, we have to use anyOf here but be aware that it isn't // possible to mix and match more schemas together. UploadOptions *UploadOptions `json:"upload_options,omitempty"` // The type and options for multiple upload targets. Each item defines // a separate upload destination with its own options. Multiple // different targets as well as multiple targets of the same kind are // supported. UploadTargets *[]UploadTarget `json:"upload_targets,omitempty"` } // ImageStatus defines model for ImageStatus. type ImageStatus struct { Error *ComposeStatusError `json:"error,omitempty"` Status ImageStatusValue `json:"status"` UploadStatus *UploadStatus `json:"upload_status,omitempty"` UploadStatuses *[]UploadStatus `json:"upload_statuses,omitempty"` } // ImageStatusValue defines model for ImageStatusValue. type ImageStatusValue string // ImageTypes defines model for ImageTypes. type ImageTypes string // Kernel defines model for Kernel. type Kernel struct { // Appends arguments to the bootloader kernel command line Append *string `json:"append,omitempty"` // Name of the kernel to use Name *string `json:"name,omitempty"` } // Koji defines model for Koji. type Koji struct { Name string `json:"name"` Release string `json:"release"` Server string `json:"server"` TaskId int `json:"task_id"` Version string `json:"version"` } // KojiLogs defines model for KojiLogs. type KojiLogs struct { Import interface{} `json:"import"` Init interface{} `json:"init"` } // KojiStatus defines model for KojiStatus. type KojiStatus struct { BuildId *int `json:"build_id,omitempty"` } // List defines model for List. type List struct { Kind string `json:"kind"` Page int `json:"page"` Size int `json:"size"` Total int `json:"total"` } // LocalUploadOptions defines model for LocalUploadOptions. type LocalUploadOptions struct { // This is used in combination with the OSBUILD_LOCALSAVE environmental // variable on the server to enable saving the compose locally. This // is for development use only, and is not available to users. LocalSave bool `json:"local_save"` } // Locale configuration type Locale struct { // Sets the keyboard layout Keyboard *string `json:"keyboard,omitempty"` // List of locales to be installed, the first one becomes primary, subsequent ones are secondary Languages *[]string `json:"languages,omitempty"` } // OCIUploadOptions defines model for OCIUploadOptions. type OCIUploadOptions map[string]interface{} // OCIUploadStatus defines model for OCIUploadStatus. type OCIUploadStatus struct { Url string `json:"url"` } // OSTree defines model for OSTree. type OSTree struct { // A URL which, if set, is used for fetching content. Implies that `url` is set as well, // which will be used for metadata only. Contenturl *string `json:"contenturl,omitempty"` // Can be either a commit (example: 02604b2da6e954bd34b8b82a835e5a77d2b60ffa), or a branch-like reference (example: rhel/8/x86_64/edge) Parent *string `json:"parent,omitempty"` Ref *string `json:"ref,omitempty"` // Determines whether a valid subscription manager (candlepin) identity is required to // access this repository. Consumer certificates will be used as client certificates when // fetching metadata and content. Rhsm *bool `json:"rhsm,omitempty"` Url *string `json:"url,omitempty"` } // ObjectReference defines model for ObjectReference. type ObjectReference struct { Href string `json:"href"` Id string `json:"id"` Kind string `json:"kind"` } // OpenSCAP defines model for OpenSCAP. type OpenSCAP struct { ProfileId string `json:"profile_id"` Tailoring *OpenSCAPTailoring `json:"tailoring,omitempty"` } // OpenSCAPTailoring defines model for OpenSCAPTailoring. type OpenSCAPTailoring struct { Selected *[]string `json:"selected,omitempty"` Unselected *[]string `json:"unselected,omitempty"` } // PackageMetadata defines model for PackageMetadata. type PackageMetadata struct { Arch string `json:"arch"` Epoch *string `json:"epoch,omitempty"` Name string `json:"name"` Release string `json:"release"` Sigmd5 string `json:"sigmd5"` Signature *string `json:"signature,omitempty"` Type string `json:"type"` Version string `json:"version"` } // PulpOSTreeUploadOptions defines model for PulpOSTreeUploadOptions. type PulpOSTreeUploadOptions struct { // Basepath for distributing the repository Basepath string `json:"basepath"` // Repository to import the ostree commit to Repository *string `json:"repository,omitempty"` ServerAddress *string `json:"server_address,omitempty"` } // PulpOSTreeUploadStatus defines model for PulpOSTreeUploadStatus. type PulpOSTreeUploadStatus struct { RepoUrl string `json:"repo_url"` } // Repository configuration. // At least one of the 'baseurl', 'mirrorlist', 'metalink' properties must // be specified. If more of them are specified, the order of precedence is // the same as listed above. type Repository struct { Baseurl *string `json:"baseurl,omitempty"` CheckGpg *bool `json:"check_gpg,omitempty"` // Enables gpg verification of the repository metadata CheckRepoGpg *bool `json:"check_repo_gpg,omitempty"` // GPG key used to sign packages in this repository. Gpgkey *string `json:"gpgkey,omitempty"` IgnoreSsl *bool `json:"ignore_ssl,omitempty"` Metalink *string `json:"metalink,omitempty"` Mirrorlist *string `json:"mirrorlist,omitempty"` // Disables modularity filtering for this repository. ModuleHotfixes *bool `json:"module_hotfixes,omitempty"` // Naming package sets for a repository assigns it to a specific part // (pipeline) of the build process. PackageSets *[]string `json:"package_sets,omitempty"` // Determines whether a valid subscription is required to access this repository. Rhsm *bool `json:"rhsm,omitempty"` } // Services defines model for Services. type Services struct { // List of services to disable by default Disabled *[]string `json:"disabled,omitempty"` // List of services to enable by default Enabled *[]string `json:"enabled,omitempty"` } // Subscription defines model for Subscription. type Subscription struct { ActivationKey string `json:"activation_key"` BaseUrl string `json:"base_url"` Insights bool `json:"insights"` Organization string `json:"organization"` // Optional flag to use rhc to register the system, which also always enables Insights. Rhc *bool `json:"rhc,omitempty"` ServerUrl string `json:"server_url"` } // Timezone configuration type Timezone struct { // List of ntp servers Ntpservers *[]string `json:"ntpservers,omitempty"` // Name of the timezone, defaults to UTC Timezone *string `json:"timezone,omitempty"` } // Options for a given upload destination. // This should really be oneOf but AWSS3UploadOptions is a subset of // AWSEC2UploadOptions. This means that all AWSEC2UploadOptions objects // are also valid AWSS3UploadOptionas objects which violates the oneOf // rules. Therefore, we have to use anyOf here but be aware that it isn't // possible to mix and match more schemas together. type UploadOptions interface{} // UploadStatus defines model for UploadStatus. type UploadStatus struct { Options interface{} `json:"options"` Status UploadStatusValue `json:"status"` Type UploadTypes `json:"type"` } // UploadStatusValue defines model for UploadStatusValue. type UploadStatusValue string // UploadTarget defines model for UploadTarget. type UploadTarget struct { Type UploadTypes `json:"type"` // Options for a given upload destination. // This should really be oneOf but AWSS3UploadOptions is a subset of // AWSEC2UploadOptions. This means that all AWSEC2UploadOptions objects // are also valid AWSS3UploadOptionas objects which violates the oneOf // rules. Therefore, we have to use anyOf here but be aware that it isn't // possible to mix and match more schemas together. UploadOptions UploadOptions `json:"upload_options"` } // UploadTypes defines model for UploadTypes. type UploadTypes string // User defines model for User. type User struct { Groups *[]string `json:"groups,omitempty"` Key *string `json:"key,omitempty"` Name string `json:"name"` } // Page defines model for page. type Page string // Size defines model for size. type Size string // PostComposeJSONBody defines parameters for PostCompose. type PostComposeJSONBody ComposeRequest // PostCloneComposeJSONBody defines parameters for PostCloneCompose. type PostCloneComposeJSONBody CloneComposeBody // GetErrorListParams defines parameters for GetErrorList. type GetErrorListParams struct { // Page index Page *Page `json:"page,omitempty"` // Number of items in each page Size *Size `json:"size,omitempty"` } // PostComposeJSONRequestBody defines body for PostCompose for application/json ContentType. type PostComposeJSONRequestBody PostComposeJSONBody // PostCloneComposeJSONRequestBody defines body for PostCloneCompose for application/json ContentType. type PostCloneComposeJSONRequestBody PostCloneComposeJSONBody // ServerInterface represents all server handlers. type ServerInterface interface { // The status of a cloned compose // (GET /clones/{id}) GetCloneStatus(ctx echo.Context, id string) error // Create compose // (POST /compose) PostCompose(ctx echo.Context) error // The status of a compose // (GET /composes/{id}) GetComposeStatus(ctx echo.Context, id string) error // Clone an existing compose // (POST /composes/{id}/clone) PostCloneCompose(ctx echo.Context, id string) error // Get logs for a compose. // (GET /composes/{id}/logs) GetComposeLogs(ctx echo.Context, id string) error // Get the manifests for a compose. // (GET /composes/{id}/manifests) GetComposeManifests(ctx echo.Context, id string) error // Get the metadata for a compose. // (GET /composes/{id}/metadata) GetComposeMetadata(ctx echo.Context, id string) error // Get a list of all possible errors // (GET /errors) GetErrorList(ctx echo.Context, params GetErrorListParams) error // Get error description // (GET /errors/{id}) GetError(ctx echo.Context, id string) error // Get the openapi spec in json format // (GET /openapi) GetOpenapi(ctx echo.Context) error } // ServerInterfaceWrapper converts echo contexts to parameters. type ServerInterfaceWrapper struct { Handler ServerInterface } // GetCloneStatus converts echo context to params. func (w *ServerInterfaceWrapper) GetCloneStatus(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetCloneStatus(ctx, id) return err } // PostCompose converts echo context to params. func (w *ServerInterfaceWrapper) PostCompose(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.PostCompose(ctx) return err } // GetComposeStatus converts echo context to params. func (w *ServerInterfaceWrapper) GetComposeStatus(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetComposeStatus(ctx, id) return err } // PostCloneCompose converts echo context to params. func (w *ServerInterfaceWrapper) PostCloneCompose(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.PostCloneCompose(ctx, id) return err } // GetComposeLogs converts echo context to params. func (w *ServerInterfaceWrapper) GetComposeLogs(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetComposeLogs(ctx, id) return err } // GetComposeManifests converts echo context to params. func (w *ServerInterfaceWrapper) GetComposeManifests(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetComposeManifests(ctx, id) return err } // GetComposeMetadata converts echo context to params. func (w *ServerInterfaceWrapper) GetComposeMetadata(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetComposeMetadata(ctx, id) return err } // GetErrorList converts echo context to params. func (w *ServerInterfaceWrapper) GetErrorList(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Parameter object where we will unmarshal all parameters from the context var params GetErrorListParams // ------------- Optional query parameter "page" ------------- err = runtime.BindQueryParameter("form", true, false, "page", ctx.QueryParams(), ¶ms.Page) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter page: %s", err)) } // ------------- Optional query parameter "size" ------------- err = runtime.BindQueryParameter("form", true, false, "size", ctx.QueryParams(), ¶ms.Size) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter size: %s", err)) } // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetErrorList(ctx, params) return err } // GetError converts echo context to params. func (w *ServerInterfaceWrapper) GetError(ctx echo.Context) error { var err error // ------------- Path parameter "id" ------------- var id string err = runtime.BindStyledParameterWithLocation("simple", false, "id", runtime.ParamLocationPath, ctx.Param("id"), &id) if err != nil { return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter id: %s", err)) } ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetError(ctx, id) return err } // GetOpenapi converts echo context to params. func (w *ServerInterfaceWrapper) GetOpenapi(ctx echo.Context) error { var err error ctx.Set(BearerScopes, []string{""}) // Invoke the callback with all the unmarshalled arguments err = w.Handler.GetOpenapi(ctx) return err } // This is a simple interface which specifies echo.Route addition functions which // are present on both echo.Echo and echo.Group, since we want to allow using // either of them for path registration type EchoRouter interface { CONNECT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route DELETE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route GET(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route HEAD(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route OPTIONS(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route PATCH(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route POST(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route PUT(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route TRACE(path string, h echo.HandlerFunc, m ...echo.MiddlewareFunc) *echo.Route } // RegisterHandlers adds each server route to the EchoRouter. func RegisterHandlers(router EchoRouter, si ServerInterface) { RegisterHandlersWithBaseURL(router, si, "") } // Registers handlers, and prepends BaseURL to the paths, so that the paths // can be served under a prefix. func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL string) { wrapper := ServerInterfaceWrapper{ Handler: si, } router.GET(baseURL+"/clones/:id", wrapper.GetCloneStatus) router.POST(baseURL+"/compose", wrapper.PostCompose) router.GET(baseURL+"/composes/:id", wrapper.GetComposeStatus) router.POST(baseURL+"/composes/:id/clone", wrapper.PostCloneCompose) router.GET(baseURL+"/composes/:id/logs", wrapper.GetComposeLogs) router.GET(baseURL+"/composes/:id/manifests", wrapper.GetComposeManifests) router.GET(baseURL+"/composes/:id/metadata", wrapper.GetComposeMetadata) router.GET(baseURL+"/errors", wrapper.GetErrorList) router.GET(baseURL+"/errors/:id", wrapper.GetError) router.GET(baseURL+"/openapi", wrapper.GetOpenapi) } // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file // or error if failed to decode func decodeSpec() ([]byte, error) { zipped, err := base64.StdEncoding.DecodeString(strings.Join(swaggerSpec, "")) if err != nil { return nil, fmt.Errorf("error base64 decoding spec: %s", err) } zr, err := gzip.NewReader(bytes.NewReader(zipped)) if err != nil { return nil, fmt.Errorf("error decompressing spec: %s", err) } var buf bytes.Buffer _, err = buf.ReadFrom(zr) if err != nil { return nil, fmt.Errorf("error decompressing spec: %s", err) } return buf.Bytes(), nil } var rawSpec = decodeSpecCached() // a naive cached of a decoded swagger spec func decodeSpecCached() func() ([]byte, error) { data, err := decodeSpec() return func() ([]byte, error) { return data, err } } // Constructs a synthetic filesystem for resolving external references when loading openapi specifications. func PathToRawSpec(pathToFile string) map[string]func() ([]byte, error) { var res = make(map[string]func() ([]byte, error)) if len(pathToFile) > 0 { res[pathToFile] = rawSpec } return res } // GetSwagger returns the Swagger specification corresponding to the generated code // in this file. The external references of Swagger specification are resolved. // The logic of resolving external references is tightly connected to "import-mapping" feature. // Externally referenced files must be embedded in the corresponding golang packages. // Urls can be supported but this task was out of the scope. func GetSwagger() (swagger *openapi3.T, err error) { var resolvePath = PathToRawSpec("") loader := openapi3.NewLoader() loader.IsExternalRefsAllowed = true loader.ReadFromURIFunc = func(loader *openapi3.Loader, url *url.URL) ([]byte, error) { var pathToFile = url.String() pathToFile = path.Clean(pathToFile) getSpec, ok := resolvePath[pathToFile] if !ok { err1 := fmt.Errorf("path not found: %s", pathToFile) return nil, err1 } return getSpec() } var specData []byte specData, err = rawSpec() if err != nil { return } swagger, err = loader.LoadFromData(specData) if err != nil { return } return }