// StartInstanceWithConstraintsAndNetworks is a test helper function that // starts an instance with the given networks, and a plausible but invalid // configuration, and returns the result of Environ.StartInstance. func StartInstanceWithConstraintsAndNetworks( env environs.Environ, machineId string, cons constraints.Value, includeNetworks, excludeNetworks []string, ) ( instance.Instance, *instance.HardwareCharacteristics, []network.Info, error, ) { series := config.PreferredSeries(env.Config()) agentVersion, ok := env.Config().AgentVersion() if !ok { return nil, nil, nil, fmt.Errorf("missing agent version in environment config") } possibleTools, err := tools.FindInstanceTools(env, agentVersion, series, cons.Arch) if err != nil { return nil, nil, nil, err } machineNonce := "fake_nonce" stateInfo := FakeStateInfo(machineId) apiInfo := FakeAPIInfo(machineId) machineConfig := environs.NewMachineConfig( machineId, machineNonce, includeNetworks, excludeNetworks, stateInfo, apiInfo) return env.StartInstance(environs.StartInstanceParams{ Constraints: cons, Tools: possibleTools, MachineConfig: machineConfig, }) }
func findInstanceTools(env environs.Environ, series, arch string) (*tools.Tools, error) { agentVersion, ok := env.Config().AgentVersion() if !ok { return nil, fmt.Errorf("no agent version set in environment configuration") } possibleTools, err := envtools.FindInstanceTools(env, agentVersion, series, &arch) if err != nil { return nil, err } return possibleTools[0], nil }