func (cmd *CreateSpaceQuota) Execute(context flags.FlagContext) { name := context.Args()[0] org := cmd.config.OrganizationFields() cmd.ui.Say(T("Creating space quota {{.QuotaName}} for org {{.OrgName}} as {{.Username}}...", map[string]interface{}{ "QuotaName": terminal.EntityNameColor(name), "OrgName": terminal.EntityNameColor(org.Name), "Username": terminal.EntityNameColor(cmd.config.Username()), })) quota := models.SpaceQuota{ Name: name, OrgGuid: org.Guid, } memoryLimit := context.String("m") if memoryLimit != "" { parsedMemory, errr := formatters.ToMegabytes(memoryLimit) if errr != nil { cmd.ui.Failed(T("Invalid memory limit: {{.MemoryLimit}}\n{{.Err}}", map[string]interface{}{"MemoryLimit": memoryLimit, "Err": errr})) } quota.MemoryLimit = parsedMemory } instanceMemoryLimit := context.String("i") var parsedMemory int64 var err error if instanceMemoryLimit == "-1" || instanceMemoryLimit == "" { parsedMemory = -1 } else { parsedMemory, err = formatters.ToMegabytes(instanceMemoryLimit) if err != nil { cmd.ui.Failed(T("Invalid instance memory limit: {{.MemoryLimit}}\n{{.Err}}", map[string]interface{}{"MemoryLimit": instanceMemoryLimit, "Err": err})) } } quota.InstanceMemoryLimit = parsedMemory if context.IsSet("r") { quota.RoutesLimit = context.Int("r") } if context.IsSet("s") { quota.ServicesLimit = context.Int("s") } if context.IsSet("allow-paid-service-plans") { quota.NonBasicServicesAllowed = true } err = cmd.quotaRepo.Create(quota) httpErr, ok := err.(errors.HttpError) if ok && httpErr.ErrorCode() == errors.QUOTA_EXISTS { cmd.ui.Ok() cmd.ui.Warn(T("Space Quota Definition {{.QuotaName}} already exists", map[string]interface{}{"QuotaName": quota.Name})) return } if err != nil { cmd.ui.Failed(err.Error()) } cmd.ui.Ok() }
space.Name = "whose-space-is-it-anyway" space.Organization = org space.Applications = apps space.Domains = domains space.ServiceInstances = services space.SecurityGroups = securityGroups space.SpaceQuotaGuid = "runaway-guid" quota := models.SpaceQuota{} quota.Guid = "runaway-guid" quota.Name = "runaway" quota.MemoryLimit = 102400 quota.InstanceMemoryLimit = -1 quota.RoutesLimit = 111 quota.ServicesLimit = 222 quota.NonBasicServicesAllowed = false requirementsFactory.LoginSuccess = true requirementsFactory.TargetedOrgSuccess = true requirementsFactory.Space = space quotaRepo.FindByGuidReturns(quota, nil) }) Context("when the space has a space quota", func() { It("shows information about the given space", func() { runCommand("whose-space-is-it-anyway") Expect(ui.Outputs).To(ContainSubstrings( []string{"Getting info for space", "whose-space-is-it-anyway", "my-org", "my-user"}, []string{"OK"}, []string{"whose-space-is-it-anyway"},
func (cmd *CreateSpaceQuota) Execute(context flags.FlagContext) error { name := context.Args()[0] org := cmd.config.OrganizationFields() cmd.ui.Say(T("Creating space quota {{.QuotaName}} for org {{.OrgName}} as {{.Username}}...", map[string]interface{}{ "QuotaName": terminal.EntityNameColor(name), "OrgName": terminal.EntityNameColor(org.Name), "Username": terminal.EntityNameColor(cmd.config.Username()), })) quota := models.SpaceQuota{ Name: name, OrgGUID: org.GUID, } memoryLimit := context.String("m") if memoryLimit != "" { parsedMemory, errr := formatters.ToMegabytes(memoryLimit) if errr != nil { return errors.New(T("Invalid memory limit: {{.MemoryLimit}}\n{{.Err}}", map[string]interface{}{"MemoryLimit": memoryLimit, "Err": errr})) } quota.MemoryLimit = parsedMemory } instanceMemoryLimit := context.String("i") var parsedMemory int64 var err error if instanceMemoryLimit == "-1" || instanceMemoryLimit == "" { parsedMemory = -1 } else { parsedMemory, err = formatters.ToMegabytes(instanceMemoryLimit) if err != nil { return errors.New(T("Invalid instance memory limit: {{.MemoryLimit}}\n{{.Err}}", map[string]interface{}{"MemoryLimit": instanceMemoryLimit, "Err": err})) } } quota.InstanceMemoryLimit = parsedMemory if context.IsSet("r") { quota.RoutesLimit = context.Int("r") } if context.IsSet("s") { quota.ServicesLimit = context.Int("s") } if context.IsSet("allow-paid-service-plans") { quota.NonBasicServicesAllowed = true } if context.IsSet("a") { quota.AppInstanceLimit = context.Int("a") } else { quota.AppInstanceLimit = resources.UnlimitedAppInstances } if context.IsSet("reserved-route-ports") { quota.ReservedRoutePortsLimit = json.Number(strconv.Itoa(context.Int("reserved-route-ports"))) } err = cmd.quotaRepo.Create(quota) httpErr, ok := err.(errors.HTTPError) if ok && httpErr.ErrorCode() == errors.QuotaDefinitionNameTaken { cmd.ui.Ok() cmd.ui.Warn(T("Space Quota Definition {{.QuotaName}} already exists", map[string]interface{}{"QuotaName": quota.Name})) return nil } if err != nil { return err } cmd.ui.Ok() return nil }