Files
podman/pkg/api/server/swagger.go
Valentin Rothberg dc80267b59 compat handlers: add X-Registry-Auth header support
* Support the `X-Registry-Auth` http-request header.

 * The content of the header is a base64 encoded JSON payload which can
   either be a single auth config or a map of auth configs (user+pw or
   token) with the corresponding registries being the keys.  Vanilla
   Docker, projectatomic Docker and the bindings are transparantly
   supported.

 * Add a hidden `--registries-conf` flag.  Buildah exposes the same
   flag, mostly for testing purposes.

 * Do all credential parsing in the client (i.e., `cmd/podman`) pass
   the username and password in the backend instead of unparsed
   credentials.

 * Add a `pkg/auth` which handles most of the heavy lifting.

 * Go through the authentication-handling code of most commands, bindings
   and endpoints.  Migrate them to the new code and fix issues as seen.
   A final evaluation and more tests is still required *after* this
   change.

 * The manifest-push endpoint is missing certain parameters and should
   use the ABI function instead.  Adding auth-support isn't really
   possible without these parts working.

 * The container commands and endpoints (i.e., create and run) have not
   been changed yet.  The APIs don't yet account for the authfile.

 * Add authentication tests to `pkg/bindings`.

Fixes: #6384
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-05-29 15:39:37 +02:00

227 lines
3.8 KiB
Go

package server
import (
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/define"
"github.com/containers/libpod/pkg/domain/entities"
)
// No such image
// swagger:response NoSuchImage
type swagErrNoSuchImage struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// No such container
// swagger:response NoSuchContainer
type swagErrNoSuchContainer struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// No such network
// swagger:response NoSuchNetwork
type swagErrNoSuchNetwork struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// No such exec instance
// swagger:response NoSuchExecInstance
type swagErrNoSuchExecInstance struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// No such volume
// swagger:response NoSuchVolume
type swagErrNoSuchVolume struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// No such pod
// swagger:response NoSuchPod
type swagErrNoSuchPod struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// No such manifest
// swagger:response NoSuchManifest
type swagErrNoSuchManifest struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Internal server error
// swagger:response InternalError
type swagInternalError struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Conflict error in operation
// swagger:response ConflictError
type swagConflictError struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Bad parameter in request
// swagger:response BadParamError
type swagBadParamError struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Container already started
// swagger:response ContainerAlreadyStartedError
type swagContainerAlreadyStartedError struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Container already stopped
// swagger:response ContainerAlreadyStoppedError
type swagContainerAlreadyStopped struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Pod already started
// swagger:response PodAlreadyStartedError
type swagPodAlreadyStartedError struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Pod already stopped
// swagger:response PodAlreadyStoppedError
type swagPodAlreadyStopped struct {
// in:body
Body struct {
entities.ErrorModel
}
}
// Image summary
// swagger:response DockerImageSummary
type swagImageSummary struct {
// in:body
Body []entities.ImageSummary
}
// Registries summary
// swagger:response DocsRegistriesList
type swagRegistriesList struct {
// in:body
Body entities.ListRegistriesReport
}
// List Containers
// swagger:response DocsListContainer
type swagListContainers struct {
// in:body
Body struct {
// This causes go-swagger to crash
// handlers.Container
}
}
// Success
// swagger:response
type ok struct {
// in:body
Body struct {
// example: OK
ok string
}
}
// Volume prune response
// swagger:response VolumePruneResponse
type swagVolumePruneResponse struct {
// in:body
Body []entities.VolumePruneReport
}
// Volume create response
// swagger:response VolumeCreateResponse
type swagVolumeCreateResponse struct {
// in:body
Body struct {
entities.VolumeConfigResponse
}
}
// Volume list
// swagger:response VolumeList
type swagVolumeListResponse struct {
// in:body
Body []libpod.Volume
}
// Healthcheck
// swagger:response HealthcheckRun
type swagHealthCheckRunResponse struct {
// in:body
Body struct {
define.HealthCheckResults
}
}
// Version
// swagger:response Version
type swagVersion struct {
// in:body
Body struct {
entities.SystemVersionReport
}
}
// Disk usage
// swagger:response SystemDiskUse
type swagDiskUseResponse struct {
// in:body
Body struct {
entities.SystemDfReport
}
}
// Prune report
// swagger:response SystemPruneReport
type swagSystemPruneReport struct {
// in:body
Body struct {
entities.SystemPruneReport
}
}