Documentation ¶
Index ¶
- Constants
- Variables
- func ImageDownloadURL(kind instance.ContainerType, series, arch string) (string, error)
- func NewDirectory(containerName string) (directory string, err error)
- func RemoveDirectory(containerName string) error
- func WriteCloudInitFile(directory string, userData []byte) (string, error)
- func WriteUserData(machineConfig *cloudinit.MachineConfig, networkConfig *NetworkConfig, ...) (string, error)
- type ImageURLGetter
- type Initialiser
- type Lock
- type Manager
- type ManagerConfig
- type NetworkConfig
Constants ¶
const ( ConfigName = "name" ConfigLogDir = "log-dir" DefaultNamespace = "juju" )
const ( // BridgeNetwork will have the container use the network bridge. BridgeNetwork = "bridge" // PhyscialNetwork will have the container use a specified network device. PhysicalNetwork = "physical" )
const (
// NameRegexp specifies the regular expression used to identify valid lock names.
NameRegexp = "^[a-z]+[a-z0-9.-]*$"
)
Variables ¶
var ( ContainerDir = "/var/lib/juju/containers" RemovedContainerDir = "/var/lib/juju/removed-containers" )
Functions ¶
func ImageDownloadURL ¶
func ImageDownloadURL(kind instance.ContainerType, series, arch string) (string, error)
ImageDownloadURL determines the public URL which can be used to obtain an image blob with the specified parameters.
func NewDirectory ¶
NewDirectory creates a new directory for the container name in the directory identified by `ContainerDir`.
func RemoveDirectory ¶
RemoveDirectory moves the container directory from `ContainerDir` to `RemovedContainerDir` and makes sure that the names don't clash.
func WriteCloudInitFile ¶
WriteCloudInitFile writes the data out to a cloud-init file in the directory specified, and returns the filename.
func WriteUserData ¶
func WriteUserData( machineConfig *cloudinit.MachineConfig, networkConfig *NetworkConfig, directory string, ) (string, error)
WriteUserData generates the cloud-init user-data using the specified machine and network config for a container, and writes the serialized form out to a cloud-init file in the directory specified.
Types ¶
type ImageURLGetter ¶
type ImageURLGetter interface { // ImageURL returns a URL which can be used to fetch an image of the // specified kind, series, and arch. ImageURL(kind instance.ContainerType, series, arch string) (string, error) // CACert returns the ca certificate used to validate the state server // certificate when using wget. CACert() []byte }
ImageURLGetter implementations provide a getter which returns a URL which can be used to fetch an image blob.
func NewImageURLGetter ¶
func NewImageURLGetter(serverRoot, envuuid string, caCert []byte) ImageURLGetter
NewImageURLGetter returns an ImageURLGetter for the specified state server address and environment UUID.
type Initialiser ¶
type Initialiser interface { // Initialise installs all required packages, sync any images etc so // that the host machine can run containers. Initialise() error }
Initialiser is responsible for performing the steps required to initialise a host machine so it can run containers.
type Lock ¶
type Lock struct {
// contains filtered or unexported fields
}
func NewLock ¶
NewLock returns a new lock with the given name, using the given lock directory, without acquiring it. The lock name must match the regular expression defined by NameRegexp.
type Manager ¶
type Manager interface { // CreateContainer creates and starts a new container for the specified // machine. CreateContainer( machineConfig *cloudinit.MachineConfig, series string, network *NetworkConfig) (instance.Instance, *instance.HardwareCharacteristics, error) // DestroyContainer stops and destroyes the container identified by // instance id. DestroyContainer(instance.Id) error // ListContainers return a list of containers that have been started by // this manager. ListContainers() ([]instance.Instance, error) // IsInitialized check whether or not required packages have been installed // to support this manager. IsInitialized() bool }
Manager is responsible for starting containers, and stopping and listing containers that it has started.
type ManagerConfig ¶
ManagerConfig contains the initialization parameters for the ContainerManager. The name of the manager is used to namespace the containers on the machine.
func (ManagerConfig) PopValue ¶
func (m ManagerConfig) PopValue(key string) string
PopValue returns the requested key from the config map. If the value doesn't exist, the function returns the empty string. If the value does exist, the value is returned, and the element removed from the map.
func (ManagerConfig) WarnAboutUnused ¶
func (m ManagerConfig) WarnAboutUnused()
WarnAboutUnused emits a warning about each value in the map.
type NetworkConfig ¶
type NetworkConfig struct { NetworkType string Device string Interfaces []network.InterfaceInfo }
NetworkConfig defines how the container network will be configured.
func BridgeNetworkConfig ¶
func BridgeNetworkConfig(device string, interfaces []network.InterfaceInfo) *NetworkConfig
BridgeNetworkConfig returns a valid NetworkConfig to use the specified device as a network bridge for the container. It also allows passing in specific configuration for the container's network interfaces. If interfaces is nil the default configuration is used for the respective container type.
func PhysicalNetworkConfig ¶
func PhysicalNetworkConfig(device string, interfaces []network.InterfaceInfo) *NetworkConfig
PhysicalNetworkConfig returns a valid NetworkConfig to use the specified device as the network device for the container. It also allows passing in specific configuration for the container's network interfaces. If interfaces is nil the default configuration is used for the respective container type.