diff --git a/pkg/kubectl/cmd/cmd.go b/pkg/kubectl/cmd/cmd.go index 8ab38ac0b7c..d22dabb63e5 100644 --- a/pkg/kubectl/cmd/cmd.go +++ b/pkg/kubectl/cmd/cmd.go @@ -32,7 +32,6 @@ import ( cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" "k8s.io/kubernetes/pkg/kubectl/util/i18n" - "github.com/golang/glog" "github.com/spf13/cobra" ) @@ -270,7 +269,7 @@ func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cob Commands: []*cobra.Command{ rollout.NewCmdRollout(f, out, err), NewCmdRollingUpdate(f, out), - NewCmdScale(f, out), + NewCmdScale(f, out, err), NewCmdAutoscale(f, out), }, }, @@ -290,7 +289,7 @@ func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cob Message: "Troubleshooting and Debugging Commands:", Commands: []*cobra.Command{ NewCmdDescribe(f, out, err), - NewCmdLogs(f, out), + NewCmdLogs(f, out, err), NewCmdAttach(f, in, out, err), NewCmdExec(f, in, out, err), NewCmdPortForward(f, out, err), @@ -355,8 +354,8 @@ func runHelp(cmd *cobra.Command, args []string) { cmd.Help() } -func printDeprecationWarning(command, alias string) { - glog.Warningf("%s is DEPRECATED and will be removed in a future version. Use %s instead.", alias, command) +func printDeprecationWarning(errOut io.Writer, command, alias string) { + fmt.Fprintf(errOut, "%s is DEPRECATED and will be removed in a future version. Use %s instead.", alias, command) } // deprecatedAlias is intended to be used to create a "wrapper" command around diff --git a/pkg/kubectl/cmd/exec.go b/pkg/kubectl/cmd/exec.go index e13675029bb..671d66f4752 100644 --- a/pkg/kubectl/cmd/exec.go +++ b/pkg/kubectl/cmd/exec.go @@ -155,7 +155,7 @@ func (p *ExecOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn []s return cmdutil.UsageErrorf(cmd, execUsageStr) } if len(p.PodName) != 0 { - printDeprecationWarning("exec POD_NAME", "-p POD_NAME") + printDeprecationWarning(p.Err, "exec POD_NAME", "-p POD_NAME") if len(argsIn) < 1 { return cmdutil.UsageErrorf(cmd, execUsageStr) } diff --git a/pkg/kubectl/cmd/exec_test.go b/pkg/kubectl/cmd/exec_test.go index add8306f38d..0466f315879 100644 --- a/pkg/kubectl/cmd/exec_test.go +++ b/pkg/kubectl/cmd/exec_test.go @@ -142,6 +142,7 @@ func TestPodAndContainer(t *testing.T) { cmd := &cobra.Command{} options := test.p + options.Err = bytes.NewBuffer([]byte{}) err := options.Complete(f, cmd, test.args, test.argsLenAtDash) if test.expectError && err == nil { t.Errorf("%s: unexpected non-error", test.name) diff --git a/pkg/kubectl/cmd/logs.go b/pkg/kubectl/cmd/logs.go index 8091cf8251a..d6d965c38bf 100644 --- a/pkg/kubectl/cmd/logs.go +++ b/pkg/kubectl/cmd/logs.go @@ -86,7 +86,7 @@ type LogsOptions struct { } // NewCmdLogs creates a new pod logs command -func NewCmdLogs(f cmdutil.Factory, out io.Writer) *cobra.Command { +func NewCmdLogs(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { o := &LogsOptions{} cmd := &cobra.Command{ Use: "logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER]", @@ -96,7 +96,7 @@ func NewCmdLogs(f cmdutil.Factory, out io.Writer) *cobra.Command { Example: logsExample, PreRun: func(cmd *cobra.Command, args []string) { if len(os.Args) > 1 && os.Args[1] == "log" { - printDeprecationWarning("logs", "log") + printDeprecationWarning(errOut, "logs", "log") } }, Run: func(cmd *cobra.Command, args []string) { diff --git a/pkg/kubectl/cmd/logs_test.go b/pkg/kubectl/cmd/logs_test.go index 7cc7ec3387c..f5ef4de7c04 100644 --- a/pkg/kubectl/cmd/logs_test.go +++ b/pkg/kubectl/cmd/logs_test.go @@ -74,7 +74,7 @@ func TestLog(t *testing.T) { tf.ClientConfig = defaultClientConfig() buf := bytes.NewBuffer([]byte{}) - cmd := NewCmdLogs(f, buf) + cmd := NewCmdLogs(f, buf, buf) cmd.Flags().Set("namespace", "test") cmd.Run(cmd, []string{"foo"}) @@ -129,7 +129,8 @@ func TestValidateLogFlags(t *testing.T) { }, } for _, test := range tests { - cmd := NewCmdLogs(f, bytes.NewBuffer([]byte{})) + buf := bytes.NewBuffer([]byte{}) + cmd := NewCmdLogs(f, buf, buf) out := "" for flag, value := range test.flags { cmd.Flags().Set(flag, value) @@ -188,7 +189,8 @@ func TestLogComplete(t *testing.T) { }, } for _, test := range tests { - cmd := NewCmdLogs(f, bytes.NewBuffer([]byte{})) + buf := bytes.NewBuffer([]byte{}) + cmd := NewCmdLogs(f, buf, buf) var err error out := "" for flag, value := range test.flags { diff --git a/pkg/kubectl/cmd/scale.go b/pkg/kubectl/cmd/scale.go index b0848458dd3..388056c9fc0 100644 --- a/pkg/kubectl/cmd/scale.go +++ b/pkg/kubectl/cmd/scale.go @@ -57,7 +57,7 @@ var ( ) // NewCmdScale returns a cobra command with the appropriate configuration and flags to run scale -func NewCmdScale(f cmdutil.Factory, out io.Writer) *cobra.Command { +func NewCmdScale(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command { options := &resource.FilenameOptions{} validArgs := []string{"deployment", "replicaset", "replicationcontroller", "job", "statefulset"} @@ -72,7 +72,7 @@ func NewCmdScale(f cmdutil.Factory, out io.Writer) *cobra.Command { Run: func(cmd *cobra.Command, args []string) { cmdutil.CheckErr(cmdutil.ValidateOutputArgs(cmd)) shortOutput := cmdutil.GetFlagString(cmd, "output") == "name" - err := RunScale(f, out, cmd, args, shortOutput, options) + err := RunScale(f, out, errOut, cmd, args, shortOutput, options) cmdutil.CheckErr(err) }, ValidArgs: validArgs, @@ -95,12 +95,17 @@ func NewCmdScale(f cmdutil.Factory, out io.Writer) *cobra.Command { } // RunScale executes the scaling -func RunScale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error { +func RunScale(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error { cmdNamespace, enforceNamespace, err := f.DefaultNamespace() if err != nil { return err } + count := cmdutil.GetFlagInt(cmd, "replicas") + if count < 0 { + return cmdutil.UsageErrorf(cmd, "The --replicas=COUNT flag is required, and COUNT must be greater than or equal to 0") + } + selector := cmdutil.GetFlagString(cmd, "selector") all := cmdutil.GetFlagBool(cmd, "all") @@ -121,11 +126,6 @@ func RunScale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin return err } - count := cmdutil.GetFlagInt(cmd, "replicas") - if count < 0 { - return cmdutil.UsageErrorf(cmd, "The --replicas=COUNT flag is required, and COUNT must be greater than or equal to 0") - } - infos := []*resource.Info{} err = r.Visit(func(info *resource.Info, err error) error { if err == nil { @@ -146,6 +146,10 @@ func RunScale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin } mapping := info.ResourceMapping() + if mapping.Resource == "jobs" { + fmt.Fprintf(errOut, "%s scale job is DEPRECATED and will be removed in a future version.", cmd.Parent().Name()) + } + scaler, err := f.Scaler(mapping) if err != nil { return err