1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- // +build linux
- package runc
- import (
- "encoding/json"
- "os"
- "time"
- "github.com/codegangsta/cli"
- "github.com/opencontainers/runc/libcontainer/utils"
- )
- // cState represents the platform agnostic pieces relating to a running
- // container's status and state. Note: The fields in this structure adhere to
- // the opencontainers/runtime-spec/specs-go requirement for json fields that must be returned
- // in a state command.
- type cState struct {
- // Version is the OCI version for the container
- Version string `json:"ociVersion"`
- // ID is the container ID
- ID string `json:"id"`
- // InitProcessPid is the init process id in the parent namespace
- InitProcessPid int `json:"pid"`
- // Bundle is the path on the filesystem to the bundle
- Bundle string `json:"bundlePath"`
- // Rootfs is a path to a directory containing the container's root filesystem.
- Rootfs string `json:"rootfsPath"`
- // Status is the current status of the container, running, paused, ...
- Status string `json:"status"`
- // Created is the unix timestamp for the creation time of the container in UTC
- Created time.Time `json:"created"`
- }
- var stateCommand = cli.Command{
- Name: "state",
- Usage: "output the state of a container",
- ArgsUsage: `<container-id>
- Where "<container-id>" is your name for the instance of the container.`,
- Description: `The state command outputs current state information for the
- instance of a container.`,
- Action: func(context *cli.Context) {
- container, err := getContainer(context)
- if err != nil {
- fatal(err)
- }
- containerStatus, err := container.Status()
- if err != nil {
- fatal(err)
- }
- state, err := container.State()
- if err != nil {
- fatal(err)
- }
- cs := cState{
- Version: state.BaseState.Config.Version,
- ID: state.BaseState.ID,
- InitProcessPid: state.BaseState.InitProcessPid,
- Status: containerStatus.String(),
- Bundle: utils.SearchLabels(state.Config.Labels, "bundle"),
- Rootfs: state.BaseState.Config.Rootfs,
- Created: state.BaseState.Created}
- data, err := json.MarshalIndent(cs, "", " ")
- if err != nil {
- fatal(err)
- }
- os.Stdout.Write(data)
- },
- }
|