diff options
author | Nikolay Edigaryev <edigaryev@gmail.com> | 2021-02-17 21:18:39 +0300 |
---|---|---|
committer | Nikolay Edigaryev <edigaryev@gmail.com> | 2021-02-18 00:34:23 +0300 |
commit | 9699e81a0624c8505b63d9ac5b5a30980c9f5b46 (patch) | |
tree | fc83f8e8d0f16ff96cd728a756a3bead9e255018 /pkg/api/handlers/decoder.go | |
parent | d48f4a0e1f3d24fb4f98351b5bdd31daa34c0fb6 (diff) | |
download | podman-9699e81a0624c8505b63d9ac5b5a30980c9f5b46.tar.gz podman-9699e81a0624c8505b63d9ac5b5a30980c9f5b46.tar.bz2 podman-9699e81a0624c8505b63d9ac5b5a30980c9f5b46.zip |
API: fix libpod's container wait endpoint condition conversion
Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com>
Diffstat (limited to 'pkg/api/handlers/decoder.go')
-rw-r--r-- | pkg/api/handlers/decoder.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/pkg/api/handlers/decoder.go b/pkg/api/handlers/decoder.go index 54087168a..123d325aa 100644 --- a/pkg/api/handlers/decoder.go +++ b/pkg/api/handlers/decoder.go @@ -6,6 +6,7 @@ import ( "syscall" "time" + "github.com/containers/podman/v2/libpod/define" "github.com/containers/podman/v2/pkg/util" "github.com/gorilla/schema" "github.com/sirupsen/logrus" @@ -19,6 +20,7 @@ func NewAPIDecoder() *schema.Decoder { d.IgnoreUnknownKeys(true) d.RegisterConverter(map[string][]string{}, convertURLValuesString) d.RegisterConverter(time.Time{}, convertTimeString) + d.RegisterConverter(define.ContainerStatus(0), convertContainerStatusString) var Signal syscall.Signal d.RegisterConverter(Signal, convertSignal) @@ -46,6 +48,19 @@ func convertURLValuesString(query string) reflect.Value { return reflect.ValueOf(f) } +func convertContainerStatusString(query string) reflect.Value { + result, err := define.StringToContainerStatus(query) + if err != nil { + logrus.Infof("convertContainerStatusString: Failed to parse %s: %s", query, err.Error()) + + // We return nil here instead of result because reflect.ValueOf().IsValid() will be true + // in github.com/gorilla/schema's decoder, which means there's no parsing error + return reflect.ValueOf(nil) + } + + return reflect.ValueOf(result) +} + // isZero() can be used to determine if parsing failed. func convertTimeString(query string) reflect.Value { var ( |