Skip to content

Commit

Permalink
enforce include-uninitialized in several kubectl commands
Browse files Browse the repository at this point in the history
  • Loading branch information
dixudx committed Aug 16, 2017
1 parent 3f8fef6 commit 4c1c366
Show file tree
Hide file tree
Showing 14 changed files with 154 additions and 9 deletions.
19 changes: 18 additions & 1 deletion pkg/kubectl/cmd/annotate.go
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,11 @@ func NewCmdAnnotate(f cmdutil.Factory, out io.Writer) *cobra.Command {
ArgAliases: argAliases,
}
cmdutil.AddPrinterFlags(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)
cmd.Flags().Bool("overwrite", false, "If true, allow annotations to be overwritten, otherwise reject annotation updates that overwrite existing annotations.")
cmd.Flags().Bool("local", false, "If true, annotation will NOT contact api-server but run locally.")
cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on, supports '=', '==', and '!='.")
cmd.Flags().Bool("all", false, "Select all resources in the namespace of the specified resource types")
cmd.Flags().Bool("all", false, "Select all resources (including the uninitialized objects by default, unless user explicitly set --include-uninitialized=false) in the namespace of the specified resource types.")
cmd.Flags().String("resource-version", "", i18n.T("If non-empty, the annotation update will only succeed if this is the current resource-version for the object. Only valid when specifying a single resource."))
usage := "identifying the resource to update the annotation"
cmdutil.AddFilenameOptionFlags(cmd, &options.FilenameOptions, usage)
Expand Down Expand Up @@ -190,10 +191,26 @@ func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) erro
return err
}

