 Documentation
      ¶
      Documentation
      ¶
    
    
  
    
  
    Index ¶
- type BasicHandleFactory
- type Config
- type ConstantConfig
- type ContainerConfig
- type ContainerLifecycle
- type ContainerQuery
- type ContainerState
- type FileToCopy
- type Handle
- type HandleFactory
- type ID
- type PendingCommit
- type PortLayerVsphere
- func (p *PortLayerVsphere) Commit(handle Handle) (ID, error)
- func (p *PortLayerVsphere) CopyTo(handle Handle, targetDir string, fname string, perms int16, data []byte) (Handle, error)
- func (p *PortLayerVsphere) CreateContainer(name string) (Handle, error)
- func (p *PortLayerVsphere) DestroyContainer(cid ID) error
- func (p *PortLayerVsphere) GetHandle(cid ID) (Handle, error)
- func (p *PortLayerVsphere) Init(gateway VmomiGateway, factory HandleFactory) error
- func (p *PortLayerVsphere) SetEntryPoint(handle Handle, workDir string, execPath string, execArgs string) (Handle, error)
- func (p *PortLayerVsphere) SetLimits(handle Handle, memoryMb int, cpuMhz int) (Handle, error)
- func (p *PortLayerVsphere) SetRunState(handle Handle, runState RunState) (Handle, error)
 
- type ProcessConfig
- type ProcessLifecycle
- type ProcessRunState
- type ProcessState
- type ProcessStatus
- type ResourceLimits
- type RunState
- type VmomiGateway
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BasicHandleFactory ¶
type BasicHandleFactory struct {
}
    type Config ¶
type Config struct {
	Name   string
	Limits ResourceLimits
}
    variable container configuration state
type ConstantConfig ¶
config state that cannot change for the lifetime of the container
type ContainerConfig ¶
type ContainerConfig struct {
	ConstantConfig
	Config
	MainProcess ProcessConfig
	ExecdProcs  []ProcessConfig
}
    ContainerConfig is a type representing the configuration of a container and its processes
type ContainerLifecycle ¶
type ContainerLifecycle interface {
	// CreateContainer creates a new container representation and returns a Handle
	// The Handle can be used to configure the container before its actually created
	// Calling Commit on the Handle will create the container
	CreateContainer(name string) (Handle, error)
	// GetHandle allows for an existing container to be modified
	// The Handle can be used to reconfigure the container
	// Calling Commit on the Handle will apply the reconfiguration
	// Commit will fail if another client committed a modification after GetHandle was called
	GetHandle(cid ID) (Handle, error)
	// CopyTo copies a file into the container represented by the handle
	// If the container is stopped, the file will be copied in when it is next started
	CopyTo(handle Handle, targetDir string, fname string, perms int16, data []byte) (Handle, error)
	// SetEntryPoint sets the entry point for the container
	// This is the executable, the lifecycle of which is tied to the container lifecycle
	SetEntryPoint(handle Handle, workDir string, execPath string, execArgs string) (Handle, error)
	// SetLimits sets resource limits on the container
	// A value of -1 implies a default value, not unlimited
	// New limits will be ignored if committed to a running container
	SetLimits(handle Handle, memoryMb int, cpuMhz int) (Handle, error)
	// SetRunState allows for the running state of a container to be modified
	// Created is not a valid state and will return an error
	SetRunState(handle Handle, runState RunState) (Handle, error)
	// Commit applies changes made to the Handle to either a new or running container
	// Commit will fail if another client committed a modification after GetHandle was called
	// Commit blocks until all changes have been committed
	Commit(handle Handle) (ID, error)
	// DestroyContainer destroys an stopped container
	// It is up to the caller to put the container in stopped state before calling Destroy
	DestroyContainer(cid ID) error
}
    ContainerLifecycle represents operations concerned with the creation, modification and deletion of containers
type ContainerQuery ¶
type ContainerQuery interface {
	// ListContainers lists all container IDs for a given state
	// If forState is nil, all containers are returned
	ListContainers(forState RunState) ([]ID, error)
	// GetConfig returns container and process config
	GetContainerConfig(cid ID) (ContainerConfig, error)
	// GetState returns the current state of the container and its processes
	// This call will return a snapshot of the most recent state for each entity
	GetContainerState(cid ID) (ContainerState, error)
	// CopyFrom copies file data out of a running container
	// Returns an error if the container is not running
	CopyFrom(cid ID, sourceDir string, fname string) ([]byte, error)
}
    ContainerQuery represents queries that can be made against a Container
type ContainerState ¶
type ContainerState struct {
	Status      RunState
	MainProcess ProcessState
	ExecdProcs  []ProcessState
}
    ContainerState is a type representing the runtime state of a container and its processes
type FileToCopy ¶
type FileToCopy struct {
	// contains filtered or unexported fields
}
    type HandleFactory ¶
type HandleFactory interface {
	// contains filtered or unexported methods
}
    type ID ¶
type PendingCommit ¶
type PendingCommit struct {
	ConstantConfig
	// contains filtered or unexported fields
}
    config that will be applied to a container on commit Needs to be public as it will be shared by net, storage etc
type PortLayerVsphere ¶
type PortLayerVsphere struct {
	// contains filtered or unexported fields
}
    PortLayerVsphere is a WIP implementation of the execution.go interfaces
func (*PortLayerVsphere) Commit ¶
func (p *PortLayerVsphere) Commit(handle Handle) (ID, error)
func (*PortLayerVsphere) CopyTo ¶
func (*PortLayerVsphere) CreateContainer ¶
func (p *PortLayerVsphere) CreateContainer(name string) (Handle, error)
func (*PortLayerVsphere) DestroyContainer ¶
func (p *PortLayerVsphere) DestroyContainer(cid ID) error
func (*PortLayerVsphere) GetHandle ¶
func (p *PortLayerVsphere) GetHandle(cid ID) (Handle, error)
func (*PortLayerVsphere) Init ¶
func (p *PortLayerVsphere) Init(gateway VmomiGateway, factory HandleFactory) error
func (*PortLayerVsphere) SetEntryPoint ¶
func (*PortLayerVsphere) SetLimits ¶
type ProcessConfig ¶
configuration state of a container process
func NewProcessConfig ¶
func NewProcessConfig(workDir string, execPath string, execArgs string) ProcessConfig
type ProcessLifecycle ¶
type ProcessLifecycle interface {
	// ExecProcess executes a process in the container
	// The lifecycle of the process is independent of the container main process
	// The ID returned is a uuid handle to the process
	ExecProcess(cid ID, workDir string, execPath string, execArgs string) (ID, error)
	// Send a signal to the process
	// Specifying a process ID will signal an exec'd process. Specifying the container ID will signal the main process
	Signal(processID ID, signal int) error
}
    type ProcessRunState ¶
type ProcessRunState struct {
	ProcessID  ID
	Status     ProcessStatus
	GuestPid   int
	ExitCode   int
	ExitMsg    string
	StartedAt  time.Time
	FinishedAt time.Time
}
    runtime status of a container process
type ProcessState ¶
type ProcessState struct {
	ProcessRunState
}
    ProcessState is the runtime state of a process in a container
type RunState ¶
type RunState int
RunState represents the running state of a container
const ( Created RunState Running Stopped )
type VmomiGateway ¶
type VmomiGateway interface {
}
    VmomiGateway represents an interface to a pre-authenticated Vmomi API
       Source Files
      ¶
      Source Files
      ¶
    
- container.go
- execution.go
- execution_vsphere.go
- handle.go
- vmomi_gateway.go