Files
podman/pkg/api/server/register_secrets.go
Jakub Guzik d346e6e734 Add filtering functionality to http api secrets list
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>
2021-09-03 10:29:31 +02:00

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
}