func (s *SpacesSuite) TestCreateSpacesModelConfigError(c *gc.C) { apiservertesting.SharedStub.SetErrors( errors.New("boom"), // Backing.ModelConfig() ) spaces := params.CreateSpacesParams{} _, err := networkingcommon.CreateSpaces(apiservertesting.BackingInstance, spaces) c.Assert(err, gc.ErrorMatches, "getting environ: boom") }
func (s *SpacesSuite) TestCreateSpacesProviderOpenError(c *gc.C) { apiservertesting.SharedStub.SetErrors( nil, // Backing.ModelConfig() errors.New("boom"), // Provider.Open() ) spaces := params.CreateSpacesParams{} _, err := networkingcommon.CreateSpaces(apiservertesting.BackingInstance, spaces) c.Assert(err, gc.ErrorMatches, "validating model config: boom") }
// CreateSpaces creates a new Juju network space, associating the // specified subnets with it (optional; can be empty). func (api *spacesAPI) CreateSpaces(args params.CreateSpacesParams) (results params.ErrorResults, err error) { isAdmin, err := api.authorizer.HasPermission(permission.AdminAccess, api.backing.ModelTag()) if err != nil && !errors.IsNotFound(err) { return results, errors.Trace(err) } if !isAdmin { return results, common.ServerError(common.ErrPerm) } return networkingcommon.CreateSpaces(api.backing, args) }
func (s *SpacesSuite) TestCreateSpacesNotSupportedError(c *gc.C) { apiservertesting.SharedStub.SetErrors( nil, // Backing.ModelConfig() nil, // Provider.Open() errors.NotSupportedf("spaces"), // ZonedNetworkingEnviron.SupportsSpaces() ) spaces := params.CreateSpacesParams{} _, err := networkingcommon.CreateSpaces(apiservertesting.BackingInstance, spaces) c.Assert(err, gc.ErrorMatches, "spaces not supported") }
func (s *SpacesSuite) checkCreateSpaces(c *gc.C, p checkCreateSpacesParams) { args := params.CreateSpaceParams{} if p.Name != "" { args.SpaceTag = "space-" + p.Name } if len(p.Subnets) > 0 { for _, cidr := range p.Subnets { args.SubnetTags = append(args.SubnetTags, "subnet-"+cidr) } } args.Public = p.Public args.ProviderId = p.ProviderId spaces := params.CreateSpacesParams{} spaces.Spaces = append(spaces.Spaces, args) results, err := networkingcommon.CreateSpaces(apiservertesting.BackingInstance, spaces) c.Assert(len(results.Results), gc.Equals, 1) c.Assert(err, gc.IsNil) if p.Error == "" { c.Assert(results.Results[0].Error, gc.IsNil) } else { c.Assert(results.Results[0].Error, gc.NotNil) c.Assert(results.Results[0].Error, gc.ErrorMatches, p.Error) } baseCalls := []apiservertesting.StubMethodCall{ apiservertesting.BackingCall("ModelConfig"), apiservertesting.BackingCall("CloudSpec"), apiservertesting.ProviderCall("Open", apiservertesting.BackingInstance.EnvConfig), apiservertesting.ZonedNetworkingEnvironCall("SupportsSpaces"), } addSpaceCalls := append(baseCalls, apiservertesting.BackingCall("AddSpace", p.Name, network.Id(p.ProviderId), p.Subnets, p.Public)) if p.Error == "" { apiservertesting.CheckMethodCalls(c, apiservertesting.SharedStub, addSpaceCalls...) } else { apiservertesting.CheckMethodCalls(c, apiservertesting.SharedStub, baseCalls...) } }
// CreateSpaces creates a new Juju network space, associating the // specified subnets with it (optional; can be empty). func (api *DiscoverSpacesAPI) CreateSpaces(args params.CreateSpacesParams) (results params.ErrorResults, err error) { return networkingcommon.CreateSpaces(api.st, args) }