mirror of
https://github.com/containers/podman.git
synced 2025-07-15 03:02:52 +08:00

Filtering is missing in both compat API and libpod API, while docker has filtering functinality. This commit enables filtering option using name and id in both libpod and http API. Signed-off-by: Jakub Guzik <jakubmguzik@gmail.com>
211 lines
6.3 KiB
Go
211 lines
6.3 KiB
Go
package server
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/containers/podman/v3/pkg/api/handlers/compat"
|
|
"github.com/containers/podman/v3/pkg/api/handlers/libpod"
|
|
"github.com/gorilla/mux"
|
|
)
|
|
|
|
func (s *APIServer) registerSecretHandlers(r *mux.Router) error {
|
|
// swagger:operation POST /libpod/secrets/create libpod SecretCreateLibpod
|
|
// ---
|
|
// tags:
|
|
// - secrets
|
|
// summary: Create a secret
|
|
// parameters:
|
|
// - in: query
|
|
// name: name
|
|
// type: string
|
|
// description: User-defined name of the secret.
|
|
// required: true
|
|
// - in: query
|
|
// name: driver
|
|
// type: string
|
|
// description: Secret driver
|
|
// default: "file"
|
|
// - in: body
|
|
// name: request
|
|
// description: Secret
|
|
// schema:
|
|
// type: string
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '201':
|
|
// $ref: "#/responses/SecretCreateResponse"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/libpod/secrets/create"), s.APIHandler(libpod.CreateSecret)).Methods(http.MethodPost)
|
|
// swagger:operation GET /libpod/secrets/json libpod SecretListLibpod
|
|
// ---
|
|
// tags:
|
|
// - secrets
|
|
// summary: List secrets
|
|
// description: Returns a list of secrets
|
|
// parameters:
|
|
// - in: query
|
|
// name: filters
|
|
// type: string
|
|
// description: |
|
|
// JSON encoded value of the filters (a `map[string][]string`) to process on the secrets list. Currently available filters:
|
|
// - `name=[name]` Matches secrets name (accepts regex).
|
|
// - `id=[id]` Matches for full or partial ID.
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/SecretListResponse"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/libpod/secrets/json"), s.APIHandler(compat.ListSecrets)).Methods(http.MethodGet)
|
|
// swagger:operation GET /libpod/secrets/{name}/json libpod SecretInspectLibpod
|
|
// ---
|
|
// tags:
|
|
// - secrets
|
|
// summary: Inspect secret
|
|
// parameters:
|
|
// - in: path
|
|
// name: name
|
|
// type: string
|
|
// required: true
|
|
// description: the name or ID of the secret
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/SecretInspectResponse"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchSecret"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/libpod/secrets/{name}/json"), s.APIHandler(compat.InspectSecret)).Methods(http.MethodGet)
|
|
// swagger:operation DELETE /libpod/secrets/{name} libpod SecretDeleteLibpod
|
|
// ---
|
|
// tags:
|
|
// - secrets
|
|
// summary: Remove secret
|
|
// parameters:
|
|
// - in: path
|
|
// name: name
|
|
// type: string
|
|
// required: true
|
|
// description: the name or ID of the secret
|
|
// - in: query
|
|
// name: all
|
|
// type: boolean
|
|
// description: Remove all secrets
|
|
// default: false
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchSecret"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/libpod/secrets/{name}"), s.APIHandler(compat.RemoveSecret)).Methods(http.MethodDelete)
|
|
|
|
/*
|
|
* Docker compatibility endpoints
|
|
*/
|
|
// swagger:operation GET /secrets compat SecretList
|
|
// ---
|
|
// tags:
|
|
// - secrets (compat)
|
|
// summary: List secrets
|
|
// description: Returns a list of secrets
|
|
// parameters:
|
|
// - in: query
|
|
// name: filters
|
|
// type: string
|
|
// description: |
|
|
// JSON encoded value of the filters (a `map[string][]string`) to process on the secrets list. Currently available filters:
|
|
// - `name=[name]` Matches secrets name (accepts regex).
|
|
// - `id=[id]` Matches for full or partial ID.
|
|
// produces:
|
|
// - application/json
|
|
// parameters:
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/SecretListCompatResponse"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/secrets"), s.APIHandler(compat.ListSecrets)).Methods(http.MethodGet)
|
|
r.Handle("/secrets", s.APIHandler(compat.ListSecrets)).Methods(http.MethodGet)
|
|
// swagger:operation POST /secrets/create compat SecretCreate
|
|
// ---
|
|
// tags:
|
|
// - secrets (compat)
|
|
// summary: Create a secret
|
|
// parameters:
|
|
// - in: body
|
|
// name: create
|
|
// description: |
|
|
// attributes for creating a secret
|
|
// schema:
|
|
// $ref: "#/definitions/SecretCreate"
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '201':
|
|
// $ref: "#/responses/SecretCreateResponse"
|
|
// '409':
|
|
// "$ref": "#/responses/SecretInUse"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/secrets/create"), s.APIHandler(compat.CreateSecret)).Methods(http.MethodPost)
|
|
r.Handle("/secrets/create", s.APIHandler(compat.CreateSecret)).Methods(http.MethodPost)
|
|
// swagger:operation GET /secrets/{name} compat SecretInspect
|
|
// ---
|
|
// tags:
|
|
// - secrets (compat)
|
|
// summary: Inspect secret
|
|
// parameters:
|
|
// - in: path
|
|
// name: name
|
|
// type: string
|
|
// required: true
|
|
// description: the name or ID of the secret
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '200':
|
|
// "$ref": "#/responses/SecretInspectCompatResponse"
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchSecret"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/secrets/{name}"), s.APIHandler(compat.InspectSecret)).Methods(http.MethodGet)
|
|
r.Handle("/secrets/{name}", s.APIHandler(compat.InspectSecret)).Methods(http.MethodGet)
|
|
// swagger:operation DELETE /secrets/{name} compat SecretDelete
|
|
// ---
|
|
// tags:
|
|
// - secrets (compat)
|
|
// summary: Remove secret
|
|
// parameters:
|
|
// - in: path
|
|
// name: name
|
|
// type: string
|
|
// required: true
|
|
// description: the name or ID of the secret
|
|
// produces:
|
|
// - application/json
|
|
// responses:
|
|
// '204':
|
|
// description: no error
|
|
// '404':
|
|
// "$ref": "#/responses/NoSuchSecret"
|
|
// '500':
|
|
// "$ref": "#/responses/InternalError"
|
|
r.Handle(VersionedPath("/secrets/{name}"), s.APIHandler(compat.RemoveSecret)).Methods(http.MethodDelete)
|
|
r.Handle("/secret/{name}", s.APIHandler(compat.RemoveSecret)).Methods(http.MethodDelete)
|
|
|
|
r.Handle(VersionedPath("/secrets/{name}/update"), s.APIHandler(compat.UpdateSecret)).Methods(http.MethodPost)
|
|
r.Handle("/secrets/{name}/update", s.APIHandler(compat.UpdateSecret)).Methods(http.MethodPost)
|
|
return nil
|
|
}
|