From da15f2f8817a432bce7e578de23554e5ed854f13 Mon Sep 17 00:00:00 2001 From: Steve Taylor Date: Thu, 5 Mar 2020 22:53:50 +0000 Subject: Implement size parameter on ListContainers Signed-off-by: Steve Taylor --- pkg/api/handlers/generic/containers.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'pkg/api/handlers/generic/containers.go') diff --git a/pkg/api/handlers/generic/containers.go b/pkg/api/handlers/generic/containers.go index ab587ded4..5b52cdfa9 100644 --- a/pkg/api/handlers/generic/containers.go +++ b/pkg/api/handlers/generic/containers.go @@ -57,6 +57,10 @@ func ListContainers(w http.ResponseWriter, r *http.Request) { }{ // override any golang type defaults } + + // Default Size to false + query.Size = false + if err := decoder.Decode(&query, r.URL.Query()); err != nil { utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String())) return @@ -85,7 +89,7 @@ func ListContainers(w http.ResponseWriter, r *http.Request) { var list = make([]*handlers.Container, len(containers)) for i, ctnr := range containers { - api, err := handlers.LibpodToContainer(ctnr, infoData) + api, err := handlers.LibpodToContainer(ctnr, infoData, query.Size) if err != nil { utils.InternalServerError(w, err) return -- cgit v1.2.3-54-g00ecf From 83e52cf787eead5434a982230f0fdc8b4f3a10df Mon Sep 17 00:00:00 2001 From: Steve Taylor Date: Thu, 5 Mar 2020 23:02:45 +0000 Subject: Implemented size parameter on GetContainer Signed-off-by: Steve Taylor --- pkg/api/handlers/generic/containers.go | 16 +++++++++++++++- pkg/api/handlers/types.go | 23 ++++++++++++++++++++--- 2 files changed, 35 insertions(+), 4 deletions(-) (limited to 'pkg/api/handlers/generic/containers.go') diff --git a/pkg/api/handlers/generic/containers.go b/pkg/api/handlers/generic/containers.go index 5b52cdfa9..24b0ecb77 100644 --- a/pkg/api/handlers/generic/containers.go +++ b/pkg/api/handlers/generic/containers.go @@ -101,6 +101,20 @@ func ListContainers(w http.ResponseWriter, r *http.Request) { func GetContainer(w http.ResponseWriter, r *http.Request) { runtime := r.Context().Value("runtime").(*libpod.Runtime) + decoder := r.Context().Value("decoder").(*schema.Decoder) + query := struct { + Size bool `schema:"size"` + }{ + // override any golang type defaults + } + + // Default Size to false + query.Size = false + + if err := decoder.Decode(&query, r.URL.Query()); err != nil { + utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String())) + return + } name := utils.GetName(r) ctnr, err := runtime.LookupContainer(name) @@ -108,7 +122,7 @@ func GetContainer(w http.ResponseWriter, r *http.Request) { utils.ContainerNotFound(w, name, err) return } - api, err := handlers.LibpodToContainerJSON(ctnr) + api, err := handlers.LibpodToContainerJSON(ctnr, query.Size) if err != nil { utils.InternalServerError(w, err) return diff --git a/pkg/api/handlers/types.go b/pkg/api/handlers/types.go index ada249e56..c5a5d1088 100644 --- a/pkg/api/handlers/types.go +++ b/pkg/api/handlers/types.go @@ -402,7 +402,12 @@ func LibpodToContainer(l *libpod.Container, infoData []define.InfoData, sz bool) }, nil } -func LibpodToContainerJSON(l *libpod.Container) (*docker.ContainerJSON, error) { +func LibpodToContainerJSON(l *libpod.Container, sz bool) (*docker.ContainerJSON, error) { + var ( + sizeRootFs int64 + sizeRW int64 + ) + _, imageName := l.Image() inspect, err := l.Inspect(true) if err != nil { @@ -439,6 +444,18 @@ func LibpodToContainerJSON(l *libpod.Container) (*docker.ContainerJSON, error) { return nil, err } + if sz { + if sizeRW, err = l.RWSize(); err != nil { + return nil, err + } + if sizeRootFs, err = l.RootFsSize(); err != nil { + return nil, err + } + } else { + sizeRW = 0 + sizeRootFs = 0 + } + cb := docker.ContainerJSONBase{ ID: l.ID(), Created: l.CreatedTime().String(), @@ -461,8 +478,8 @@ func LibpodToContainerJSON(l *libpod.Container) (*docker.ContainerJSON, error) { ExecIDs: inspect.ExecIDs, HostConfig: &hc, GraphDriver: graphDriver, - SizeRw: inspect.SizeRw, - SizeRootFs: &inspect.SizeRootFs, + SizeRw: &sizeRW, + SizeRootFs: &sizeRootFs, } stopTimeout := int(l.StopTimeout()) -- cgit v1.2.3-54-g00ecf From 920d09c1740547558c64315c0c2a826fc8294bda Mon Sep 17 00:00:00 2001 From: Steve Taylor Date: Fri, 6 Mar 2020 12:12:17 +0000 Subject: Removed the unnecessary code removed defaulting of query.Size amended types.LibpodToContainer, removed hard coded true from inspect call Signed-off-by: Steve Taylor --- pkg/api/handlers/generic/containers.go | 6 ------ pkg/api/handlers/types.go | 23 +++-------------------- 2 files changed, 3 insertions(+), 26 deletions(-) (limited to 'pkg/api/handlers/generic/containers.go') diff --git a/pkg/api/handlers/generic/containers.go b/pkg/api/handlers/generic/containers.go index 24b0ecb77..b8460702c 100644 --- a/pkg/api/handlers/generic/containers.go +++ b/pkg/api/handlers/generic/containers.go @@ -58,9 +58,6 @@ func ListContainers(w http.ResponseWriter, r *http.Request) { // override any golang type defaults } - // Default Size to false - query.Size = false - if err := decoder.Decode(&query, r.URL.Query()); err != nil { utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String())) return @@ -108,9 +105,6 @@ func GetContainer(w http.ResponseWriter, r *http.Request) { // override any golang type defaults } - // Default Size to false - query.Size = false - if err := decoder.Decode(&query, r.URL.Query()); err != nil { utils.Error(w, "Something went wrong.", http.StatusBadRequest, errors.Wrapf(err, "Failed to parse parameters for %s", r.URL.String())) return diff --git a/pkg/api/handlers/types.go b/pkg/api/handlers/types.go index c5a5d1088..d3e92042f 100644 --- a/pkg/api/handlers/types.go +++ b/pkg/api/handlers/types.go @@ -403,13 +403,8 @@ func LibpodToContainer(l *libpod.Container, infoData []define.InfoData, sz bool) } func LibpodToContainerJSON(l *libpod.Container, sz bool) (*docker.ContainerJSON, error) { - var ( - sizeRootFs int64 - sizeRW int64 - ) - _, imageName := l.Image() - inspect, err := l.Inspect(true) + inspect, err := l.Inspect(sz) if err != nil { return nil, err } @@ -444,18 +439,6 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*docker.ContainerJSON, return nil, err } - if sz { - if sizeRW, err = l.RWSize(); err != nil { - return nil, err - } - if sizeRootFs, err = l.RootFsSize(); err != nil { - return nil, err - } - } else { - sizeRW = 0 - sizeRootFs = 0 - } - cb := docker.ContainerJSONBase{ ID: l.ID(), Created: l.CreatedTime().String(), @@ -478,8 +461,8 @@ func LibpodToContainerJSON(l *libpod.Container, sz bool) (*docker.ContainerJSON, ExecIDs: inspect.ExecIDs, HostConfig: &hc, GraphDriver: graphDriver, - SizeRw: &sizeRW, - SizeRootFs: &sizeRootFs, + SizeRw: inspect.SizeRw, + SizeRootFs: &inspect.SizeRootFs, } stopTimeout := int(l.StopTimeout()) -- cgit v1.2.3-54-g00ecf