mirror of
https://github.com/containers/podman.git
synced 2025-10-09 23:15:39 +08:00
pkg/api: api list quadlets resource
Signed-off-by: Celso Henrique Souza Silva <celsohenrique367@gmail.com>
This commit is contained in:
37
pkg/api/handlers/libpod/quadlets.go
Normal file
37
pkg/api/handlers/libpod/quadlets.go
Normal file
@ -0,0 +1,37 @@
|
||||
//go:build !remote
|
||||
|
||||
package libpod
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/containers/podman/v5/libpod"
|
||||
"github.com/containers/podman/v5/pkg/api/handlers/utils"
|
||||
api "github.com/containers/podman/v5/pkg/api/types"
|
||||
"github.com/containers/podman/v5/pkg/domain/entities"
|
||||
"github.com/containers/podman/v5/pkg/domain/infra/abi"
|
||||
"github.com/containers/podman/v5/pkg/util"
|
||||
)
|
||||
|
||||
func ListQuadlets(w http.ResponseWriter, r *http.Request) {
|
||||
runtime := r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
|
||||
filterMap, err := util.FiltersFromRequest(r)
|
||||
if err != nil {
|
||||
utils.Error(
|
||||
w, http.StatusInternalServerError,
|
||||
fmt.Errorf("failed to parse parameters for %s: %w", r.URL.String(), err),
|
||||
)
|
||||
return
|
||||
}
|
||||
|
||||
containerEngine := abi.ContainerEngine{Libpod: runtime}
|
||||
|
||||
quadlets, err := containerEngine.QuadletList(r.Context(), entities.QuadletListOptions{Filters: filterMap})
|
||||
if err != nil {
|
||||
utils.InternalServerError(w, err)
|
||||
return
|
||||
}
|
||||
|
||||
utils.WriteResponse(w, http.StatusOK, quadlets)
|
||||
}
|
@ -520,3 +520,10 @@ type artifactPushResponse struct {
|
||||
// in:body
|
||||
Body entities.ArtifactPushReport
|
||||
}
|
||||
|
||||
// Quadlet list
|
||||
// swagger:response
|
||||
type quadletListResponse struct {
|
||||
// in:body
|
||||
Body []entities.ListQuadlet
|
||||
}
|
||||
|
36
pkg/api/server/register_quadlets.go
Normal file
36
pkg/api/server/register_quadlets.go
Normal file
@ -0,0 +1,36 @@
|
||||
//go:build !remote
|
||||
|
||||
package server
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/containers/podman/v5/pkg/api/handlers/libpod"
|
||||
"github.com/gorilla/mux"
|
||||
)
|
||||
|
||||
func (s *APIServer) registerQuadletHandlers(r *mux.Router) error {
|
||||
// swagger:operation GET /libpod/quadlets/json libpod QuadletListLibpod
|
||||
// ---
|
||||
// tags:
|
||||
// - quadlets
|
||||
// summary: List quadlets
|
||||
// description: Return a list of all quadlets.
|
||||
// produces:
|
||||
// - application/json
|
||||
// parameters:
|
||||
// - in: query
|
||||
// name: filters
|
||||
// type: string
|
||||
// description: |
|
||||
// JSON encoded value of the filters (a map[string][]string).
|
||||
// Supported filters:
|
||||
// - name=<quadlet-name> Filter by quadlet name
|
||||
// responses:
|
||||
// 200:
|
||||
// $ref: "#/responses/quadletListResponse"
|
||||
// 500:
|
||||
// $ref: "#/responses/internalError"
|
||||
r.HandleFunc(VersionedPath("/libpod/quadlets/json"), s.APIHandler(libpod.ListQuadlets)).Methods(http.MethodGet)
|
||||
return nil
|
||||
}
|
@ -128,6 +128,7 @@ func newServer(runtime *libpod.Runtime, listener net.Listener, opts entities.Ser
|
||||
server.registerKubeHandlers,
|
||||
server.registerPluginsHandlers,
|
||||
server.registerPodsHandlers,
|
||||
server.registerQuadletHandlers,
|
||||
server.registerSecretHandlers,
|
||||
server.registerSwaggerHandlers,
|
||||
server.registerSwarmHandlers,
|
||||
|
15
test/apiv2/36-quadlets.at
Normal file
15
test/apiv2/36-quadlets.at
Normal file
@ -0,0 +1,15 @@
|
||||
# -*- sh -*-
|
||||
#
|
||||
# quadlet-related tests
|
||||
#
|
||||
|
||||
# NOTE: Once podman-remote quadlet support is added we can enable the podman quadlet tests in
|
||||
# test/system/253-podman-quadlet.bats which should cover it in more detail then.
|
||||
|
||||
## list volume
|
||||
t GET libpod/quadlets/json 200
|
||||
|
||||
# Example with filter applied (uncomment once needed)
|
||||
# t GET libpod/quadlets/json?filters='{"name":["name.*"]}' 200
|
||||
|
||||
# vim: filetype=sh
|
Reference in New Issue
Block a user