mirror of
https://github.com/containers/podman.git
synced 2025-09-22 12:14:26 +08:00

Since the decoder is shared registering the decoder inside a single endpoint will also register it for all others. Also the problem with that is the it will register it everytime this endpoint is called which is wrong. Instead we should register it once like the other custom decoder functions. Signed-off-by: Paul Holzinger <pholzing@redhat.com>
45 lines
1.3 KiB
Go
45 lines
1.3 KiB
Go
package libpod
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/containers/podman/v4/libpod"
|
|
"github.com/containers/podman/v4/pkg/api/handlers/utils"
|
|
api "github.com/containers/podman/v4/pkg/api/types"
|
|
"github.com/containers/podman/v4/pkg/domain/entities"
|
|
"github.com/containers/podman/v4/pkg/domain/infra/abi"
|
|
"github.com/gorilla/schema"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func CreateSecret(w http.ResponseWriter, r *http.Request) {
|
|
var (
|
|
runtime = r.Context().Value(api.RuntimeKey).(*libpod.Runtime)
|
|
decoder = r.Context().Value(api.DecoderKey).(*schema.Decoder)
|
|
)
|
|
|
|
query := struct {
|
|
Name string `schema:"name"`
|
|
Driver string `schema:"driver"`
|
|
DriverOpts map[string]string `schema:"driveropts"`
|
|
}{
|
|
// override any golang type defaults
|
|
}
|
|
opts := entities.SecretCreateOptions{}
|
|
if err := decoder.Decode(&query, r.URL.Query()); err != nil {
|
|
utils.Error(w, http.StatusBadRequest, errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
|
|
return
|
|
}
|
|
|
|
opts.Driver = query.Driver
|
|
opts.DriverOpts = query.DriverOpts
|
|
|
|
ic := abi.ContainerEngine{Libpod: runtime}
|
|
report, err := ic.SecretCreate(r.Context(), query.Name, r.Body, opts)
|
|
if err != nil {
|
|
utils.InternalServerError(w, err)
|
|
return
|
|
}
|
|
utils.WriteResponse(w, http.StatusOK, report)
|
|
}
|