From 639501d8d2dcdb31f838afd9ee282ebf2545e32e Mon Sep 17 00:00:00 2001 From: Thomas Maddox Date: Fri, 25 Mar 2016 11:36:20 -0500 Subject: [PATCH 1/2] Abstract row writing for simpler rows --- main.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/main.go b/main.go index a63d85e..58730f4 100644 --- a/main.go +++ b/main.go @@ -832,15 +832,14 @@ func (carina *ShellCommand) Show(pc *kingpin.ParseContext) error { } func writeCluster(w *tabwriter.Writer, cluster *libcarina.Cluster) (err error) { - s := strings.Join([]string{ + fields := []string{ cluster.ClusterName, cluster.Flavor, strconv.FormatInt(cluster.Nodes.Int64(), 10), strconv.FormatBool(cluster.AutoScale), cluster.Status, - }, "\t") - _, err = w.Write([]byte(s + "\n")) - return + } + return writeRow(w, fields) } func writeClusterHeader(w *tabwriter.Writer) (err error) { @@ -851,8 +850,11 @@ func writeClusterHeader(w *tabwriter.Writer) (err error) { "AutoScale", "Status", } - s := strings.Join(headerFields, "\t") + return writeRow(w, headerFields) +} +func writeRow(w *tabwriter.Writer, fields []string) (err error) { + s := strings.Join(fields, "\t") _, err = w.Write([]byte(s + "\n")) return err } From 0a18ad07a30ab2a95309de09e09c73f71ff3450e Mon Sep 17 00:00:00 2001 From: Thomas Maddox Date: Fri, 25 Mar 2016 11:49:26 -0500 Subject: [PATCH 2/2] Add quotas command to show user quotas Closes https://github.com/getcarina/carina/issues/101 Depends On https://github.com/getcarina/carina/pull/103 --- main.go | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/main.go b/main.go index 58730f4..96a72c7 100644 --- a/main.go +++ b/main.go @@ -200,6 +200,9 @@ func New() *Application { deleteCommand := cap.NewCredentialsCommand(ctx, "delete", "Delete a swarm cluster") deleteCommand.Action(deleteCommand.Delete).Hidden() + quotasCommand := cap.NewCommand(ctx, "quotas", "Get user quotas") + quotasCommand.Action(quotasCommand.Quotas) + return cap } @@ -720,6 +723,26 @@ func (carina *CredentialsCommand) Download(pc *kingpin.ParseContext) (err error) return err } +// Show the user's quotas +func (carina *Command) Quotas(pc *kingpin.ParseContext) (err error) { + quotas, err := carina.ClusterClient.GetQuotas() + if err != nil { + return err + } + MaxClusters := strconv.FormatInt(quotas.MaxClusters.Int64(), 10) + MaxNodesPerCluster := strconv.FormatInt(quotas.MaxNodesPerCluster.Int64(), 10) + err = writeRow(carina.TabWriter, []string{"MaxClusters", "MaxNodesPerCluster"}) + if err != nil { + return err + } + err = writeRow(carina.TabWriter, []string{MaxClusters, MaxNodesPerCluster}) + if err != nil { + return err + } + err = carina.TabWriter.Flush() + return err +} + func writeCredentials(w *tabwriter.Writer, creds *libcarina.Credentials, pth string) (err error) { // TODO: Prompt when file already exists? for fname, b := range creds.Files {