Documentation

Overview

The dummy provider implements an environment provider for testing purposes, registered with environs under the name "dummy".

The configuration YAML for the testing environment must specify a "state-server" property with a boolean value. If this is true, a state server will be started when the environment is bootstrapped.

The configuration data also accepts a "broken" property of type boolean. If this is non-empty, any operation after the environment has been opened will return the error "broken environment", and will also log that.

The DNS name of instances is the same as the Id, with ".dns" appended.

To avoid enumerating all possible series and architectures, any series or architecture with the prefix "unknown" is treated as bad when starting a new instance.

Index

Constants

View Source
const (
	BootstrapInstanceId = instance.Id("localhost")
)

Variables

View Source
var (
	ErrNotPrepared = errors.New("environment is not prepared")
	ErrDestroyed   = errors.New("environment has been destroyed")
)
View Source
var DataDir = ""

Override for testing - the data directory with which the state api server is initialised.

View Source
var LogDir = ""

Functions

func AdminUserTag

func AdminUserTag() names.UserTag

AdminUserTag returns the user tag used to bootstrap the dummy environment. The dummy bootstrapping is handled slightly differently, and the user is created as part of the bootstrap process. This method is used to provide tests a way to get to the user name that was used to initialise the database, and as such, is the owner of the initial environment.

func IsSameStorage

func IsSameStorage(s1, s2 storage.Storage) bool

IsSameStorage returns whether the storage instances are the same. Both storages must have been created through the dummy provider.

func Listen

func Listen(c chan<- Operation)

Listen closes the previously registered listener (if any). Subsequent operations on any dummy environment can be received on c (if not nil).

func PatchTransientErrorInjectionChannel

func PatchTransientErrorInjectionChannel(c chan error) func()

PatchTransientErrorInjectionChannel sets the transientInjectionError channel which can be used to inject errors into StartInstance for testing purposes The injected errors will use the string received on the channel and the instance's state will eventually go to error, while the received string will appear in the info field of the machine's status

func Poison

func Poison(ss storage.Storage, path string, poisonErr error)

Poison causes all fetches of the given path to return the given error.

func Reset

func Reset()

Reset resets the entire dummy environment and forgets any registered operation listener. All opened environments after Reset will share the same underlying state.

func SampleConfig

func SampleConfig() testing.Attrs

SampleConfig() returns an environment configuration with all required attributes set.

func SetInstanceAddresses

func SetInstanceAddresses(inst instance.Instance, addrs []network.Address)

SetInstanceAddresses sets the addresses associated with the given dummy instance.

func SetInstanceStatus

func SetInstanceStatus(inst instance.Instance, status string)

SetInstanceStatus sets the status associated with the given dummy instance.

func SetStatePolicy

func SetStatePolicy(policy state.Policy)

SetStatePolicy sets the state.Policy to use when a state server is initialised by dummy.

func SetStorageDelay

func SetStorageDelay(d time.Duration)

SetStorageDelay causes any storage download operation in any current environment to be delayed for the given duration.

func SetSupportsSpaces

func SetSupportsSpaces(supports bool) bool

SetSupportsSpaces allows to enable and disable SupportsSpaces for tests.

Types

type OpAllocateAddress

type OpAllocateAddress struct {
	Env        string
	InstanceId instance.Id
	SubnetId   network.Id
	Address    network.Address
	HostName   string
	MACAddress string
}

type OpBootstrap

type OpBootstrap struct {
	Context environs.BootstrapContext
	Env     string
	Args    environs.BootstrapParams
}

type OpClosePorts

type OpClosePorts struct {
	Env        string
	MachineId  string
	InstanceId instance.Id
	Ports      []network.PortRange
}

type OpDestroy

type OpDestroy struct {
	Env   string
	Error error
}

type OpFinalizeBootstrap

type OpFinalizeBootstrap struct {
	Context        environs.BootstrapContext
	Env            string
	InstanceConfig *instancecfg.InstanceConfig
}

type OpNetworkInterfaces

type OpNetworkInterfaces struct {
	Env        string
	InstanceId instance.Id
	Info       []network.InterfaceInfo
}

type OpOpenPorts

type OpOpenPorts struct {
	Env        string
	MachineId  string
	InstanceId instance.Id
	Ports      []network.PortRange
}

type OpPutFile

type OpPutFile struct {
	Env      string
	FileName string
}

type OpReleaseAddress

type OpReleaseAddress struct {
	Env        string
	InstanceId instance.Id
	SubnetId   network.Id
	Address    network.Address
	MACAddress string
}

type OpStartInstance

type OpStartInstance struct {
	Env              string
	MachineId        string
	MachineNonce     string
	PossibleTools    coretools.List
	Instance         instance.Instance
	Constraints      constraints.Value
	SubnetsToZones   map[network.Id][]string
	Networks         []string
	NetworkInfo      []network.InterfaceInfo
	Volumes          []storage.Volume
	Info             *mongo.MongoInfo
	Jobs             []multiwatcher.MachineJob
	APIInfo          *api.Info
	Secret           string
	AgentEnvironment map[string]string
}

type OpStopInstances

type OpStopInstances struct {
	Env string
	Ids []instance.Id
}

type OpSubnets

type OpSubnets struct {
	Env        string
	InstanceId instance.Id
	SubnetIds  []network.Id
	Info       []network.SubnetInfo
}

type Operation

type Operation interface{}

Operation represents an action on the dummy provider.