var includeUninitialized bool
if o.all {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if o.selector != "" {
// does not include the uninitialized objects by default
// unless explicitly set --include-uninitialized=true
includeUninitialized = false
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

b := builder.
ContinueOnError().
NamespaceParam(namespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitializedParam(includeUninitialized).
Flatten()

if !o.local {
Expand Down
12 changes: 12 additions & 0 deletions pkg/kubectl/cmd/apply.go
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,7 @@ func NewCmdApply(baseName string, f cmdutil.Factory, out, errOut io.Writer) *cob
cmdutil.AddPrinterFlags(cmd)
cmdutil.AddRecordFlag(cmd)
cmdutil.AddInclude3rdPartyFlags(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)

// apply subcommands
cmd.AddCommand(NewCmdApplyViewLastApplied(f, out, errOut))
Expand Down Expand Up @@ -214,12 +215,23 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
return err
}

var includeUninitialized bool
if options.Prune {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

r := builder.
Schema(schema).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &options.FilenameOptions).
SelectorParam(options.Selector).
IncludeUninitializedParam(includeUninitialized).
Flatten().
Do()
err = r.Err()
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/apply_edit_last_applied.go
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ func NewCmdApplyEditLastApplied(f cmdutil.Factory, out, errOut io.Writer) *cobra
Example: applyEditLastAppliedExample,
Run: func(cmd *cobra.Command, args []string) {
options.ChangeCause = f.Command(cmd, false)
if err := options.Complete(f, out, errOut, args); err != nil {
if err := options.Complete(f, out, errOut, args, cmd); err != nil {
cmdutil.CheckErr(err)
}
if err := options.Run(); err != nil {
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/create.go
Original file line number Diff line number Diff line change
Expand Up @@ -209,7 +209,7 @@ func RunEditOnCreate(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Comman
ChangeCause: f.Command(cmd, false),
Include3rdParty: cmdutil.GetFlagBool(cmd, "include-extended-apis"),
}
err := editOptions.Complete(f, out, errOut, []string{})
err := editOptions.Complete(f, out, errOut, []string{}, cmd)
if err != nil {
return err
}
Expand Down
16 changes: 14 additions & 2 deletions pkg/kubectl/cmd/delete.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
Example: delete_example,
Run: func(cmd *cobra.Command, args []string) {
cmdutil.CheckErr(cmdutil.ValidateOutputArgs(cmd))
if err := options.Complete(f, out, errOut, args); err != nil {
if err := options.Complete(f, out, errOut, args, cmd); err != nil {
cmdutil.CheckErr(err)
}
if err := options.Validate(cmd); err != nil {
Expand All @@ -159,15 +159,26 @@ func NewCmdDelete(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
cmd.Flags().DurationVar(&options.Timeout, "timeout", 0, "The length of time to wait before giving up on a delete, zero means determine a timeout from the size of the object")
cmdutil.AddOutputVarFlagsForMutation(cmd, &options.Output)
cmdutil.AddInclude3rdPartyVarFlags(cmd, &options.Include3rdParty)
cmdutil.AddIncludeUninitializedFlag(cmd)
return cmd
}

func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []string) error {
func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []string, cmd *cobra.Command) error {
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
if err != nil {
return err
}

var includeUninitialized bool
if o.DeleteAll {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

// Set up client based support.
mapper, _, err := f.UnstructuredObject()
if err != nil {
Expand All @@ -185,6 +196,7 @@ func (o *DeleteOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
SelectorParam(o.Selector).
IncludeUninitializedParam(includeUninitialized).
SelectAllParam(o.DeleteAll).
ResourceTypeOrNameArgs(false, args...).RequireObject(false).
Flatten().
Expand Down
10 changes: 10 additions & 0 deletions pkg/kubectl/cmd/describe.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ func NewCmdDescribe(f cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
cmd.Flags().Bool("all-namespaces", false, "If present, list the requested object(s) across all namespaces. Namespace in current context is ignored even if specified with --namespace.")
cmd.Flags().BoolVar(&describerSettings.ShowEvents, "show-events", true, "If true, display events related to the described object.")
cmdutil.AddInclude3rdPartyFlags(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)
return cmd
}

Expand All @@ -120,11 +121,20 @@ func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, a
return err
}

// include the uninitialized objects by default
// unless user explicitly set --include-uninitialized=false
var includeUninitialized bool
includeUninitialized = true
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

r := builder.
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().AllNamespaces(allNamespaces).
FilenameParam(enforceNamespace, options).
SelectorParam(selector).
IncludeUninitializedParam(includeUninitialized).
ResourceTypeOrNameArgs(true, args...).
Flatten().
Do()
Expand Down
2 changes: 1 addition & 1 deletion pkg/kubectl/cmd/edit.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func NewCmdEdit(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
Example: fmt.Sprintf(editExample),
Run: func(cmd *cobra.Command, args []string) {
options.ChangeCause = f.Command(cmd, false)
if err := options.Complete(f, out, errOut, args); err != nil {
if err := options.Complete(f, out, errOut, args, cmd); err != nil {
cmdutil.CheckErr(err)
}
if err := options.Run(); err != nil {
Expand Down
13 changes: 12 additions & 1 deletion pkg/kubectl/cmd/get.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,7 @@ func NewCmdGet(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Comman
ArgAliases: argAliases,
}
cmdutil.AddPrinterFlags(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)
cmd.Flags().StringP("selector", "l", "", "Selector (label query) to filter on, supports '=', '==', and '!='.")
cmd.Flags().BoolP("watch", "w", false, "After listing/getting the requested object, watch for changes.")
cmd.Flags().Bool("watch-only", false, "Watch for changes to the requested object(s), without listing/getting first.")
Expand Down Expand Up @@ -168,6 +169,7 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
selector := cmdutil.GetFlagString(cmd, "selector")
allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces")
showKind := cmdutil.GetFlagBool(cmd, "show-kind")
showAll := cmdutil.GetFlagBool(cmd, "show-all")
builder, err := f.NewUnstructuredBuilder(true)
if err != nil {
return err
Expand Down Expand Up @@ -195,7 +197,16 @@ func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args [
}

export := cmdutil.GetFlagBool(cmd, "export")
includeUninitialized := cmdutil.GetFlagBool(cmd, "include-uninitialized")

var includeUninitialized bool
if showAll {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

filterFuncs := f.DefaultResourceFilterFunc()
filterOpts := f.DefaultResourceFilterOptions(cmd, allNamespaces)
Expand Down
17 changes: 17 additions & 0 deletions pkg/kubectl/cmd/label.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,7 @@ func NewCmdLabel(f cmdutil.Factory, out io.Writer) *cobra.Command {
cmdutil.AddDryRunFlag(cmd)
cmdutil.AddRecordFlag(cmd)
cmdutil.AddInclude3rdPartyFlags(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)

return cmd
}
Expand Down Expand Up @@ -185,10 +186,26 @@ func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
return err
}

var includeUninitialized bool
if o.all {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if o.selector != "" {
// does not include the uninitialized objects by default
// unless explicitly set --include-uninitialized=true
includeUninitialized = false
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

b := builder.
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitializedParam(includeUninitialized).
Flatten()

if !o.local {
Expand Down
17 changes: 17 additions & 0 deletions pkg/kubectl/cmd/set/set_image.go
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,7 @@ func NewCmdImage(f cmdutil.Factory, out, err io.Writer) *cobra.Command {
cmd.Flags().BoolVar(&options.Local, "local", false, "If true, set image will NOT contact api-server but run locally.")
cmdutil.AddRecordFlag(cmd)
cmdutil.AddDryRunFlag(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)
return cmd
}

Expand Down Expand Up @@ -137,10 +138,26 @@ func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []st
return err
}

var includeUninitialized bool
if o.All {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if o.Selector != "" {
// does not include the uninitialized objects by default
// unless explicitly set --include-uninitialized=true
includeUninitialized = false
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

builder := f.NewBuilder(!o.Local).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitializedParam(includeUninitialized).
Flatten()
if !o.Local {
builder = builder.
Expand Down
18 changes: 17 additions & 1 deletion pkg/kubectl/cmd/set/set_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ func NewCmdResources(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.
cmd.Flags().BoolVar(&options.Local, "local", false, "If true, set resources will NOT contact api-server but run locally.")
cmdutil.AddDryRunFlag(cmd)
cmdutil.AddRecordFlag(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)
cmd.Flags().StringVar(&options.Limits, "limits", options.Limits, "The resource requirement requests for this container. For example, 'cpu=100m,memory=256Mi'. Note that server side components may assign requests depending on the server configuration, such as limit ranges.")
cmd.Flags().StringVar(&options.Requests, "requests", options.Requests, "The resource requirement requests for this container. For example, 'cpu=100m,memory=256Mi'. Note that server side components may assign requests depending on the server configuration, such as limit ranges.")
return cmd
Expand All @@ -141,11 +142,26 @@ func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
return err
}

var includeUninitialized bool
if o.All {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if o.Selector != "" {
// does not include the uninitialized objects by default
// unless explicitly set --include-uninitialized=true
includeUninitialized = false
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

builder := f.NewBuilder(!o.Local).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
//FilenameParam(enforceNamespace, o.Filenames...).
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitializedParam(includeUninitialized).
Flatten()

if !o.Local {
Expand Down
12 changes: 12 additions & 0 deletions pkg/kubectl/cmd/set/set_selector.go
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ func NewCmdSelector(f cmdutil.Factory, out io.Writer) *cobra.Command {
cmdutil.AddFilenameOptionFlags(cmd, &options.fileOptions, usage)
cmdutil.AddDryRunFlag(cmd)
cmdutil.AddRecordFlag(cmd)
cmdutil.AddIncludeUninitializedFlag(cmd)

return cmd
}
Expand All @@ -121,10 +122,21 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
return err
}

var includeUninitialized bool
if o.all {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

o.builder = f.NewBuilder(!o.local).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.fileOptions).
IncludeUninitializedParam(includeUninitialized).
Flatten()

if !o.local {
Expand Down
17 changes: 17 additions & 0 deletions pkg/kubectl/cmd/set/set_subject.go
Original file line number Diff line number Diff line change
Expand Up @@ -105,6 +105,7 @@ func NewCmdSubject(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Co
cmd.Flags().StringArrayVar(&options.Users, "user", []string{}, "Usernames to bind to the role")
cmd.Flags().StringArrayVar(&options.Groups, "group", []string{}, "Groups to bind to the role")
cmd.Flags().StringArrayVar(&options.ServiceAccounts, "serviceaccount", []string{}, "Service accounts to bind to the role")
cmdutil.AddIncludeUninitializedFlag(cmd)
return cmd
}

Expand All @@ -123,10 +124,26 @@ func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []
return err
}

var includeUninitialized bool
if o.All {
// include the uninitialized objects by default
// unless explicitly set --include-uninitialized=false
includeUninitialized = true
}
if o.Selector != "" {
// does not include the uninitialized objects by default
// unless explicitly set --include-uninitialized=true
includeUninitialized = false
}
if cmd.Flags().Changed("include-uninitialized") {
includeUninitialized = cmdutil.GetFlagBool(cmd, "include-uninitialized")
}

builder := f.NewBuilder(!o.Local).
ContinueOnError().
NamespaceParam(cmdNamespace).DefaultNamespace().
FilenameParam(enforceNamespace, &o.FilenameOptions).
IncludeUninitializedParam(includeUninitialized).
Flatten()

if !o.Local {
Expand Down

0 comments on commit 4c1c366

Please sign in to comment.