Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Cmd ¶
type Cmd struct { // Path is the command to run Path string `vic:"0.1" scope:"read-only" key:"Path"` // Args is the command line arguments including the command in Args[0] Args []string `vic:"0.1" scope:"read-only" key:"Args"` // Env specifies the environment of the process Env []string `vic:"0.1" scope:"read-only" key:"Env"` // Dir specifies the working directory of the command Dir string `vic:"0.1" scope:"read-only" key:"Dir"` }
Cmd is here because the encoding packages seem to have issues with the full exec.Cmd struct
type Common ¶
type Common struct { // A reference to the components hosting execution environment, if any ExecutionEnvironment string // Unambiguous ID with meaning in the context of its hosting execution environment. Changing this definition will cause container backward compatibility issue. Please don't change this. ID string `vic:"0.1" scope:"read-only" key:"id"` // Convenience field to record a human readable name Name string `vic:"0.1" scope:"read-only" key:"name"` // Freeform notes related to the entity Notes string `vic:"0.1" scope:"hidden" key:"notes"` }
Common data between managed entities, across execution environments
type ContainerNetwork ¶
type ContainerNetwork struct { // Common.Name - the symbolic name for the network, e.g. web or backend // Common.ID - identifier of the underlay for the network Common Type string `vic:"0.1" scope:"read-write" key:"type"` // Destinations is a list of CIDRs used for routing traffic to the gateway Destinations []net.IPNet `vic:"0.1" scope:"read-only" key:"destinations"` // The network scope the IP belongs to. // The IP address is the default gateway Gateway net.IPNet `vic:"0.1" scope:"read-only" key:"gateway"` // Should this gateway be the default route for containers on the network Default bool `vic:"0.1" scope:"read-only" key:"default"` // The set of nameservers associated with this network - may be empty Nameservers []net.IP `vic:"0.1" scope:"read-only" key:"dns"` // The IP ranges for this network Pools []ip.Range `vic:"0.1" scope:"read-only" key:"pools"` // set of network wide links and aliases for this container on this network Aliases []string `vic:"0.1" scope:"hidden" key:"aliases"` // Level of trust configured for this network TrustLevel Assigned struct { Gateway net.IPNet `vic:"0.1" scope:"read-write" key:"gateway"` Nameservers []net.IP `vic:"0.1" scope:"read-write" key:"dns"` } `vic:"0.1" scope:"read-write" key:"assigned"` }
ContainerNetwork is the data needed on a per container basis both for vSphere to ensure it's attached to the correct network, and in the guest to ensure the interface is correctly configured.
type ContainerVM ¶
type ContainerVM struct { Common // The version of the bootstrap image that this container was booted from. Version string // Name aliases for this specific container, Maps alias to unambiguous name // This uses unambiguous name rather than reified network endpoint to persist // the intent rather than a point-in-time manifesting of that intent. Aliases map[string]string // The location of the interaction service that the tether should connect to. Examples: // * tcp://x.x.x.x:2377 // * vmci://moid - should this be an moid or a VMCI CID? Does one insulate us from reboots? Interaction url.URL // Key is the host key used during communicate back with the Interaction endpoint if any // Used if the vSocket agent is responsible for authenticating the connection AgentKey []byte }
ContainerVM holds that data tightly associated with a containerVM, but that should not be visible to the guest. This is the external complement to ExecutorConfig.
type CopyMode ¶
type CopyMode int
CopyMode type to define whether to copy data from the base image on mount
type Diagnostics ¶
type Diagnostics struct { // Should debugging be enabled on whatever component this is and at what level DebugLevel int `vic:"0.1" scope:"read-only" key:"debug"` // RessurectionCount is a log of how many times the entity has been restarted due // to error exit ResurrectionCount int `vic:"0.1" scope:"read-write" key:"resurrections"` // ExitLogs is a best effort record of the time of process death and the cause for // restartable entities ExitLogs []ExitLog `vic:"0.1" scope:"read-write" key:"exitlogs"` // SyslogConfig holds configuration for connecting to a syslog // server SysLogConfig *SysLogConfig `vic:"0.1" scope:"read-only" key:"syslog"` }
Diagnostics records some basic control and lifecycle information for diagnostic purposes
type ExecutorConfig ¶
type ExecutorConfig struct { ExecutorConfigCommon `vic:"0.1" scope:"read-only" key:"common"` // CreateTime stamp CreateTime int64 `vic:"0.1" scope:"read-write" key:"createtime"` // Diagnostics holds basic diagnostics data Diagnostics Diagnostics `vic:"0.1" scope:"read-only" key:"diagnostics"` // Sessions is the set of sessions currently hosted by this executor // These are keyed by session ID Sessions map[string]*SessionConfig `vic:"0.1" scope:"read-only" key:"sessions"` // Execs is the set of non-persistent sessions hosted by this executor Execs map[string]*SessionConfig `vic:"0.1" scope:"read-only,non-persistent" key:"execs"` // Maps the mount name to the detail mount specification Mounts map[string]MountSpec `vic:"0.1" scope:"read-only" key:"mounts"` // This describes an executors presence on a network, and contains sufficient // information to configure the interface in the guest. Networks map[string]*NetworkEndpoint `vic:"0.1" scope:"read-only" key:"networks"` // Key is the host key used during communicate back with the Interaction endpoint if any // Used if the in-guest tether is responsible for authenticating the connection Key []byte `vic:"0.1" scope:"read-only" key:"key"` // Layer id that is backing this container VM LayerID string `vic:"0.1" scope:"read-only" key:"layerid"` // Image id that is backing this container VM ImageID string `vic:"0.1" scope:"read-only" key:"imageid"` // Blob metadata for the caller Annotations map[string]string `vic:"0.1" scope:"hidden" key:"annotations"` // Repository requested by user // TODO: a bit docker specific RepoName string `vic:"0.1" scope:"read-only" key:"repo"` // version Version *version.Build `vic:"0.1" scope:"read-only" key:"version"` // AsymmetricRouting is set to true if the VCH needs to be setup for asymmetric routing AsymmetricRouting bool `vic:"0.1" scope:"read-only" key:"asymrouting"` // Hostname and domainname provided by personality Hostname string `vic:"0.1" scope:"read-only" key:"hostname"` Domainname string `vic:"0.1" scope:"read-only" key:"domainname"` }
ExecutorConfig holds the data tightly associated with an Executor. This is distinct from Sessions in that there is no process inherently associated - this is closer to a ThreadPool than a Thread and is the owner of the shared filesystem environment. This is the guest visible complement to ContainerVM.
type ExecutorConfigCommon ¶
type ExecutorConfigCommon struct { // A reference to the components hosting execution environment, if any ExecutionEnvironment string // Unambiguous ID with meaning in the context of its hosting execution environment ID string `vic:"0.1" scope:"read-only" key:"id"` // Convenience field to record a human readable name Name string `vic:"0.1" scope:"hidden" key:"name"` // Freeform notes related to the entity Notes string `vic:"0.1" scope:"hidden" key:"notes"` }
Common data (specifically for a containerVM) between managed entities, across execution environments.
type MountSpec ¶
type MountSpec struct { // A URI->path mapping, e.g. // May contain credentials Source url.URL `vic:"0.1" scope:"read-only" key:"source"` // The path in the executor at which this should be mounted Path string `vic:"0.1" scope:"read-only" key:"dest"` // Freeform mode string, which could translate directly to mount options // We may want to turn this into a more structured form eventually Mode string `vic:"0.1" scope:"read-only" key:"mode"` // CopyMode specifies if data should be copied from the base image on first mount CopyMode CopyMode `vic:"0.1" scope:"read-only" key:"copymode"` }
MountSpec details a mount that must be executed within the executor A mount is a URI -> path mapping with a credential of some kind In the case of a labeled disk:
label://<label name> => </mnt/path>
type NetworkEndpoint ¶
type NetworkEndpoint struct { // Common.Name - the nic alias requested (only one name and one alias possible in linux) // Common.ID - pci slot of the vnic allowing for interface identifcation in-guest Common // Whether this endpoint's IP was specified by the client (true if it was) Static bool `vic:"0.1" scope:"read-only" key:"static"` // IP address to assign IP *net.IPNet `vic:"0.1" scope:"read-only" key:"ip"` // Actual IP address assigned Assigned net.IPNet `vic:"0.1" scope:"read-write" key:"assigned"` // The network in which this information should be interpreted. This is embedded directly rather than // as a pointer so that we can ensure the data is consistent Network ContainerNetwork `vic:"0.1" scope:"read-only" key:"network"` // The list of exposed ports on the container Ports []string `vic:"0.1" scope:"read-only" key:"ports"` // whether or not this represents an internal network Internal bool `vic:"0.1" scope:"read-only" key:"internal"` }
NetworkEndpoint describes a network presence in the form a vNIC in sufficient detail that it can be: a. created - the vNIC added to a VM b. identified - the guestOS can determine which interface it corresponds to c. configured - the guestOS can configure the interface correctly
type SessionConfig ¶
type SessionConfig struct { // The primary session may have the same ID as the executor owning it Common `vic:"0.1" scope:"read-only" key:"common"` // The primary process for the session Cmd Cmd `vic:"0.1" scope:"read-only" key:"cmd"` // Allow attach Attach bool `vic:"0.1" scope:"read-only" key:"attach"` OpenStdin bool `vic:"0.1" scope:"read-only" key:"openstdin"` // Delay launching the Cmd until an attach request comes RunBlock bool `vic:"0.1" scope:"read-write" key:"runblock"` // Should this config be activated or not Active bool `vic:"0.1" scope:"read-only" key:"active"` // Allocate a tty or not Tty bool `vic:"0.1" scope:"read-only" key:"tty"` ExitStatus int `vic:"0.1" scope:"read-write" key:"status"` Started string `vic:"0.1" scope:"read-write" key:"started"` Restart bool `vic:"0.1" scope:"read-only" key:"restart"` // StopSignal is the signal name or number used to stop container session StopSignal string `vic:"0.1" scope:"read-only" key:"stopSignal"` // Diagnostics holds basic diagnostics data Diagnostics Diagnostics `vic:"0.1" scope:"read-only" key:"diagnostics"` // User and group for setuid programs. // Need to go here since UID/GID resolution must be done on appliance User string `vic:"0.1" scope:"read-only" key:"User"` Group string `vic:"0.1" scope:"read-only" key:"Group"` // Detail contains create/started/stopped timestamps. It is placed last in the structure so that all // other state serialization is complete by the time this is updated when iterating in order. Detail `vic:"0.1" scope:"read-write" key:"detail"` }
SessionConfig defines the content of a session - this maps to the root of a process tree inside an executor This is close to but not perfectly aligned with the new docker/docker/daemon/execdriver/driver:CommonProcessConfig
type SysLogConfig ¶
type SysLogConfig struct { // Network can be udp, tcp, udp6, or tcp6 Network string // RAddr is the remote address of the syslog endpoint RAddr string }
SyslogConfig holds the configuration necessary to connect to a syslog server
type TrustLevel ¶
type TrustLevel int
Container network firewall trust configuration value
const ( Unspecified TrustLevel = iota Published Open Closed Outbound Peers )
func ParseTrustLevel ¶
func ParseTrustLevel(value string) (TrustLevel, error)
func (TrustLevel) String ¶
func (t TrustLevel) String() string