diff --git a/pkg/kubectl/cmd/annotate.go b/pkg/kubectl/cmd/annotate.go index 15ca5bb7e01..0fbc92406f5 100644 --- a/pkg/kubectl/cmd/annotate.go +++ b/pkg/kubectl/cmd/annotate.go @@ -256,7 +256,7 @@ func (o AnnotateOptions) RunAnnotate() error { return o.f.PrintObject(o.cmd, mapper, outputObj, o.out) } - cmdutil.PrintSuccess(mapper, false, o.out, info.Mapping.Resource, info.Name, "annotated") + cmdutil.PrintSuccess(mapper, false, o.out, info.Mapping.Resource, info.Name, false, "annotated") return nil }) } diff --git a/pkg/kubectl/cmd/apply.go b/pkg/kubectl/cmd/apply.go index 51e40809cb8..eb22e926304 100644 --- a/pkg/kubectl/cmd/apply.go +++ b/pkg/kubectl/cmd/apply.go @@ -159,7 +159,7 @@ func RunApply(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *re return cmdutil.AddSourceToErr("creating", info.Source, err) } count++ - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "created") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "created") return nil } @@ -184,7 +184,7 @@ func RunApply(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *re } count++ - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "configured") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "configured") return nil }) diff --git a/pkg/kubectl/cmd/autoscale.go b/pkg/kubectl/cmd/autoscale.go index cf7791a6355..f4ac81239c8 100644 --- a/pkg/kubectl/cmd/autoscale.go +++ b/pkg/kubectl/cmd/autoscale.go @@ -179,7 +179,7 @@ func RunAutoscale(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args [] return f.PrintObject(cmd, mapper, object, out) } - cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, "autoscaled") + cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, cmdutil.GetDryRunFlag(cmd), "autoscaled") return nil }) if err != nil { diff --git a/pkg/kubectl/cmd/create.go b/pkg/kubectl/cmd/create.go index ae63929cc0c..16028213a53 100644 --- a/pkg/kubectl/cmd/create.go +++ b/pkg/kubectl/cmd/create.go @@ -140,7 +140,7 @@ func RunCreate(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *r if !shortOutput { f.PrintObjectSpecificMessage(info.Object, out) } - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "created") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "created") return nil }) if err != nil { @@ -226,7 +226,7 @@ func RunCreateSubcommand(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, } if useShortOutput := options.OutputFormat == "name"; useShortOutput || len(options.OutputFormat) == 0 { - cmdutil.PrintSuccess(mapper, useShortOutput, out, mapping.Resource, options.Name, "created") + cmdutil.PrintSuccess(mapper, useShortOutput, out, mapping.Resource, options.Name, options.DryRun, "created") return nil } diff --git a/pkg/kubectl/cmd/delete.go b/pkg/kubectl/cmd/delete.go index 54130419d4f..daf7f808741 100644 --- a/pkg/kubectl/cmd/delete.go +++ b/pkg/kubectl/cmd/delete.go @@ -184,7 +184,7 @@ func ReapResult(r *resource.Result, f *cmdutil.Factory, out io.Writer, isDefault return cmdutil.AddSourceToErr("stopping", info.Source, err) } if !quiet { - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "deleted") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "deleted") } return nil }) @@ -222,6 +222,6 @@ func deleteResource(info *resource.Info, out io.Writer, shortOutput bool, mapper if err := resource.NewHelper(info.Client, info.Mapping).Delete(info.Namespace, info.Name); err != nil { return cmdutil.AddSourceToErr("deleting", info.Source, err) } - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "deleted") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "deleted") return nil } diff --git a/pkg/kubectl/cmd/drain.go b/pkg/kubectl/cmd/drain.go index 4b3e362f89c..e5ca98cd5d0 100644 --- a/pkg/kubectl/cmd/drain.go +++ b/pkg/kubectl/cmd/drain.go @@ -227,7 +227,7 @@ func (o *DrainOptions) RunDrain() error { if err = o.deletePods(pods); err != nil { return err } - cmdutil.PrintSuccess(o.mapper, false, o.out, "node", o.nodeInfo.Name, "drained") + cmdutil.PrintSuccess(o.mapper, false, o.out, "node", o.nodeInfo.Name, false, "drained") return nil } @@ -391,7 +391,7 @@ func (o *DrainOptions) deletePods(pods []api.Pod) error { if err != nil { return err } - cmdutil.PrintSuccess(o.mapper, false, o.out, "pod", pod.Name, "deleted") + cmdutil.PrintSuccess(o.mapper, false, o.out, "pod", pod.Name, false, "deleted") } return nil @@ -408,7 +408,7 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error { if o.nodeInfo.Mapping.GroupVersionKind.Kind == "Node" { unsched := reflect.ValueOf(o.nodeInfo.Object).Elem().FieldByName("Spec").FieldByName("Unschedulable") if unsched.Bool() == desired { - cmdutil.PrintSuccess(o.mapper, false, o.out, o.nodeInfo.Mapping.Resource, o.nodeInfo.Name, already(desired)) + cmdutil.PrintSuccess(o.mapper, false, o.out, o.nodeInfo.Mapping.Resource, o.nodeInfo.Name, false, already(desired)) } else { helper := resource.NewHelper(o.restClient, o.nodeInfo.Mapping) unsched.SetBool(desired) @@ -416,10 +416,10 @@ func (o *DrainOptions) RunCordonOrUncordon(desired bool) error { if err != nil { return err } - cmdutil.PrintSuccess(o.mapper, false, o.out, o.nodeInfo.Mapping.Resource, o.nodeInfo.Name, changed(desired)) + cmdutil.PrintSuccess(o.mapper, false, o.out, o.nodeInfo.Mapping.Resource, o.nodeInfo.Name, false, changed(desired)) } } else { - cmdutil.PrintSuccess(o.mapper, false, o.out, o.nodeInfo.Mapping.Resource, o.nodeInfo.Name, "skipped") + cmdutil.PrintSuccess(o.mapper, false, o.out, o.nodeInfo.Mapping.Resource, o.nodeInfo.Name, false, "skipped") } return nil diff --git a/pkg/kubectl/cmd/edit.go b/pkg/kubectl/cmd/edit.go index ab8c0eb037a..5c4df5628f6 100644 --- a/pkg/kubectl/cmd/edit.go +++ b/pkg/kubectl/cmd/edit.go @@ -379,7 +379,7 @@ func RunEdit(f *cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args if reflect.DeepEqual(originalJS, editedJS) { // no edit, so just skip it. - cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, "skipped") + cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, false, "skipped") return nil } @@ -401,7 +401,7 @@ func RunEdit(f *cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args return nil } info.Refresh(patched, true) - cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, "edited") + cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, false, "edited") return nil }) if err != nil { diff --git a/pkg/kubectl/cmd/expose.go b/pkg/kubectl/cmd/expose.go index 827873c4439..2f49b3b955e 100644 --- a/pkg/kubectl/cmd/expose.go +++ b/pkg/kubectl/cmd/expose.go @@ -253,7 +253,11 @@ func RunExpose(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str } info.Refresh(object, true) if cmdutil.GetDryRunFlag(cmd) { - return f.PrintObject(cmd, mapper, object, out) + if len(cmdutil.GetFlagString(cmd, "output")) > 0 { + return f.PrintObject(cmd, mapper, object, out) + } + cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, true, "exposed") + return nil } if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { return err @@ -269,7 +273,7 @@ func RunExpose(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str return f.PrintObject(cmd, mapper, object, out) } - cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, "exposed") + cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, false, "exposed") return nil }) if err != nil { diff --git a/pkg/kubectl/cmd/expose_test.go b/pkg/kubectl/cmd/expose_test.go index 509d4ab81bb..69940475860 100644 --- a/pkg/kubectl/cmd/expose_test.go +++ b/pkg/kubectl/cmd/expose_test.go @@ -18,6 +18,7 @@ package cmd import ( "bytes" + "fmt" "net/http" "strings" "testing" @@ -464,7 +465,7 @@ func TestRunExposeService(t *testing.T) { continue } - test.expected = buf.String() + test.expected = fmt.Sprintf("service %q exposed (dry run)", test.flags["name"]) } if !strings.Contains(out, test.expected) { diff --git a/pkg/kubectl/cmd/label.go b/pkg/kubectl/cmd/label.go index 31186fd5dca..dbdfe6d2967 100644 --- a/pkg/kubectl/cmd/label.go +++ b/pkg/kubectl/cmd/label.go @@ -294,7 +294,7 @@ func RunLabel(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri if outputFormat != "" { return f.PrintObject(cmd, mapper, outputObj, out) } - cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, dataChangeMsg) + cmdutil.PrintSuccess(mapper, false, out, info.Mapping.Resource, info.Name, cmdutil.GetDryRunFlag(cmd), dataChangeMsg) return nil }) } diff --git a/pkg/kubectl/cmd/patch.go b/pkg/kubectl/cmd/patch.go index 98e8032d6bc..fee7a8f6502 100644 --- a/pkg/kubectl/cmd/patch.go +++ b/pkg/kubectl/cmd/patch.go @@ -185,7 +185,7 @@ func RunPatch(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri count++ if options.OutputFormat == "name" || len(options.OutputFormat) == 0 { - cmdutil.PrintSuccess(mapper, options.OutputFormat == "name", out, "", name, "patched") + cmdutil.PrintSuccess(mapper, options.OutputFormat == "name", out, "", name, false, "patched") } return nil } diff --git a/pkg/kubectl/cmd/replace.go b/pkg/kubectl/cmd/replace.go index 9c14e13704c..12ce0b1257e 100644 --- a/pkg/kubectl/cmd/replace.go +++ b/pkg/kubectl/cmd/replace.go @@ -158,7 +158,7 @@ func RunReplace(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []st info.Refresh(obj, true) f.PrintObjectSpecificMessage(obj, out) - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "replaced") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "replaced") return nil }) } @@ -271,7 +271,7 @@ func forceReplace(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args [] count++ info.Refresh(obj, true) f.PrintObjectSpecificMessage(obj, out) - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "replaced") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "replaced") return nil }) if err != nil { diff --git a/pkg/kubectl/cmd/rollingupdate.go b/pkg/kubectl/cmd/rollingupdate.go index 6cfcecb7cfd..dc37cc8eefa 100644 --- a/pkg/kubectl/cmd/rollingupdate.go +++ b/pkg/kubectl/cmd/rollingupdate.go @@ -388,7 +388,7 @@ func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, arg return err } _, res := meta.KindToResource(kinds[0]) - cmdutil.PrintSuccess(mapper, false, out, res.Resource, oldName, message) + cmdutil.PrintSuccess(mapper, false, out, res.Resource, oldName, dryrun, message) return nil } diff --git a/pkg/kubectl/cmd/rollout/rollout_pause.go b/pkg/kubectl/cmd/rollout/rollout_pause.go index 368a2fc1cc1..0a59bc294c2 100644 --- a/pkg/kubectl/cmd/rollout/rollout_pause.go +++ b/pkg/kubectl/cmd/rollout/rollout_pause.go @@ -133,10 +133,10 @@ func (o PauseConfig) RunPause() error { continue } if isAlreadyPaused { - cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, "already paused") + cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, false, "already paused") continue } - cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, "paused") + cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, false, "paused") } return utilerrors.NewAggregate(allErrs) } diff --git a/pkg/kubectl/cmd/rollout/rollout_resume.go b/pkg/kubectl/cmd/rollout/rollout_resume.go index 12db0a0fd1f..680d2806a41 100644 --- a/pkg/kubectl/cmd/rollout/rollout_resume.go +++ b/pkg/kubectl/cmd/rollout/rollout_resume.go @@ -137,10 +137,10 @@ func (o ResumeConfig) RunResume() error { continue } if isAlreadyResumed { - cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, "already resumed") + cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, false, "already resumed") continue } - cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, "resumed") + cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, false, "resumed") } return utilerrors.NewAggregate(allErrs) } diff --git a/pkg/kubectl/cmd/rollout/rollout_undo.go b/pkg/kubectl/cmd/rollout/rollout_undo.go index 6104662845a..55cf0100bb8 100644 --- a/pkg/kubectl/cmd/rollout/rollout_undo.go +++ b/pkg/kubectl/cmd/rollout/rollout_undo.go @@ -144,7 +144,7 @@ func (o *UndoOptions) RunUndo() error { allErrs = append(allErrs, cmdutil.AddSourceToErr("undoing", info.Source, err)) continue } - cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, result) + cmdutil.PrintSuccess(o.Mapper, false, o.Out, info.Mapping.Resource, info.Name, false, result) } return utilerrors.NewAggregate(allErrs) } diff --git a/pkg/kubectl/cmd/run.go b/pkg/kubectl/cmd/run.go index 83ebc8f76a9..f77b1c8dcae 100644 --- a/pkg/kubectl/cmd/run.go +++ b/pkg/kubectl/cmd/run.go @@ -349,7 +349,7 @@ func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cob if outputFormat != "" || cmdutil.GetDryRunFlag(cmd) { return f.PrintObject(cmd, mapper, obj, cmdOut) } - cmdutil.PrintSuccess(mapper, false, cmdOut, mapping.Resource, args[0], "created") + cmdutil.PrintSuccess(mapper, false, cmdOut, mapping.Resource, args[0], cmdutil.GetDryRunFlag(cmd), "created") return nil } @@ -575,7 +575,7 @@ func generateService(f *cmdutil.Factory, cmd *cobra.Command, args []string, serv if cmdutil.GetFlagString(cmd, "output") != "" || cmdutil.GetDryRunFlag(cmd) { return f.PrintObject(cmd, mapper, obj, out) } - cmdutil.PrintSuccess(mapper, false, out, mapping.Resource, args[0], "created") + cmdutil.PrintSuccess(mapper, false, out, mapping.Resource, args[0], cmdutil.GetDryRunFlag(cmd), "created") return nil } diff --git a/pkg/kubectl/cmd/scale.go b/pkg/kubectl/cmd/scale.go index e20f7224e41..c850d19afdd 100644 --- a/pkg/kubectl/cmd/scale.go +++ b/pkg/kubectl/cmd/scale.go @@ -178,7 +178,7 @@ func RunScale(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri } } counter++ - cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, "scaled") + cmdutil.PrintSuccess(mapper, shortOutput, out, info.Mapping.Resource, info.Name, false, "scaled") return nil }) if err != nil { diff --git a/pkg/kubectl/cmd/set/set_image.go b/pkg/kubectl/cmd/set/set_image.go index eedd203c9fc..1e34312ec8b 100644 --- a/pkg/kubectl/cmd/set/set_image.go +++ b/pkg/kubectl/cmd/set/set_image.go @@ -219,7 +219,7 @@ func (o *ImageOptions) Run() error { } info.Refresh(obj, true) - cmdutil.PrintSuccess(o.Mapper, o.ShortOutput, o.Out, info.Mapping.Resource, info.Name, "image updated") + cmdutil.PrintSuccess(o.Mapper, o.ShortOutput, o.Out, info.Mapping.Resource, info.Name, false, "image updated") } return utilerrors.NewAggregate(allErrs) } diff --git a/pkg/kubectl/cmd/taint.go b/pkg/kubectl/cmd/taint.go index 66aa6216f91..caa27758d11 100644 --- a/pkg/kubectl/cmd/taint.go +++ b/pkg/kubectl/cmd/taint.go @@ -371,7 +371,7 @@ func (o TaintOptions) RunTaint() error { return o.f.PrintObject(o.cmd, mapper, outputObj, o.out) } - cmdutil.PrintSuccess(mapper, false, o.out, info.Mapping.Resource, info.Name, "tainted") + cmdutil.PrintSuccess(mapper, false, o.out, info.Mapping.Resource, info.Name, false, "tainted") return nil }) } diff --git a/pkg/kubectl/cmd/util/printing.go b/pkg/kubectl/cmd/util/printing.go index c27cc29c263..60d724d7e7e 100644 --- a/pkg/kubectl/cmd/util/printing.go +++ b/pkg/kubectl/cmd/util/printing.go @@ -56,8 +56,12 @@ func AddNoHeadersFlags(cmd *cobra.Command) { } // PrintSuccess prints message after finishing mutating operations -func PrintSuccess(mapper meta.RESTMapper, shortOutput bool, out io.Writer, resource string, name string, operation string) { +func PrintSuccess(mapper meta.RESTMapper, shortOutput bool, out io.Writer, resource string, name string, dryRun bool, operation string) { resource, _ = mapper.ResourceSingularizer(resource) + dryRunMsg := "" + if dryRun { + dryRunMsg = " (dry run)" + } if shortOutput { // -o name: prints resource/name if len(resource) > 0 { @@ -68,9 +72,9 @@ func PrintSuccess(mapper meta.RESTMapper, shortOutput bool, out io.Writer, resou } else { // understandable output by default if len(resource) > 0 { - fmt.Fprintf(out, "%s \"%s\" %s\n", resource, name, operation) + fmt.Fprintf(out, "%s \"%s\" %s%s\n", resource, name, operation, dryRunMsg) } else { - fmt.Fprintf(out, "\"%s\" %s\n", name, operation) + fmt.Fprintf(out, "\"%s\" %s%s\n", name, operation, dryRunMsg) } } }