diff --git a/pkg/kubectl/cmd/top.go b/pkg/kubectl/cmd/top.go index 1473f8e8a54..48489cfd789 100644 --- a/pkg/kubectl/cmd/top.go +++ b/pkg/kubectl/cmd/top.go @@ -47,7 +47,7 @@ func NewCmdTop(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { } // create subcommands - cmd.AddCommand(NewCmdTopNode(f, out)) - cmd.AddCommand(NewCmdTopPod(f, out)) + cmd.AddCommand(NewCmdTopNode(f, nil, out)) + cmd.AddCommand(NewCmdTopPod(f, nil, out)) return cmd } diff --git a/pkg/kubectl/cmd/top_node.go b/pkg/kubectl/cmd/top_node.go index e432a457622..668a96ffa74 100644 --- a/pkg/kubectl/cmd/top_node.go +++ b/pkg/kubectl/cmd/top_node.go @@ -50,10 +50,23 @@ type HeapsterTopOptions struct { } func (o *HeapsterTopOptions) Bind(flags *pflag.FlagSet) { - flags.StringVar(&o.Namespace, "heapster-namespace", metricsutil.DefaultHeapsterNamespace, "Namespace Heapster service is located in") - flags.StringVar(&o.Service, "heapster-service", metricsutil.DefaultHeapsterService, "Name of Heapster service") - flags.StringVar(&o.Scheme, "heapster-scheme", metricsutil.DefaultHeapsterScheme, "Scheme (http or https) to connect to Heapster as") - flags.StringVar(&o.Port, "heapster-port", metricsutil.DefaultHeapsterPort, "Port name in service to use") + if len(o.Namespace) == 0 { + o.Namespace = metricsutil.DefaultHeapsterNamespace + } + if len(o.Service) == 0 { + o.Service = metricsutil.DefaultHeapsterService + } + if len(o.Scheme) == 0 { + o.Scheme = metricsutil.DefaultHeapsterScheme + } + if len(o.Port) == 0 { + o.Port = metricsutil.DefaultHeapsterPort + } + + flags.StringVar(&o.Namespace, "heapster-namespace", o.Namespace, "Namespace Heapster service is located in") + flags.StringVar(&o.Service, "heapster-service", o.Service, "Name of Heapster service") + flags.StringVar(&o.Scheme, "heapster-scheme", o.Scheme, "Scheme (http or https) to connect to Heapster as") + flags.StringVar(&o.Port, "heapster-port", o.Port, "Port name in service to use") } var ( @@ -70,8 +83,10 @@ var ( kubectl top node NODE_NAME`)) ) -func NewCmdTopNode(f cmdutil.Factory, out io.Writer) *cobra.Command { - options := &TopNodeOptions{} +func NewCmdTopNode(f cmdutil.Factory, options *TopNodeOptions, out io.Writer) *cobra.Command { + if options == nil { + options = &TopNodeOptions{} + } cmd := &cobra.Command{ Use: "node [NAME | -l label]", diff --git a/pkg/kubectl/cmd/top_node_test.go b/pkg/kubectl/cmd/top_node_test.go index 354afde1055..e2e9af185cb 100644 --- a/pkg/kubectl/cmd/top_node_test.go +++ b/pkg/kubectl/cmd/top_node_test.go @@ -67,7 +67,7 @@ func TestTopNodeAllMetrics(t *testing.T) { tf.ClientConfig = defaultClientConfig() buf := bytes.NewBuffer([]byte{}) - cmd := NewCmdTopNode(f, buf) + cmd := NewCmdTopNode(f, nil, buf) cmd.Run(cmd, []string{}) // Check the presence of node names in the output. @@ -116,7 +116,7 @@ func TestTopNodeWithNameMetrics(t *testing.T) { tf.ClientConfig = defaultClientConfig() buf := bytes.NewBuffer([]byte{}) - cmd := NewCmdTopNode(f, buf) + cmd := NewCmdTopNode(f, nil, buf) cmd.Run(cmd, []string{expectedMetrics.Name}) // Check the presence of node names in the output. @@ -176,7 +176,7 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) { tf.ClientConfig = defaultClientConfig() buf := bytes.NewBuffer([]byte{}) - cmd := NewCmdTopNode(f, buf) + cmd := NewCmdTopNode(f, nil, buf) cmd.Flags().Set("selector", label) cmd.Run(cmd, []string{}) diff --git a/pkg/kubectl/cmd/top_pod.go b/pkg/kubectl/cmd/top_pod.go index 689e6e3e2fe..e17b02be764 100644 --- a/pkg/kubectl/cmd/top_pod.go +++ b/pkg/kubectl/cmd/top_pod.go @@ -72,8 +72,10 @@ var ( kubectl top pod -l name=myLabel`)) ) -func NewCmdTopPod(f cmdutil.Factory, out io.Writer) *cobra.Command { - options := &TopPodOptions{} +func NewCmdTopPod(f cmdutil.Factory, options *TopPodOptions, out io.Writer) *cobra.Command { + if options == nil { + options = &TopPodOptions{} + } cmd := &cobra.Command{ Use: "pod [NAME | -l label]", diff --git a/pkg/kubectl/cmd/top_pod_test.go b/pkg/kubectl/cmd/top_pod_test.go index d7a43fc1460..ef892887d23 100644 --- a/pkg/kubectl/cmd/top_pod_test.go +++ b/pkg/kubectl/cmd/top_pod_test.go @@ -139,7 +139,7 @@ func TestTopPod(t *testing.T) { tf.ClientConfig = defaultClientConfig() buf := bytes.NewBuffer([]byte{}) - cmd := NewCmdTopPod(f, buf) + cmd := NewCmdTopPod(f, nil, buf) for name, value := range testCase.flags { cmd.Flags().Set(name, value) }