diff options
Diffstat (limited to 'libpod/container_inspect.go')
-rw-r--r-- | libpod/container_inspect.go | 70 |
1 files changed, 70 insertions, 0 deletions
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 +} |