func (s *ModelConfigSourceSuite) TestUpdateModelConfigDefaultValuesUnknownRegion(c *gc.C) { // Set up settings to create attrs := map[string]interface{}{ "no-proxy": "changed-proxy", } rspec, err := environs.NewRegionSpec("dummy", "unused-region") c.Assert(err, jc.ErrorIsNil) // We add this to the unused-region which has not been created in mongo // yet. err = s.State.UpdateModelConfigDefaultValues(attrs, nil, rspec) c.Assert(err, jc.ErrorIsNil) // Then check config. cfg, err := s.State.ModelConfigDefaultValues() c.Assert(err, jc.ErrorIsNil) c.Assert(cfg["no-proxy"], jc.DeepEquals, config.AttributeDefaultValues{ Default: "", Controller: nil, Regions: []config.RegionDefaultValue{ config.RegionDefaultValue{ Name: "dummy-region", Value: "dummy-proxy"}, config.RegionDefaultValue{ Name: "unused-region", Value: "changed-proxy"}}}) }
// makeRegionSpec is a helper method for methods that call // state.UpdateModelConfigDefaultValues. func (m *ModelManagerAPI) makeRegionSpec(cloudTag, r string) (*environs.RegionSpec, error) { cTag, err := names.ParseCloudTag(cloudTag) if err != nil { return nil, errors.Trace(err) } rspec, err := environs.NewRegionSpec(cTag.Id(), r) if err != nil { return nil, errors.Trace(err) } return rspec, nil }
func (s *cloudSpecSuite) TestNewRegionSpec(c *gc.C) { tests := []struct { description, cloud, region, errMatch string nilErr bool want *environs.RegionSpec }{ { description: "test empty cloud", cloud: "", region: "aregion", errMatch: "cloud and region are required to be non empty strings", want: nil, }, { description: "test empty region", cloud: "acloud", region: "", errMatch: "cloud and region are required to be non empty strings", want: nil, }, { description: "test valid", cloud: "acloud", region: "aregion", nilErr: true, want: &environs.RegionSpec{Cloud: "acloud", Region: "aregion"}, }, } for i, test := range tests { c.Logf("Test %d: %s", i, test.description) rspec, err := environs.NewRegionSpec(test.cloud, test.region) if !test.nilErr { c.Check(err, gc.ErrorMatches, test.errMatch) } else { c.Check(err, jc.ErrorIsNil) } c.Check(rspec, jc.DeepEquals, test.want) } }
func (s *ModelConfigSourceSuite) TestUpdateModelConfigRegionDefaults(c *gc.C) { // The test env is setup with dummy/dummy-region having a no-proxy // dummy-proxy value and nether-region with a nether-proxy value. // // First we change the no-proxy setting in dummy-region attrs := map[string]interface{}{ "no-proxy": "changed-proxy", } rspec, err := environs.NewRegionSpec("dummy", "dummy-region") c.Assert(err, jc.ErrorIsNil) err = s.State.UpdateModelConfigDefaultValues(attrs, nil, rspec) c.Assert(err, jc.ErrorIsNil) // Then check in another state. info := statetesting.NewMongoInfo() anotherState, err := state.Open(s.modelTag, s.State.ControllerTag(), info, mongotest.DialOpts(), state.NewPolicyFunc(nil)) c.Assert(err, jc.ErrorIsNil) defer anotherState.Close() cfg, err := anotherState.ModelConfigDefaultValues() c.Assert(err, jc.ErrorIsNil) expectedValues := make(config.ModelDefaultAttributes) for attr, val := range config.ConfigDefaults() { expectedValues[attr] = config.AttributeDefaultValues{ Default: val, } } expectedValues["http-proxy"] = config.AttributeDefaultValues{ Controller: "http://proxy", Default: "", } expectedValues["apt-mirror"] = config.AttributeDefaultValues{ Controller: "http://mirror", Default: "", Regions: []config.RegionDefaultValue{{ Name: "dummy-region", Value: "http://dummy-mirror", }}} expectedValues["no-proxy"] = config.AttributeDefaultValues{ Default: "", Regions: []config.RegionDefaultValue{{ Name: "dummy-region", Value: "changed-proxy", }}} c.Assert(cfg, jc.DeepEquals, expectedValues) // remove the dummy-region setting err = s.State.UpdateModelConfigDefaultValues(nil, []string{"no-proxy"}, rspec) // and check again cfg, err = anotherState.ModelConfigDefaultValues() c.Assert(err, jc.ErrorIsNil) cfg, err = anotherState.ModelConfigDefaultValues() c.Assert(err, jc.ErrorIsNil) expectedValues = make(config.ModelDefaultAttributes) for attr, val := range config.ConfigDefaults() { expectedValues[attr] = config.AttributeDefaultValues{ Default: val, } } expectedValues["http-proxy"] = config.AttributeDefaultValues{ Controller: "http://proxy", Default: "", } expectedValues["apt-mirror"] = config.AttributeDefaultValues{ Controller: "http://mirror", Default: "", Regions: []config.RegionDefaultValue{{ Name: "dummy-region", Value: "http://dummy-mirror", }}} c.Assert(cfg, jc.DeepEquals, expectedValues) }