Merge pull request #6356 from baude/v2copyendpoints

v2 copy endpoints
This commit is contained in:
OpenShift Merge Robot
2020-05-30 05:06:48 -04:00
committed by GitHub
4 changed files with 196 additions and 0 deletions

View File

@ -0,0 +1,12 @@
package compat
import (
"errors"
"net/http"
"github.com/containers/libpod/pkg/api/handlers/utils"
)
func Archive(w http.ResponseWriter, r *http.Request) {
utils.Error(w, "not implemented", http.StatusNotImplemented, errors.New("not implemented"))
}

View File

@ -0,0 +1,12 @@
package libpod
import (
"net/http"
"github.com/containers/libpod/pkg/api/handlers/utils"
"github.com/pkg/errors"
)
func Archive(w http.ResponseWriter, r *http.Request) {
utils.Error(w, "not implemented", http.StatusNotImplemented, errors.New("not implemented"))
}

View File

@ -0,0 +1,171 @@
package server
import (
"net/http"
"github.com/containers/libpod/pkg/api/handlers/compat"
"github.com/containers/libpod/pkg/api/handlers/libpod"
"github.com/gorilla/mux"
)
func (s *APIServer) registerAchiveHandlers(r *mux.Router) error {
// swagger:operation POST /containers/{name}/archive compat putArchive
// ---
// summary: Put files into a container
// description: Put a tar archive of files into a container
// tags:
// - containers (compat)
// produces:
// - application/json
// parameters:
// - in: path
// name: name
// type: string
// description: container name or id
// required: true
// - in: query
// name: path
// type: string
// description: Path to a directory in the container to extract
// required: true
// - in: query
// name: noOverwriteDirNonDir
// type: string
// description: if unpacking the given content would cause an existing directory to be replaced with a non-directory and vice versa (1 or true)
// - in: query
// name: copyUIDGID
// type: string
// description: copy UID/GID maps to the dest file or di (1 or true)
// - in: body
// name: request
// description: tarfile of files to copy into the container
// schema:
// type: string
// responses:
// 200:
// description: no error
// 400:
// $ref: "#/responses/BadParamError"
// 403:
// description: the container rootfs is read-only
// 404:
// $ref: "#/responses/NoSuchContainer"
// 500:
// $ref: "#/responses/InternalError"
// swagger:operation GET /containers/{name}/archive compat getArchive
// ---
// summary: Get files from a container
// description: Get a tar archive of files from a container
// tags:
// - containers (compat)
// produces:
// - application/json
// parameters:
// - in: path
// name: name
// type: string
// description: container name or id
// required: true
// - in: query
// name: path
// type: string
// description: Path to a directory in the container to extract
// required: true
// responses:
// 200:
// description: no error
// schema:
// type: string
// format: binary
// 400:
// $ref: "#/responses/BadParamError"
// 404:
// $ref: "#/responses/NoSuchContainer"
// 500:
// $ref: "#/responses/InternalError"
r.HandleFunc(VersionedPath("/containers/{name}/archive"), s.APIHandler(compat.Archive)).Methods(http.MethodGet, http.MethodPost)
// Added non version path to URI to support docker non versioned paths
r.HandleFunc("/containers/{name}/archive", s.APIHandler(compat.Archive)).Methods(http.MethodGet, http.MethodPost)
/*
Libpod
*/
// swagger:operation POST /libpod/containers/{name}/copy libpod libpodPutArchive
// ---
// summary: Copy files into a container
// description: Copy a tar archive of files into a container
// tags:
// - containers
// produces:
// - application/json
// parameters:
// - in: path
// name: name
// type: string
// description: container name or id
// required: true
// - in: query
// name: path
// type: string
// description: Path to a directory in the container to extract
// required: true
// - in: query
// name: pause
// type: boolean
// description: pause the container while copying (defaults to true)
// default: true
// - in: body
// name: request
// description: tarfile of files to copy into the container
// schema:
// type: string
// responses:
// 200:
// description: no error
// 400:
// $ref: "#/responses/BadParamError"
// 403:
// description: the container rootfs is read-only
// 404:
// $ref: "#/responses/NoSuchContainer"
// 500:
// $ref: "#/responses/InternalError"
// swagger:operation GET /libpod/containers/{name}/copy libpod libpodGetArchive
// ---
// summary: Copy files from a container
// description: Copy a tar archive of files from a container
// tags:
// - containers (compat)
// produces:
// - application/json
// parameters:
// - in: path
// name: name
// type: string
// description: container name or id
// required: true
// - in: query
// name: path
// type: string
// description: Path to a directory in the container to extract
// required: true
// responses:
// 200:
// description: no error
// schema:
// type: string
// format: binary
// 400:
// $ref: "#/responses/BadParamError"
// 404:
// $ref: "#/responses/NoSuchContainer"
// 500:
// $ref: "#/responses/InternalError"
r.HandleFunc(VersionedPath("/libpod/containers/{name}/copy"), s.APIHandler(libpod.Archive)).Methods(http.MethodGet, http.MethodPost)
r.HandleFunc(VersionedPath("/libpod/containers/{name}/archive"), s.APIHandler(libpod.Archive)).Methods(http.MethodGet, http.MethodPost)
return nil
}

View File

@ -102,6 +102,7 @@ func newServer(runtime *libpod.Runtime, duration time.Duration, listener *net.Li
for _, fn := range []func(*mux.Router) error{
server.registerAuthHandlers,
server.registerAchiveHandlers,
server.registerContainersHandlers,
server.registerDistributionHandlers,
server.registerEventsHandlers,