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  }