// Check that we get a consistent error when asking for an instance without // a valid machine config. func (t *LiveTests) TestStartInstanceWithEmptyNonceFails(c *gc.C) { machineId := "4" stateInfo := jujutesting.FakeStateInfo(machineId) apiInfo := jujutesting.FakeAPIInfo(machineId) instanceConfig, err := instancecfg.NewInstanceConfig(machineId, "", "released", "quantal", "", true, nil, stateInfo, apiInfo) c.Assert(err, jc.ErrorIsNil) t.PrepareOnce(c) possibleTools := coretools.List(envtesting.AssertUploadFakeToolsVersions( c, t.toolsStorage, "released", "released", version.MustParseBinary("5.4.5-trusty-amd64"), )) params := environs.StartInstanceParams{ Tools: possibleTools, InstanceConfig: instanceConfig, } err = jujutesting.SetImageMetadata( t.Env, possibleTools.AllSeries(), possibleTools.Arches(), ¶ms.ImageMetadata, ) c.Check(err, jc.ErrorIsNil) result, err := t.Env.StartInstance(params) if result != nil && result.Instance != nil { err := t.Env.StopInstances(result.Instance.Id()) c.Check(err, jc.ErrorIsNil) } c.Assert(result, gc.IsNil) c.Assert(err, gc.ErrorMatches, ".*missing machine nonce") }
func (s *BaseSuiteUnpatched) initInst(c *gc.C) { tools := []*coretools.Tools{{ Version: version.Binary{Arch: arch.AMD64, Series: "trusty"}, URL: "https://example.org", }} cons := constraints.Value{InstanceType: &allInstanceTypes[0].Name} instanceConfig, err := instancecfg.NewBootstrapInstanceConfig(testing.FakeControllerConfig(), cons, cons, "trusty", "") c.Assert(err, jc.ErrorIsNil) err = instanceConfig.SetTools(coretools.List(tools)) c.Assert(err, jc.ErrorIsNil) instanceConfig.AuthorizedKeys = s.Config.AuthorizedKeys() userData, err := providerinit.ComposeUserData(instanceConfig, nil, GCERenderer{}) c.Assert(err, jc.ErrorIsNil) s.UbuntuMetadata = map[string]string{ tags.JujuIsController: "true", tags.JujuController: s.ControllerUUID, metadataKeyCloudInit: string(userData), metadataKeyEncoding: "base64", } instanceConfig.Tags = map[string]string{ tags.JujuIsController: "true", tags.JujuController: s.ControllerUUID, } s.WindowsMetadata = map[string]string{ metadataKeyWindowsUserdata: string(userData), metadataKeyWindowsSysprep: fmt.Sprintf(winSetHostnameScript, "juju.*"), } s.Addresses = []network.Address{{ Value: "10.0.0.1", Type: network.IPv4Address, Scope: network.ScopeCloudLocal, }} s.Instance = s.NewInstance(c, "spam") s.BaseInstance = s.Instance.base s.InstName, err = s.Env.namespace.Hostname("42") c.Assert(err, jc.ErrorIsNil) s.StartInstArgs = environs.StartInstanceParams{ ControllerUUID: s.ControllerUUID, InstanceConfig: instanceConfig, Tools: tools, Constraints: cons, //Placement: "", //DistributionGroup: nil, } s.InstanceType = allInstanceTypes[0] // Storage eUUID := s.Env.Config().UUID() s.BaseDisk = &google.Disk{ Id: 1234567, Name: "home-zone--c930380d-8337-4bf5-b07a-9dbb5ae771e4", Zone: "home-zone", Status: google.StatusReady, Size: 1024, Description: eUUID, } }