github.com/rakutentech/cli@v6.12.5-0.20151006231303-24468b65536e+incompatible/cf/commands/spacequota/space_quota.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 SpaceQuota struct { 18 ui terminal.UI 19 config core_config.Reader 20 spaceQuotaRepo space_quotas.SpaceQuotaRepository 21 } 22 23 func init() { 24 command_registry.Register(&SpaceQuota{}) 25 } 26 27 func (cmd *SpaceQuota) MetaData() command_registry.CommandMetadata { 28 return command_registry.CommandMetadata{ 29 Name: "space-quota", 30 Description: T("Show space quota info"), 31 Usage: T("CF_NAME space-quota SPACE_QUOTA_NAME"), 32 } 33 } 34 35 func (cmd *SpaceQuota) Requirements(requirementsFactory requirements.Factory, fc flags.FlagContext) (reqs []requirements.Requirement, err error) { 36 if len(fc.Args()) != 1 { 37 cmd.ui.Failed(T("Incorrect Usage. Requires an argument\n\n") + command_registry.Commands.CommandUsage("space-quota")) 38 } 39 40 reqs = []requirements.Requirement{ 41 requirementsFactory.NewLoginRequirement(), 42 requirementsFactory.NewTargetedOrgRequirement(), 43 } 44 return 45 } 46 47 func (cmd *SpaceQuota) 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 *SpaceQuota) Execute(c flags.FlagContext) { 55 name := c.Args()[0] 56 57 cmd.ui.Say(T("Getting space quota {{.Quota}} info as {{.Username}}...", 58 map[string]interface{}{ 59 "Quota": terminal.EntityNameColor(name), 60 "Username": terminal.EntityNameColor(cmd.config.Username()), 61 })) 62 63 spaceQuota, apiErr := cmd.spaceQuotaRepo.FindByName(name) 64 65 if apiErr != nil { 66 cmd.ui.Failed(apiErr.Error()) 67 return 68 } 69 70 cmd.ui.Ok() 71 cmd.ui.Say("") 72 var megabytes string 73 74 table := terminal.NewTable(cmd.ui, []string{"", ""}) 75 table.Add(T("total memory limit"), formatters.ByteSize(spaceQuota.MemoryLimit*formatters.MEGABYTE)) 76 if spaceQuota.InstanceMemoryLimit == -1 { 77 megabytes = T("unlimited") 78 } else { 79 megabytes = formatters.ByteSize(spaceQuota.InstanceMemoryLimit * formatters.MEGABYTE) 80 } 81 82 servicesLimit := strconv.Itoa(spaceQuota.ServicesLimit) 83 if servicesLimit == "-1" { 84 servicesLimit = T("unlimited") 85 } 86 87 table.Add(T("instance memory limit"), megabytes) 88 table.Add(T("routes"), fmt.Sprintf("%d", spaceQuota.RoutesLimit)) 89 table.Add(T("services"), servicesLimit) 90 table.Add(T("non basic services"), formatters.Allowed(spaceQuota.NonBasicServicesAllowed)) 91 92 table.Print() 93 94 }