From 74ee579375654c79fa710f13b7c2ee3810366f82 Mon Sep 17 00:00:00 2001 From: umohnani8 Date: Wed, 29 Nov 2017 16:56:18 -0500 Subject: Update kpod inspect to use the new container state kpod inspect now uses the new libpod container state and closely matches the output of docker inspect some aspects of it are still WIP as the libpod container state is still being worked on Signed-off-by: umohnani8 --- libpod/container_inspect.go | 70 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 libpod/container_inspect.go (limited to 'libpod/container_inspect.go') diff --git a/libpod/container_inspect.go b/libpod/container_inspect.go new file mode 100644 index 000000000..5f29a231e --- /dev/null +++ b/libpod/container_inspect.go @@ -0,0 +1,70 @@ +package libpod + +import ( + "github.com/projectatomic/libpod/libpod/driver" + "github.com/sirupsen/logrus" +) + +func (c *Container) getContainerInspectData(size bool, driverData *driver.Data) (*ContainerInspectData, error) { + config := c.config + runtimeInfo := c.state + spec := c.config.Spec + + args := config.Spec.Process.Args + var path string + if len(args) > 0 { + path = args[0] + } + if len(args) > 1 { + args = args[1:] + } + + data := &ContainerInspectData{ + ID: config.ID, + Created: config.CreatedTime, + Path: path, + Args: args, + State: &ContainerInspectState{ + OciVersion: spec.Version, + Status: runtimeInfo.State.String(), + Running: runtimeInfo.State == ContainerStateRunning, + Paused: runtimeInfo.State == ContainerStatePaused, + OOMKilled: runtimeInfo.OOMKilled, + Dead: runtimeInfo.State.String() == "bad state", + Pid: runtimeInfo.PID, + ExitCode: runtimeInfo.ExitCode, + Error: "", // can't get yet + StartedAt: runtimeInfo.StartedTime, + FinishedAt: runtimeInfo.FinishedTime, + }, + ImageID: config.RootfsImageID, + ImageName: config.RootfsImageName, + ResolvConfPath: "", // TODO get from networking path + HostnamePath: spec.Annotations["io.kubernetes.cri-o.HostnamePath"], // not sure + HostsPath: "", // can't get yet + StaticDir: config.StaticDir, + LogPath: c.LogPath(), + Name: config.Name, + Driver: driverData.Name, + MountLabel: config.MountLabel, + ProcessLabel: spec.Process.SelinuxLabel, + AppArmorProfile: spec.Process.ApparmorProfile, + ExecIDs: []string{}, //TODO + GraphDriver: driverData, + Mounts: spec.Mounts, + NetworkSettings: &NetworkSettings{}, // TODO from networking patch + } + if size { + rootFsSize, err := c.rootFsSize() + if err != nil { + logrus.Errorf("error getting rootfs size %q: %v", config.ID, err) + } + rwSize, err := c.rwSize() + if err != nil { + logrus.Errorf("error getting rw size %q: %v", config.ID, err) + } + data.SizeRootFs = rootFsSize + data.SizeRw = rwSize + } + return data, nil +} -- cgit v1.2.3-54-g00ecf