// ListSpaces lists all the available spaces and their associated subnets. func (api *spacesAPI) ListSpaces() (results params.ListSpacesResults, err error) { err = networkingcommon.SupportsSpaces(api.backing) if err != nil { return results, common.ServerError(errors.Trace(err)) } spaces, err := api.backing.AllSpaces() if err != nil { return results, errors.Trace(err) } results.Results = make([]params.Space, len(spaces)) for i, space := range spaces { result := params.Space{} result.Name = space.Name() subnets, err := space.Subnets() if err != nil { err = errors.Annotatef(err, "fetching subnets") result.Error = common.ServerError(err) results.Results[i] = result continue } result.Subnets = make([]params.Subnet, len(subnets)) for i, subnet := range subnets { result.Subnets[i] = networkingcommon.BackingSubnetToParamsSubnet(subnet) } results.Results[i] = result } return results, nil }
// ListSpaces lists all the available spaces and their associated subnets. func (api *spacesAPI) ListSpaces() (results params.ListSpacesResults, err error) { canRead, err := api.authorizer.HasPermission(permission.ReadAccess, api.backing.ModelTag()) if err != nil && !errors.IsNotFound(err) { return results, errors.Trace(err) } if !canRead { return results, common.ServerError(common.ErrPerm) } err = networkingcommon.SupportsSpaces(api.backing) if err != nil { return results, common.ServerError(errors.Trace(err)) } spaces, err := api.backing.AllSpaces() if err != nil { return results, errors.Trace(err) } results.Results = make([]params.Space, len(spaces)) for i, space := range spaces { result := params.Space{} result.Name = space.Name() subnets, err := space.Subnets() if err != nil { err = errors.Annotatef(err, "fetching subnets") result.Error = common.ServerError(err) results.Results[i] = result continue } result.Subnets = make([]params.Subnet, len(subnets)) for i, subnet := range subnets { result.Subnets[i] = networkingcommon.BackingSubnetToParamsSubnet(subnet) } results.Results[i] = result } return results, nil }