func (s *ModelConfigCreatorSuite) TestCreateModelValidatesConfig(c *gc.C) { newModelUUID := utils.MustNewUUID().String() cfg, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ "name": "new-model", "additional": "value", "uuid": newModelUUID, })) c.Assert(err, jc.ErrorIsNil) expected := s.baseConfig.AllAttrs() expected["name"] = "new-model" expected["additional"] = "value" expected["uuid"] = newModelUUID c.Assert(cfg.AllAttrs(), jc.DeepEquals, expected) fake.Stub.CheckCallNames(c, "RestrictedConfigAttributes", "PrepareForCreateEnvironment", "Validate", ) validateCall := fake.Stub.Calls()[2] c.Assert(validateCall.Args, gc.HasLen, 2) c.Assert(validateCall.Args[0], gc.Equals, cfg) c.Assert(validateCall.Args[1], gc.IsNil) }
func (s *ModelConfigCreatorSuite) TestCreateModelBadConfig(c *gc.C) { for i, test := range []struct { key string value interface{} errMatch string }{{ key: "type", value: "dummy", errMatch: `specified type "dummy" does not match controller "fake"`, }, { key: "state-port", value: 9876, errMatch: `specified state-port "9876" does not match controller "19034"`, }, { key: "restricted", value: 51, errMatch: `specified restricted "51" does not match controller "area51"`, }} { c.Logf("%d: %s", i, test.key) _, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ test.key: test.value, })) c.Check(err, gc.ErrorMatches, test.errMatch) } }
func (t *Tests) AssertPrepareFailsWithConfig(c *gc.C, badConfig coretesting.Attrs, errorMatches string) error { args := t.PrepareParams(c) args.ModelConfig = coretesting.Attrs(args.ModelConfig).Merge(badConfig) e, err := bootstrap.Prepare(envtesting.BootstrapContext(c), t.ControllerStore, args) c.Assert(err, gc.ErrorMatches, errorMatches) c.Assert(e, gc.IsNil) return err }
func (s *ModelConfigCreatorSuite) TestCreateModelLesserAgentVersionNoToolsFinder(c *gc.C) { _, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ "name": "new-model", "uuid": utils.MustNewUUID().String(), "agent-version": "1.9.9", })) c.Assert(err, gc.ErrorMatches, "agent-version does not match base config, and no tools-finder is supplied") }
func (s *ModelConfigCreatorSuite) TestCreateModelGreaterAgentVersion(c *gc.C) { _, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ "name": "new-model", "uuid": utils.MustNewUUID().String(), "agent-version": "2.0.1", })) c.Assert(err, gc.ErrorMatches, "agent-version .* cannot be greater than the controller .*") }
func (s *ModelConfigCreatorSuite) TestCreateModelLesserAgentVersionToolsFinderNotFound(c *gc.C) { s.creator.FindTools = func(version.Number) (tools.List, error) { return tools.List{}, nil } _, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ "name": "new-model", "uuid": utils.MustNewUUID().String(), "agent-version": "1.9.9", })) c.Assert(err, gc.ErrorMatches, "no tools found for version .*") }
func (s *ModelConfigCreatorSuite) TestCreateModelSameAgentVersion(c *gc.C) { cfg, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ "name": "new-model", "uuid": utils.MustNewUUID().String(), })) c.Assert(err, jc.ErrorIsNil) baseAgentVersion, ok := s.baseConfig.AgentVersion() c.Assert(ok, jc.IsTrue) agentVersion, ok := cfg.AgentVersion() c.Assert(ok, jc.IsTrue) c.Assert(agentVersion, gc.Equals, baseAgentVersion) }
func (s *ModelConfigCreatorSuite) TestCreateModelLesserAgentVersionToolsFinderFound(c *gc.C) { s.creator.FindTools = func(version.Number) (tools.List, error) { return tools.List{ {}, //contents don't matter, just need a non-empty list }, nil } cfg, err := s.newModelConfig(coretesting.Attrs( s.baseConfig.AllAttrs(), ).Merge(coretesting.Attrs{ "name": "new-model", "uuid": utils.MustNewUUID().String(), "agent-version": "1.9.9", })) c.Assert(err, jc.ErrorIsNil) agentVersion, ok := cfg.AgentVersion() c.Assert(ok, jc.IsTrue) c.Assert(agentVersion, gc.Equals, version.MustParse("1.9.9")) }
func (*OpenSuite) TestConfigForNameFromInfo(c *gc.C) { testing.WriteEnvironments(c, testing.SingleEnvConfig) store := configstore.NewMem() cfg, source, err := environs.ConfigForName("", store) c.Assert(err, gc.IsNil) c.Assert(source, gc.Equals, environs.ConfigFromEnvirons) info := store.CreateInfo("test-config") var attrs testing.Attrs = cfg.AllAttrs() attrs = attrs.Merge(testing.Attrs{ "name": "test-config", }) info.SetBootstrapConfig(attrs) err = info.Write() c.Assert(err, gc.IsNil) cfg, source, err = environs.ConfigForName("test-config", store) c.Assert(err, gc.IsNil) c.Assert(source, gc.Equals, environs.ConfigFromInfo) c.Assert(testing.Attrs(cfg.AllAttrs()), gc.DeepEquals, attrs) }