summaryrefslogtreecommitdiff
path: root/pkg/api/handlers/libpod
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/api/handlers/libpod')
-rw-r--r--pkg/api/handlers/libpod/secrets.go16
1 files changed, 14 insertions, 2 deletions
diff --git a/pkg/api/handlers/libpod/secrets.go b/pkg/api/handlers/libpod/secrets.go
index e7f4397ea..867a0b957 100644
--- a/pkg/api/handlers/libpod/secrets.go
+++ b/pkg/api/handlers/libpod/secrets.go
@@ -1,7 +1,9 @@
package libpod
import (
+ "encoding/json"
"net/http"
+ "reflect"
"github.com/containers/podman/v3/libpod"
"github.com/containers/podman/v3/pkg/api/handlers/utils"
@@ -16,9 +18,17 @@ func CreateSecret(w http.ResponseWriter, r *http.Request) {
runtime = r.Context().Value("runtime").(*libpod.Runtime)
decoder = r.Context().Value("decoder").(*schema.Decoder)
)
+
+ decoder.RegisterConverter(map[string]string{}, func(str string) reflect.Value {
+ res := make(map[string]string)
+ json.Unmarshal([]byte(str), &res)
+ return reflect.ValueOf(res)
+ })
+
query := struct {
- Name string `schema:"name"`
- Driver string `schema:"driver"`
+ Name string `schema:"name"`
+ Driver string `schema:"driver"`
+ DriverOpts map[string]string `schema:"driveropts"`
}{
// override any golang type defaults
}
@@ -28,7 +38,9 @@ func CreateSecret(w http.ResponseWriter, r *http.Request) {
errors.Wrapf(err, "failed to parse parameters for %s", r.URL.String()))
return
}
+
opts.Driver = query.Driver
+ opts.Opts = query.DriverOpts
ic := abi.ContainerEngine{Libpod: runtime}
report, err := ic.SecretCreate(r.Context(), query.Name, r.Body, opts)