github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/spacequota/space_quotas.go (about) 1 package spacequota 2 3 import ( 4 "fmt" 5 "strconv" 6 7 "github.com/cloudfoundry/cli/cf/api/space_quotas" 8 "github.com/cloudfoundry/cli/cf/command_registry" 9 "github.com/cloudfoundry/cli/cf/configuration/core_config" 10 "github.com/cloudfoundry/cli/cf/formatters" 11 . "github.com/cloudfoundry/cli/cf/i18n" 12 "github.com/cloudfoundry/cli/cf/requirements" 13 "github.com/cloudfoundry/cli/cf/terminal" 14 "github.com/cloudfoundry/cli/flags" 15 ) 16 17 type ListSpaceQuotas struct { 18 ui terminal.UI 19 config core_config.Reader 20 spaceQuotaRepo space_quotas.SpaceQuotaRepository 21 } 22 23 func init() { 24 command_registry.Register(&ListSpaceQuotas{}) 25 } 26 27 func (cmd *ListSpaceQuotas) MetaData() command_registry.CommandMetadata { 28 return command_registry.CommandMetadata{ 29 Name: "space-quotas", 30 Description: T("List available space resource quotas"), 31 Usage: T("CF_NAME space-quotas"), 32 } 33 } 34 35 func (cmd *ListSpaceQuotas) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) { 36 if len(fc.Args()) != 0 { 37 cmd.ui.Failed(T("Incorrect Usage. No argument required\n\n") + command_registry.Commands.CommandUsage("space-quotas")) 38 } 39 40 reqs = []requirements.Requirement{ 41 requirementsFactory.NewLoginRequirement(), 42 requirementsFactory.NewTargetedOrgRequirement(), 43 } 44 return 45 } 46 47 func (cmd *ListSpaceQuotas) SetDependency(deps command_registry.Dependency, pluginCall bool) command_registry.Command { 48 cmd.ui = deps.Ui 49 cmd.config = deps.Config 50 cmd.spaceQuotaRepo = deps.RepoLocator.GetSpaceQuotaRepository() 51 return cmd 52 } 53 54 func (cmd *ListSpaceQuotas) Execute(c flags.FlagContext) { 55 cmd.ui.Say(T("Getting space quotas as {{.Username}}...", map[string]interface{}{"Username": terminal.EntityNameColor(cmd.config.Username())})) 56 57 quotas, apiErr := cmd.spaceQuotaRepo.FindByOrg(cmd.config.OrganizationFields().Guid) 58 59 if apiErr != nil { 60 cmd.ui.Failed(apiErr.Error()) 61 return 62 } 63 64 cmd.ui.Ok() 65 cmd.ui.Say("") 66 67 table := terminal.NewTable(cmd.ui, []string{T("name"), T("total memory limit"), T("instance memory limit"), T("routes"), T("service instances"), T("paid service plans")}) 68 var megabytes string 69 70 for _, quota := range quotas { 71 if quota.InstanceMemoryLimit == -1 { 72 megabytes = T("unlimited") 73 } else { 74 megabytes = formatters.ByteSize(quota.InstanceMemoryLimit * formatters.MEGABYTE) 75 } 76 77 servicesLimit := strconv.Itoa(quota.ServicesLimit) 78 if servicesLimit == "-1" { 79 servicesLimit = T("unlimited") 80 } 81 82 table.Add( 83 quota.Name, 84 formatters.ByteSize(quota.MemoryLimit*formatters.MEGABYTE), 85 megabytes, 86 fmt.Sprintf("%d", quota.RoutesLimit), 87 fmt.Sprintf(servicesLimit), 88 formatters.Allowed(quota.NonBasicServicesAllowed), 89 ) 90 } 91 92 table.Print() 93 94 }