Merge pull request #27203 from nothiaki/quadlets-api-resource

pkg/api: api list quadlets resource
This commit is contained in:
openshift-merge-bot[bot]
2025-10-03 12:59:32 +00:00
committed by GitHub
5 changed files with 96 additions and 0 deletions

View 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)
}

View File

@ -520,3 +520,10 @@ type artifactPushResponse struct {
// in:body
Body entities.ArtifactPushReport
}
// Quadlet list
// swagger:response
type quadletListResponse struct {
// in:body
Body []entities.ListQuadlet
}

View 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
}

View File

@ -148,6 +148,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,