API: fix libpod's container wait endpoint condition conversion

Signed-off-by: Nikolay Edigaryev <edigaryev@gmail.com>
This commit is contained in:
Nikolay Edigaryev
2021-02-17 21:18:39 +03:00
parent d48f4a0e1f
commit 9699e81a06
2 changed files with 16 additions and 1 deletions

View File

@ -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 (