mirror of
https://github.com/containers/podman.git
synced 2025-06-05 14:06:01 +08:00
730 lines
21 KiB
Go
730 lines
21 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/containers/libpod/pkg/api/handlers"
|
|
"github.com/containers/libpod/pkg/api/handlers/generic"
|
|
"github.com/containers/libpod/pkg/api/handlers/libpod"
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
func (s *APIServer) RegisterContainersHandlers(r *mux.Router) error {
|
|
// swagger:operation POST /containers/create containers createContainer
|
|
//
|
|
// Create a container
|
|
//
|
|
// ---
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// - in: query
|
|
// name: name
|
|
// type: string
|
|
// description: container name
|
|
// responses:
|
|
// '201':
|
|
// description: tbd
|
|
// '400':
|
|
// "$ref": "#/responses/BadParamError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '409':
|
|
// "$ref": "#/types/ConflictError"
|
|
// '500':
|
|
// "$ref": "#/types/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/create"), APIHandler(s.Context, generic.CreateContainer)).Methods(http.MethodPost)
|
|
// swagger:operation GET /containers/json containers listContainers
|
|
//
|
|
// List containers
|
|
//
|
|
// ---
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// schema:
|
|
// type: array
|
|
// items:
|
|
// "$ref": "#/responses/Container"
|
|
// '400':
|
|
// "$ref": "#/responses/BadParamError"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/json"), APIHandler(s.Context, generic.ListContainers)).Methods(http.MethodGet)
|
|
// swagger:operation POST /containers/prune containers pruneContainers
|
|
//
|
|
// Prune unused containers
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: query
|
|
// name: filters
|
|
// type: map[string][]string
|
|
// description: something
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/DocsContainerPruneReport"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/prune"), APIHandler(s.Context, generic.PruneContainers)).Methods(http.MethodPost)
|
|
// swagger:operation DELETE /containers/{nameOrID} containers removeContainer
|
|
//
|
|
// Delete container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: force
|
|
// type: bool
|
|
// description: need something
|
|
// - in: query
|
|
// name: v
|
|
// type: bool
|
|
// description: need something
|
|
// - in: query
|
|
// name: link
|
|
// type: bool
|
|
// description: not supported
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '400':
|
|
// "$ref": "#/responses/BadParamError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '409':
|
|
// "$ref": "#/responses/ConflictError"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}"), APIHandler(s.Context, generic.RemoveContainer)).Methods(http.MethodDelete)
|
|
// swagger:operation GET /containers/{nameOrID}/json containers getContainer
|
|
//
|
|
// Inspect Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/DocsContainerInspectResponse"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/json"), APIHandler(s.Context, generic.GetContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /containers/{nameOrID}/kill containers killContainer
|
|
//
|
|
// Kill Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: signal
|
|
// type: int
|
|
// description: signal to be sent to container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '409':
|
|
// "$ref": "#/responses/ConflictError"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/kill"), APIHandler(s.Context, generic.KillContainer)).Methods(http.MethodPost)
|
|
// swagger:operation GET /containers/{nameOrID}/logs containers LogsFromContainer
|
|
//
|
|
// Get logs from container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: follow
|
|
// type: bool
|
|
// description: needs description
|
|
// - in: query
|
|
// name: stdout
|
|
// type: bool
|
|
// description: needs description
|
|
// - in: query
|
|
// name: stderr
|
|
// type: bool
|
|
// description: needs description
|
|
// - in: query
|
|
// name: since
|
|
// type: string
|
|
// description: needs description
|
|
// - in: query
|
|
// name: until
|
|
// type: string
|
|
// description: needs description
|
|
// - in: query
|
|
// name: timestamps
|
|
// type: bool
|
|
// description: needs description
|
|
// - in: query
|
|
// name: tail
|
|
// type: string
|
|
// description: needs description
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// description: tbd
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/logs"), APIHandler(s.Context, generic.LogsFromContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /containers/{nameOrID}/pause containers pauseContainer
|
|
//
|
|
// Pause Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/pause"), APIHandler(s.Context, handlers.PauseContainer)).Methods(http.MethodPost)
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/rename"), APIHandler(s.Context, handlers.UnsupportedHandler)).Methods(http.MethodPost)
|
|
// swagger:operation POST /containers/{nameOrID}/restart containers restartContainer
|
|
//
|
|
// Restart Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: t
|
|
// type: int
|
|
// description: timeout before sending kill signal to container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/restart"), APIHandler(s.Context, handlers.RestartContainer)).Methods(http.MethodPost)
|
|
// swagger:operation POST /containers/{nameOrID}/start containers startContainer
|
|
//
|
|
// Start a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: detachKeys
|
|
// type: string
|
|
// description: needs description
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '304':
|
|
// "$ref": "#/responses/ContainerAlreadyStartedError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/start"), APIHandler(s.Context, handlers.StartContainer)).Methods(http.MethodPost)
|
|
// swagger:operation GET /containers/{nameOrID}/stats containers statsContainer
|
|
//
|
|
// Get stats for a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: stream
|
|
// type: bool
|
|
// description: needs description
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: tbd
|
|
// '304':
|
|
// "$ref": "#/responses/ContainerAlreadyStartedError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/stats"), APIHandler(s.Context, generic.StatsContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /containers/{nameOrID}/stop containers stopContainer
|
|
//
|
|
// Stop a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: t
|
|
// type: int
|
|
// description: number of seconds to wait before killing container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '304':
|
|
// "$ref": "#/responses/ContainerAlreadyStoppedError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/stop"), APIHandler(s.Context, handlers.StopContainer)).Methods(http.MethodPost)
|
|
// swagger:operation GET /containers/{nameOrID}/top containers topContainer
|
|
//
|
|
// List processes running inside a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: ps_args
|
|
// type: string
|
|
// description: arguments to pass to ps such as aux
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// "ref": "#/responses/DockerTopResponse"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/top"), APIHandler(s.Context, handlers.TopContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /containers/{nameOrID}/unpause containers unpauseContainer
|
|
//
|
|
// Unpause Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// schema:
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/unpause"), APIHandler(s.Context, handlers.UnpauseContainer)).Methods(http.MethodPost)
|
|
// swagger:operation POST /containers/{nameOrID}/wait containers waitContainer
|
|
//
|
|
// Wait on a container to exit
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: condition
|
|
// type: string
|
|
// description: Wait until the container reaches the given condition
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/containers/{name:..*}/wait"), APIHandler(s.Context, generic.WaitContainer)).Methods(http.MethodPost)
|
|
|
|
/*
|
|
libpod endpoints
|
|
*/
|
|
|
|
r.HandleFunc(VersionedPath("/libpod/containers/create"), APIHandler(s.Context, libpod.CreateContainer)).Methods(http.MethodPost)
|
|
// swagger:operation GET /libpod/containers/json containers listContainers
|
|
//
|
|
// List containers
|
|
//
|
|
// ---
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// schema:
|
|
// type: array
|
|
// items:
|
|
// "$ref": "#/responses/LibpodListContainersResponse"
|
|
// '400':
|
|
// "$ref": "#/responses/BadParamError"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/json"), APIHandler(s.Context, libpod.ListContainers)).Methods(http.MethodGet)
|
|
// swagger:operation POST /libpod/containers/prune containers pruneContainers
|
|
//
|
|
// Prune unused containers
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: query
|
|
// name: force
|
|
// type: bool
|
|
// description: something
|
|
// - in: query
|
|
// name: filters
|
|
// type: map[string][]string
|
|
// description: something
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// description: TBD
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/prune"), APIHandler(s.Context, libpod.PruneContainers)).Methods(http.MethodPost)
|
|
// swagger:operation GET /libpod/containers/showmounted containers showMounterContainers
|
|
//
|
|
// Show mounted containers
|
|
//
|
|
// ---
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// description: mounted containers
|
|
// schema:
|
|
// type: object
|
|
// additionalProperties:
|
|
// type: string
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/showmounted"), APIHandler(s.Context, libpod.ShowMountedContainers)).Methods(http.MethodGet)
|
|
// swagger:operation DELETE /libpod/containers/json containers removeContainer
|
|
//
|
|
// Delete container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: force
|
|
// type: bool
|
|
// description: need something
|
|
// - in: query
|
|
// name: v
|
|
// type: bool
|
|
// description: need something
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '400':
|
|
// "$ref": "#/responses/BadParamError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '409':
|
|
// "$ref": "#/responses/ConflictError"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}"), APIHandler(s.Context, libpod.RemoveContainer)).Methods(http.MethodDelete)
|
|
// swagger:operation GET /libpod/containers/{nameOrID}/json containers getContainer
|
|
//
|
|
// Inspect Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: size
|
|
// type: bool
|
|
// description: display filesystem usage
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/LibpodInspectContainerResponse"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/json"), APIHandler(s.Context, libpod.GetContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/kill containers killContainer
|
|
//
|
|
// Kill Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: signal
|
|
// type: int
|
|
// default: 15
|
|
// description: signal to be sent to container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '409':
|
|
// "$ref": "#/responses/ConflictError"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/kill"), APIHandler(s.Context, libpod.KillContainer)).Methods(http.MethodGet)
|
|
// swagger:operation GET /libpod/containers/{nameOrID}/mount containers mountContainer
|
|
//
|
|
// Mount a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// description: mounted container
|
|
// schema:
|
|
// description: id
|
|
// type: string
|
|
// example: 3c784de79b791b4ebd3ac55e511f97fedc042328499554937a3f8bfd9c1a2cb8
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/mount"), APIHandler(s.Context, libpod.MountContainer)).Methods(http.MethodPost)
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/logs"), APIHandler(s.Context, libpod.LogsFromContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/pause containers pauseContainer
|
|
//
|
|
// Pause Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/pause"), APIHandler(s.Context, handlers.PauseContainer)).Methods(http.MethodPost)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/restart containers restartContainer
|
|
//
|
|
// Restart Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: t
|
|
// type: int
|
|
// description: timeout before sending kill signal to container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/restart"), APIHandler(s.Context, handlers.RestartContainer)).Methods(http.MethodPost)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/start containers startContainer
|
|
//
|
|
// Start a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: detachKeys
|
|
// type: string
|
|
// description: needs description
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '304':
|
|
// "$ref": "#/responses/ContainerAlreadyStartedError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/start"), APIHandler(s.Context, handlers.StartContainer)).Methods(http.MethodPost)
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/stats"), APIHandler(s.Context, libpod.StatsContainer)).Methods(http.MethodGet)
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/top"), APIHandler(s.Context, handlers.TopContainer)).Methods(http.MethodGet)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/unpause containers unpauseContainer
|
|
//
|
|
// Unpause Container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/unpause"), APIHandler(s.Context, handlers.UnpauseContainer)).Methods(http.MethodPost)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/wait containers waitContainer
|
|
//
|
|
// Wait on a container to exit
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: condition
|
|
// type: string
|
|
// description: Wait until the container reaches the given condition
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/wait"), APIHandler(s.Context, libpod.WaitContainer)).Methods(http.MethodPost)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/exists containers containerExists
|
|
//
|
|
// Check if container exists
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: container exists
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/exists"), APIHandler(s.Context, libpod.ContainerExists)).Methods(http.MethodGet)
|
|
// swagger:operation POST /libpod/containers/{nameOrID}/stop containers stopContainer
|
|
//
|
|
// Stop a container
|
|
//
|
|
// ---
|
|
// parameters:
|
|
// - in: path
|
|
// name: nameOrID
|
|
// required: true
|
|
// description: the name or ID of the container
|
|
// - in: query
|
|
// name: t
|
|
// type: int
|
|
// description: number of seconds to wait before killing container
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '304':
|
|
// "$ref": "#/responses/ContainerAlreadyStoppedError"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchContainer"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.HandleFunc(VersionedPath("/libpod/containers/{name:..*}/stop"), APIHandler(s.Context, handlers.StopContainer)).Methods(http.MethodPost)
|
|
return nil
|
|
}
|