From 92ac8a3fe102ed288094739f83b0e7c83089d76e Mon Sep 17 00:00:00 2001 From: SrinivasChilveri Date: Thu, 16 May 2019 15:52:50 +0530 Subject: [PATCH] Added queue get command & changed list command --- cmd/cli/queue.go | 10 ++++++ pkg/cli/queue/get.go | 82 +++++++++++++++++++++++++++++++++++++++++++ pkg/cli/queue/list.go | 17 ++++++--- 3 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 pkg/cli/queue/get.go diff --git a/cmd/cli/queue.go b/cmd/cli/queue.go index c4b3795f006..039c8672b76 100644 --- a/cmd/cli/queue.go +++ b/cmd/cli/queue.go @@ -48,5 +48,15 @@ func buildQueueCmd() *cobra.Command { queue.InitListFlags(queueListCmd) jobCmd.AddCommand(queueListCmd) + queueGetCmd := &cobra.Command{ + Use: "get", + Short: "get a queue", + Run: func(cmd *cobra.Command, args []string) { + checkError(cmd, queue.GetQueue()) + }, + } + queue.InitGetFlags(queueGetCmd) + jobCmd.AddCommand(queueGetCmd) + return jobCmd } diff --git a/pkg/cli/queue/get.go b/pkg/cli/queue/get.go new file mode 100644 index 00000000000..af73b6cf7a6 --- /dev/null +++ b/pkg/cli/queue/get.go @@ -0,0 +1,82 @@ +/* +Copyright 2019 The Volcano Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package queue + +import ( + "fmt" + "io" + "os" + + "github.com/spf13/cobra" + + "github.com/kubernetes-sigs/kube-batch/pkg/apis/scheduling/v1alpha1" + "github.com/kubernetes-sigs/kube-batch/pkg/client/clientset/versioned" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +type getFlags struct { + commonFlags + + Name string +} + +var getQueueFlags = &getFlags{} + +// InitGetFlags is used to init all flags +func InitGetFlags(cmd *cobra.Command) { + initFlags(cmd, &getQueueFlags.commonFlags) + + cmd.Flags().StringVarP(&getQueueFlags.Name, "name", "n", "", "the name of queue") + +} + +// GetQueue gets a queue +func GetQueue() error { + config, err := buildConfig(getQueueFlags.Master, getQueueFlags.Kubeconfig) + if err != nil { + return err + } + + if getQueueFlags.Name == "" { + err := fmt.Errorf("name is mandaorty to get the partiular queue details") + return err + } + + queueClient := versioned.NewForConfigOrDie(config) + queue, err := queueClient.SchedulingV1alpha1().Queues().Get(getQueueFlags.Name, metav1.GetOptions{}) + if err != nil { + return err + } + + PrintQueue(queue, os.Stdout) + + return nil +} + +// PrintQueue prints queue information +func PrintQueue(queue *v1alpha1.Queue, writer io.Writer) { + _, err := fmt.Fprintf(writer, "%-25s%-8s%-8s%-8s%-8s\n", + Name, Weight, Pending, Running, Unknown) + if err != nil { + fmt.Printf("Failed to print queue command result: %s.\n", err) + } + _, err = fmt.Fprintf(writer, "%-25s%-8d%-8d%-8d%-8d\n", + queue.Name, queue.Spec.Weight, queue.Status.Pending, queue.Status.Running, queue.Status.Unknown) + if err != nil { + fmt.Printf("Failed to print queue command result: %s.\n", err) + } +} diff --git a/pkg/cli/queue/list.go b/pkg/cli/queue/list.go index 35e5a593469..5487ae86703 100644 --- a/pkg/cli/queue/list.go +++ b/pkg/cli/queue/list.go @@ -38,6 +38,15 @@ const ( // Name of queue Name string = "Name" + + // Pending status of the queue + Pending string = "Pending" + + // Running status of the queue + Running string = "Running" + + // Unknown status of the queue + Unknown string = "Unknown" ) var listQueueFlags = &listFlags{} @@ -71,14 +80,14 @@ func ListQueue() error { // PrintQueues prints queue information func PrintQueues(queues *v1alpha1.QueueList, writer io.Writer) { - _, err := fmt.Fprintf(writer, "%-25s%-8s\n", - Name, Weight) + _, err := fmt.Fprintf(writer, "%-25s%-8s%-8s%-8s%-8s\n", + Name, Weight, Pending, Running, Unknown) if err != nil { fmt.Printf("Failed to print queue command result: %s.\n", err) } for _, queue := range queues.Items { - _, err = fmt.Fprintf(writer, "%-25s%-8d\n", - queue.Name, queue.Spec.Weight) + _, err = fmt.Fprintf(writer, "%-25s%-8d%-8d%-8d%-8d\n", + queue.Name, queue.Spec.Weight, queue.Status.Pending, queue.Status.Running, queue.Status.Unknown) if err != nil { fmt.Printf("Failed to print queue command result: %s.\n", err) }