}) }) It("updates the total allowed services", func() { runCommand("-s", "9000", "quota-name") Expect(quotaRepo.UpdateArgsForCall(0).ServicesLimit).To(Equal(9000)) }) It("updates the total allowed routes", func() { runCommand("-r", "9001", "quota-name") Expect(quotaRepo.UpdateArgsForCall(0).RoutesLimit).To(Equal(9001)) }) Context("update paid service plans", func() { BeforeEach(func() { quota.NonBasicServicesAllowed = false }) It("changes to paid service plan when --allow flag is provided", func() { runCommand("--allow-paid-service-plans", "quota-name") Expect(quotaRepo.UpdateArgsForCall(0).NonBasicServicesAllowed).To(BeTrue()) }) It("shows an error when both --allow and --disallow flags are provided", func() { runCommand("--allow-paid-service-plans", "--disallow-paid-service-plans", "quota-name") Expect(ui.Outputs()).To(ContainSubstrings( []string{"FAILED"}, []string{"Both flags are not permitted"}, )) })
func (cmd *CreateQuota) Execute(context flags.FlagContext) error { name := context.Args()[0] cmd.ui.Say(T("Creating quota {{.QuotaName}} as {{.Username}}...", map[string]interface{}{ "QuotaName": terminal.EntityNameColor(name), "Username": terminal.EntityNameColor(cmd.config.Username()), })) quota := models.QuotaFields{ Name: name, } memoryLimit := context.String("m") if memoryLimit != "" { parsedMemory, err := formatters.ToMegabytes(memoryLimit) if err != nil { return errors.New(T("Invalid memory limit: {{.MemoryLimit}}\n{{.Err}}", map[string]interface{}{"MemoryLimit": memoryLimit, "Err": err})) } quota.MemoryLimit = parsedMemory } instanceMemoryLimit := context.String("i") if instanceMemoryLimit == "-1" || instanceMemoryLimit == "" { quota.InstanceMemoryLimit = -1 } else { parsedMemory, errr := formatters.ToMegabytes(instanceMemoryLimit) if errr != nil { return errors.New(T("Invalid instance memory limit: {{.MemoryLimit}}\n{{.Err}}", map[string]interface{}{"MemoryLimit": instanceMemoryLimit, "Err": errr})) } quota.InstanceMemoryLimit = parsedMemory } if context.IsSet("r") { quota.RoutesLimit = context.Int("r") } if context.IsSet("s") { quota.ServicesLimit = context.Int("s") } if context.IsSet("a") { quota.AppInstanceLimit = context.Int("a") } else { quota.AppInstanceLimit = resources.UnlimitedAppInstances } if context.IsSet("allow-paid-service-plans") { quota.NonBasicServicesAllowed = true } if context.IsSet("reserved-route-ports") { quota.ReservedRoutePorts = json.Number(context.String("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("Quota Definition {{.QuotaName}} already exists", map[string]interface{}{"QuotaName": quota.Name})) return nil } if err != nil { return err } cmd.ui.Ok() return nil }