// getContainerStatus creates the api.containerStatus of a container from the podInfo. // TODO(yifan): Get more detailed info such as Image, ImageID, etc. func (p *podInfo) getContainerStatus(container *kubecontainer.Container) api.ContainerStatus { var status api.ContainerStatus status.Name = container.Name status.Image = container.Image containerID, _ := parseContainerID(string(container.ID)) status.ImageID = containerID.imageID switch p.state { case Running: // TODO(yifan): Get StartedAt. status.State = api.ContainerState{ Running: &api.ContainerStateRunning{ StartedAt: util.Unix(container.Created, 0), }, } case Embryo, Preparing, Prepared: status.State = api.ContainerState{Waiting: &api.ContainerStateWaiting{}} case AbortedPrepare, Deleting, Exited, Garbage: exitCode, ok := p.exitCodes[status.ImageID] if !ok { glog.Warningf("rkt: Cannot get exit code for container %v", container) } exitCode = -1 status.State = api.ContainerState{ Terminated: &api.ContainerStateTerminated{ ExitCode: exitCode, StartedAt: util.Unix(container.Created, 0), }, } default: glog.Warningf("rkt: Unknown pod state: %q", p.state) } return status }