summaryrefslogtreecommitdiff
path: root/pkg/api/handlers
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2020-03-02 20:23:26 +0100
committerGitHub <noreply@github.com>2020-03-02 20:23:26 +0100
commit47c4ea39196cedac87e7a4e4c1ead54ed9d7ed50 (patch)
tree64ce3ceb630aaecf993b1747bf8ba7f3f3af170f /pkg/api/handlers
parentf9a476833bc8461dd246db0b31f542ad4a6d7587 (diff)
parent09048731000e73b44a0243a0339d8c122eb8a165 (diff)
downloadpodman-47c4ea39196cedac87e7a4e4c1ead54ed9d7ed50.tar.gz
podman-47c4ea39196cedac87e7a4e4c1ead54ed9d7ed50.tar.bz2
podman-47c4ea39196cedac87e7a4e4c1ead54ed9d7ed50.zip
Merge pull request #5347 from baude/apiv2wait
rework apiv2 wait endpoint|binding
Diffstat (limited to 'pkg/api/handlers')
-rw-r--r--pkg/api/handlers/containers.go3
-rw-r--r--pkg/api/handlers/containers_attach.go13
-rw-r--r--pkg/api/handlers/generic/containers.go11
-rw-r--r--pkg/api/handlers/images.go4
-rw-r--r--pkg/api/handlers/images_build.go19
-rw-r--r--pkg/api/handlers/libpod/containers.go1
-rw-r--r--pkg/api/handlers/libpod/pods.go8
-rw-r--r--pkg/api/handlers/utils/containers.go38
-rw-r--r--pkg/api/handlers/utils/images.go3
9 files changed, 50 insertions, 50 deletions
diff --git a/pkg/api/handlers/containers.go b/pkg/api/handlers/containers.go
index d7d040ce2..ee080e794 100644
--- a/pkg/api/handlers/containers.go
+++ b/pkg/api/handlers/containers.go
@@ -8,7 +8,6 @@ import (
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/define"
"github.com/containers/libpod/pkg/api/handlers/utils"
- "github.com/gorilla/mux"
"github.com/gorilla/schema"
"github.com/pkg/errors"
)
@@ -179,7 +178,7 @@ func RestartContainer(w http.ResponseWriter, r *http.Request) {
}
timeout := con.StopTimeout()
- if _, found := mux.Vars(r)["t"]; found {
+ if _, found := r.URL.Query()["t"]; found {
timeout = uint(query.Timeout)
}
diff --git a/pkg/api/handlers/containers_attach.go b/pkg/api/handlers/containers_attach.go
index facbd22a5..5a799a20c 100644
--- a/pkg/api/handlers/containers_attach.go
+++ b/pkg/api/handlers/containers_attach.go
@@ -6,7 +6,6 @@ import (
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/define"
"github.com/containers/libpod/pkg/api/handlers/utils"
- "github.com/gorilla/mux"
"github.com/gorilla/schema"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
@@ -30,12 +29,10 @@ func AttachContainer(w http.ResponseWriter, r *http.Request) {
return
}
- muxVars := mux.Vars(r)
-
// Detach keys: explicitly set to "" is very different from unset
// TODO: Our format for parsing these may be different from Docker.
var detachKeys *string
- if _, found := muxVars["detachKeys"]; found {
+ if _, found := r.URL.Query()["detachKeys"]; found {
detachKeys = &query.DetachKeys
}
@@ -44,15 +41,15 @@ func AttachContainer(w http.ResponseWriter, r *http.Request) {
streams.Stderr = true
streams.Stdin = true
useStreams := false
- if _, found := muxVars["stdin"]; found {
+ if _, found := r.URL.Query()["stdin"]; found {
streams.Stdin = query.Stdin
useStreams = true
}
- if _, found := muxVars["stdout"]; found {
+ if _, found := r.URL.Query()["stdout"]; found {
streams.Stdout = query.Stdout
useStreams = true
}
- if _, found := muxVars["stderr"]; found {
+ if _, found := r.URL.Query()["stderr"]; found {
streams.Stderr = query.Stderr
useStreams = true
}
@@ -72,7 +69,7 @@ func AttachContainer(w http.ResponseWriter, r *http.Request) {
return
}
// We only support stream=true or unset
- if _, found := muxVars["stream"]; found && query.Stream {
+ if _, found := r.URL.Query()["stream"]; found && query.Stream {
utils.Error(w, "Unsupported parameter", http.StatusBadRequest, errors.Errorf("the stream parameter to attach is not presently supported"))
return
}
diff --git a/pkg/api/handlers/generic/containers.go b/pkg/api/handlers/generic/containers.go
index b16b87e73..ab587ded4 100644
--- a/pkg/api/handlers/generic/containers.go
+++ b/pkg/api/handlers/generic/containers.go
@@ -14,7 +14,6 @@ import (
"github.com/containers/libpod/pkg/api/handlers"
"github.com/containers/libpod/pkg/api/handlers/utils"
"github.com/containers/libpod/pkg/util"
- "github.com/gorilla/mux"
"github.com/gorilla/schema"
"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
@@ -71,7 +70,7 @@ func ListContainers(w http.ResponseWriter, r *http.Request) {
utils.InternalServerError(w, err)
return
}
- if _, found := mux.Vars(r)["limit"]; found {
+ if _, found := r.URL.Query()["limit"]; found {
last := query.Limit
if len(containers) > last {
containers = containers[len(containers)-last:]
@@ -136,7 +135,7 @@ func WaitContainer(w http.ResponseWriter, r *http.Request) {
// /{version}/containers/(name)/wait
exitCode, err := utils.WaitContainer(w, r)
if err != nil {
- msg = err.Error()
+ return
}
utils.WriteResponse(w, http.StatusOK, handlers.ContainerWaitOKBody{
StatusCode: int(exitCode),
@@ -191,7 +190,7 @@ func LogsFromContainer(w http.ResponseWriter, r *http.Request) {
}
var since time.Time
- if _, found := mux.Vars(r)["since"]; found {
+ if _, found := r.URL.Query()["since"]; found {
since, err = util.ParseInputTime(query.Since)
if err != nil {
utils.BadRequest(w, "since", query.Since, err)
@@ -200,7 +199,7 @@ func LogsFromContainer(w http.ResponseWriter, r *http.Request) {
}
var until time.Time
- if _, found := mux.Vars(r)["until"]; found {
+ if _, found := r.URL.Query()["until"]; found {
since, err = util.ParseInputTime(query.Until)
if err != nil {
utils.BadRequest(w, "until", query.Until, err)
@@ -233,7 +232,7 @@ func LogsFromContainer(w http.ResponseWriter, r *http.Request) {
var builder strings.Builder
for ok := true; ok; ok = query.Follow {
for line := range logChannel {
- if _, found := mux.Vars(r)["until"]; found {
+ if _, found := r.URL.Query()["until"]; found {
if line.Time.After(until) {
break
}
diff --git a/pkg/api/handlers/images.go b/pkg/api/handlers/images.go
index 2086ce748..d4549e5b4 100644
--- a/pkg/api/handlers/images.go
+++ b/pkg/api/handlers/images.go
@@ -11,7 +11,6 @@ import (
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/image"
"github.com/containers/libpod/pkg/api/handlers/utils"
- "github.com/gorilla/mux"
"github.com/gorilla/schema"
"github.com/pkg/errors"
)
@@ -87,8 +86,7 @@ func RemoveImage(w http.ResponseWriter, r *http.Request) {
utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String()))
return
}
- muxVars := mux.Vars(r)
- if _, found := muxVars["noprune"]; found {
+ if _, found := r.URL.Query()["noprune"]; found {
if query.noPrune {
utils.UnSupportedParameter("noprune")
}
diff --git a/pkg/api/handlers/images_build.go b/pkg/api/handlers/images_build.go
index b29c45574..d969e3a47 100644
--- a/pkg/api/handlers/images_build.go
+++ b/pkg/api/handlers/images_build.go
@@ -17,7 +17,6 @@ import (
"github.com/containers/buildah/imagebuildah"
"github.com/containers/libpod/pkg/api/handlers/utils"
"github.com/containers/storage/pkg/archive"
- "github.com/gorilla/mux"
)
func BuildImage(w http.ResponseWriter, r *http.Request) {
@@ -114,24 +113,24 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
tag = tokens[1]
}
- if t, found := mux.Vars(r)["target"]; found {
- name = t
+ if _, found := r.URL.Query()["target"]; found {
+ name = query.Target
}
var buildArgs = map[string]string{}
- if a, found := mux.Vars(r)["buildargs"]; found {
- if err := json.Unmarshal([]byte(a), &buildArgs); err != nil {
- utils.BadRequest(w, "buildargs", a, err)
+ if _, found := r.URL.Query()["buildargs"]; found {
+ if err := json.Unmarshal([]byte(query.BuildArgs), &buildArgs); err != nil {
+ utils.BadRequest(w, "buildargs", query.BuildArgs, err)
return
}
}
// convert label formats
var labels = []string{}
- if l, found := mux.Vars(r)["labels"]; found {
+ if _, found := r.URL.Query()["labels"]; found {
var m = map[string]string{}
- if err := json.Unmarshal([]byte(l), &m); err != nil {
- utils.BadRequest(w, "labels", l, err)
+ if err := json.Unmarshal([]byte(query.Labels), &m); err != nil {
+ utils.BadRequest(w, "labels", query.Labels, err)
return
}
@@ -141,7 +140,7 @@ func BuildImage(w http.ResponseWriter, r *http.Request) {
}
pullPolicy := buildah.PullIfMissing
- if _, found := mux.Vars(r)["pull"]; found {
+ if _, found := r.URL.Query()["pull"]; found {
if query.Pull {
pullPolicy = buildah.PullAlways
}
diff --git a/pkg/api/handlers/libpod/containers.go b/pkg/api/handlers/libpod/containers.go
index 752b004d8..d8dd0d69b 100644
--- a/pkg/api/handlers/libpod/containers.go
+++ b/pkg/api/handlers/libpod/containers.go
@@ -178,7 +178,6 @@ func KillContainer(w http.ResponseWriter, r *http.Request) {
func WaitContainer(w http.ResponseWriter, r *http.Request) {
exitCode, err := utils.WaitContainer(w, r)
if err != nil {
- utils.InternalServerError(w, err)
return
}
utils.WriteResponse(w, http.StatusOK, strconv.Itoa(int(exitCode)))
diff --git a/pkg/api/handlers/libpod/pods.go b/pkg/api/handlers/libpod/pods.go
index f5700579b..e8dc5bde2 100644
--- a/pkg/api/handlers/libpod/pods.go
+++ b/pkg/api/handlers/libpod/pods.go
@@ -13,7 +13,6 @@ import (
"github.com/containers/libpod/pkg/api/handlers"
"github.com/containers/libpod/pkg/api/handlers/utils"
"github.com/containers/libpod/pkg/util"
- "github.com/gorilla/mux"
"github.com/gorilla/schema"
"github.com/pkg/errors"
)
@@ -353,7 +352,7 @@ func PodKill(w http.ResponseWriter, r *http.Request) {
signal = "SIGKILL"
)
query := struct {
- signal string `schema:"signal"`
+ Signal string `schema:"signal"`
}{
// override any golang type defaults
}
@@ -362,9 +361,8 @@ func PodKill(w http.ResponseWriter, r *http.Request) {
errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String()))
return
}
- muxVars := mux.Vars(r)
- if _, found := muxVars["signal"]; found {
- signal = query.signal
+ if _, found := r.URL.Query()["signal"]; found {
+ signal = query.Signal
}
sig, err := util.ParseSignal(signal)
diff --git a/pkg/api/handlers/utils/containers.go b/pkg/api/handlers/utils/containers.go
index 402005581..07efef0f5 100644
--- a/pkg/api/handlers/utils/containers.go
+++ b/pkg/api/handlers/utils/containers.go
@@ -78,9 +78,12 @@ func RemoveContainer(w http.ResponseWriter, r *http.Request, force, vols bool) {
}
func WaitContainer(w http.ResponseWriter, r *http.Request) (int32, error) {
+ var (
+ err error
+ interval time.Duration
+ )
runtime := r.Context().Value("runtime").(*libpod.Runtime)
decoder := r.Context().Value("decoder").(*schema.Decoder)
- // /{version}/containers/(name)/restart
query := struct {
Interval string `schema:"interval"`
Condition string `schema:"condition"`
@@ -91,25 +94,34 @@ func WaitContainer(w http.ResponseWriter, r *http.Request) (int32, error) {
Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String()))
return 0, err
}
-
- if len(query.Condition) > 0 {
- UnSupportedParameter("condition")
+ if _, found := r.URL.Query()["interval"]; found {
+ interval, err = time.ParseDuration(query.Interval)
+ if err != nil {
+ InternalServerError(w, err)
+ return 0, err
+ }
+ } else {
+ interval, err = time.ParseDuration("250ms")
+ if err != nil {
+ InternalServerError(w, err)
+ return 0, err
+ }
+ }
+ condition := define.ContainerStateStopped
+ if _, found := r.URL.Query()["condition"]; found {
+ condition, err = define.StringToContainerStatus(query.Condition)
+ if err != nil {
+ InternalServerError(w, err)
+ return 0, err
+ }
}
-
name := GetName(r)
con, err := runtime.LookupContainer(name)
if err != nil {
ContainerNotFound(w, name, err)
return 0, err
}
- if len(query.Interval) > 0 {
- d, err := time.ParseDuration(query.Interval)
- if err != nil {
- Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse %s for interval", query.Interval))
- }
- return con.WaitWithInterval(d)
- }
- return con.Wait()
+ return con.WaitForConditionWithInterval(interval, condition)
}
// GenerateFilterFuncsFromMap is used to generate un-executed functions that can be used to filter
diff --git a/pkg/api/handlers/utils/images.go b/pkg/api/handlers/utils/images.go
index f68a71561..a97fd5c07 100644
--- a/pkg/api/handlers/utils/images.go
+++ b/pkg/api/handlers/utils/images.go
@@ -6,7 +6,6 @@ import (
"github.com/containers/libpod/libpod"
"github.com/containers/libpod/libpod/image"
- "github.com/gorilla/mux"
"github.com/gorilla/schema"
)
@@ -28,7 +27,7 @@ func GetImages(w http.ResponseWriter, r *http.Request) ([]*image.Image, error) {
return nil, err
}
var filters = []string{}
- if _, found := mux.Vars(r)["digests"]; found && query.Digests {
+ if _, found := r.URL.Query()["digests"]; found && query.Digests {
UnSupportedParameter("digests")
}