Files
podman/libpod/define/pod_inspect.go
Valentin Rothberg 636881ece5 pod config: add a CreateCommand field
Add a `CreateCommand` field to the pod config which includes the entire
`os.Args` at pod-creation.  Similar to the already existing field in a
container config, we need this information to properly generate generic
systemd unit files for pods.  It's a prerequisite to support the `--new`
flag for pods.

Also add the `CreateCommand` to the pod-inspect data, which can come in
handy for debugging, general inspection and certainly for the tests that
are added along with the other changes.

Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
2020-06-11 11:01:13 +02:00

103 lines
4.0 KiB
Go

package define
import (
"net"
"time"
"github.com/cri-o/ocicni/pkg/ocicni"
)
// InspectPodData contains detailed information on a pod's configuration and
// state. It is used as the output of Inspect on pods.
type InspectPodData struct {
// ID is the ID of the pod.
ID string `json:"Id"`
// Name is the name of the pod.
Name string
// Namespace is the Libpod namespace the pod is placed in.
Namespace string `json:"Namespace,omitempty"`
// Created is the time when the pod was created.
Created time.Time
// CreateCommand is the full command plus arguments of the process the
// container has been created with.
CreateCommand []string `json:"CreateCommand,omitempty"`
// State represents the current state of the pod.
State string `json:"State"`
// Hostname is the hostname that the pod will set.
Hostname string
// Labels is a set of key-value labels that have been applied to the
// pod.
Labels map[string]string `json:"Labels,omitempty"`
// CreateCgroup is whether this pod will create its own CGroup to group
// containers under.
CreateCgroup bool
// CgroupParent is the parent of the pod's CGroup.
CgroupParent string `json:"CgroupParent,omitempty"`
// CgroupPath is the path to the pod's CGroup.
CgroupPath string `json:"CgroupPath,omitempty"`
// CreateInfra is whether this pod will create an infra container to
// share namespaces.
CreateInfra bool
// InfraContainerID is the ID of the pod's infra container, if one is
// present.
InfraContainerID string `json:"InfraContainerID,omitempty"`
// InfraConfig is the configuration of the infra container of the pod.
// Will only be set if CreateInfra is true.
InfraConfig *InspectPodInfraConfig `json:"InfraConfig,omitempty"`
// SharedNamespaces contains a list of namespaces that will be shared by
// containers within the pod. Can only be set if CreateInfra is true.
SharedNamespaces []string `json:"SharedNamespaces,omitempty"`
// NumContainers is the number of containers in the pod, including the
// infra container.
NumContainers uint
// Containers gives a brief summary of all containers in the pod and
// their current status.
Containers []InspectPodContainerInfo `json:"Containers,omitempty"`
}
// InspectPodInfraConfig contains the configuration of the pod's infra
// container.
type InspectPodInfraConfig struct {
// PortBindings are ports that will be forwarded to the infra container
// and then shared with the pod.
PortBindings []ocicni.PortMapping
// HostNetwork is whether the infra container (and thus the whole pod)
// will use the host's network and not create a network namespace.
HostNetwork bool
// StaticIP is a static IPv4 that will be assigned to the infra
// container and then used by the pod.
StaticIP net.IP
// StaticMAC is a static MAC address that will be assigned to the infra
// container and then used by the pod.
StaticMAC net.HardwareAddr
// NoManageResolvConf indicates that the pod will not manage resolv.conf
// and instead each container will handle their own.
NoManageResolvConf bool
// DNSServer is a set of DNS Servers that will be used by the infra
// container's resolv.conf and shared with the remainder of the pod.
DNSServer []string
// DNSSearch is a set of DNS search domains that will be used by the
// infra container's resolv.conf and shared with the remainder of the
// pod.
DNSSearch []string
// DNSOption is a set of DNS options that will be used by the infra
// container's resolv.conf and shared with the remainder of the pod.
DNSOption []string
// NoManageHosts indicates that the pod will not manage /etc/hosts and
// instead each container will handle their own.
NoManageHosts bool
// HostAdd adds a number of hosts to the infra container's resolv.conf
// which will be shared with the rest of the pod.
HostAdd []string
}
// InspectPodContainerInfo contains information on a container in a pod.
type InspectPodContainerInfo struct {
// ID is the ID of the container.
ID string `json:"Id"`
// Name is the name of the container.
Name string
// State is the current status of the container.
State string
}