summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOpenShift Merge Robot <openshift-merge-robot@users.noreply.github.com>2019-12-28 12:35:23 +0100
committerGitHub <noreply@github.com>2019-12-28 12:35:23 +0100
commit24b4921508be011b8fc4707d262116f77c8a176b (patch)
treec9e6252ca41e337e2c69804e107f4cb2db339b1a
parent269b17349631e260cafda2a607c0650299705394 (diff)
parent2a5c235f789e866cb2c1d0fd54cc23c13bc1fc69 (diff)
downloadpodman-24b4921508be011b8fc4707d262116f77c8a176b.tar.gz
podman-24b4921508be011b8fc4707d262116f77c8a176b.tar.bz2
podman-24b4921508be011b8fc4707d262116f77c8a176b.zip
Merge pull request #4753 from NevilleC/nc-missingsize
Ensure SizeRw is shown when a user does 'inspect --size -t container'.
-rw-r--r--libpod/container_inspect.go7
-rw-r--r--libpod/container_internal.go14
-rw-r--r--test/e2e/inspect_test.go1
3 files changed, 13 insertions, 9 deletions
diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go
index 22afc61cc..639dd6e91 100644
--- a/libpod/container_inspect.go
+++ b/libpod/container_inspect.go
@@ -118,7 +118,7 @@ type InspectContainerData struct {
BoundingCaps []string `json:"BoundingCaps"`
ExecIDs []string `json:"ExecIDs"`
GraphDriver *driver.Data `json:"GraphDriver"`
- SizeRw int64 `json:"SizeRw,omitempty"`
+ SizeRw *int64 `json:"SizeRw,omitempty"`
SizeRootFs int64 `json:"SizeRootFs,omitempty"`
Mounts []InspectMount `json:"Mounts"`
Dependencies []string `json:"Dependencies"`
@@ -809,12 +809,13 @@ func (c *Container) getContainerInspectData(size bool, driverData *driver.Data)
if err != nil {
logrus.Errorf("error getting rootfs size %q: %v", config.ID, err)
}
+ data.SizeRootFs = rootFsSize
+
rwSize, err := c.rwSize()
if err != nil {
logrus.Errorf("error getting rw size %q: %v", config.ID, err)
}
- data.SizeRootFs = rootFsSize
- data.SizeRw = rwSize
+ data.SizeRw = &rwSize
}
return data, nil
}
diff --git a/libpod/container_internal.go b/libpod/container_internal.go
index 9d97ac5d6..562f783a7 100644
--- a/libpod/container_internal.go
+++ b/libpod/container_internal.go
@@ -84,7 +84,7 @@ func (c *Container) rootFsSize() (int64, error) {
return size + layerSize, err
}
-// rwSize Gets the size of the mutable top layer of the container.
+// rwSize gets the size of the mutable top layer of the container.
func (c *Container) rwSize() (int64, error) {
if c.config.Rootfs != "" {
var size int64
@@ -103,14 +103,16 @@ func (c *Container) rwSize() (int64, error) {
return 0, err
}
- // Get the size of the top layer by calculating the size of the diff
- // between the layer and its parent. The top layer of a container is
- // the only RW layer, all others are immutable
- layer, err := c.runtime.store.Layer(container.LayerID)
+ // The top layer of a container is
+ // the only readable/writeable layer, all others are immutable.
+ rwLayer, err := c.runtime.store.Layer(container.LayerID)
if err != nil {
return 0, err
}
- return c.runtime.store.DiffSize(layer.Parent, layer.ID)
+
+ // Get the size of the top layer by calculating the size of the diff
+ // between the layer and its parent.
+ return c.runtime.store.DiffSize(rwLayer.Parent, rwLayer.ID)
}
// bundlePath returns the path to the container's root filesystem - where the OCI spec will be
diff --git a/test/e2e/inspect_test.go b/test/e2e/inspect_test.go
index 2d81ef0d8..9d23384ea 100644
--- a/test/e2e/inspect_test.go
+++ b/test/e2e/inspect_test.go
@@ -86,6 +86,7 @@ var _ = Describe("Podman inspect", func() {
Expect(result.ExitCode()).To(Equal(0))
conData := result.InspectContainerToJSON()
Expect(conData[0].SizeRootFs).To(BeNumerically(">", 0))
+ Expect(*conData[0].SizeRw).To(BeNumerically(">=", 0))
})
It("podman inspect container and image", func() {