vendor update for CSI 0.3.0

This commit is contained in:
gman
2018-07-18 16:47:22 +02:00
parent 6f484f92fc
commit 8ea659f0d5
6810 changed files with 438061 additions and 193861 deletions

View File

@ -17,29 +17,35 @@ limitations under the License.
package cmd
import (
"fmt"
"io"
"strings"
"encoding/json"
"fmt"
"strings"
"github.com/golang/glog"
"github.com/spf13/cobra"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/printers"
"k8s.io/kubernetes/pkg/kubectl/genericclioptions/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n"
taintutils "k8s.io/kubernetes/pkg/util/taints"
)
// TaintOptions have the data required to perform the taint operation
type TaintOptions struct {
PrintFlags *genericclioptions.PrintFlags
ToPrinter func(string) (printers.ResourcePrinter, error)
resources []string
taintsToAdd []v1.Taint
taintsToRemove []v1.Taint
@ -47,9 +53,10 @@ type TaintOptions struct {
selector string
overwrite bool
all bool
f cmdutil.Factory
out io.Writer
cmd *cobra.Command
ClientForMapping func(*meta.RESTMapping) (resource.RESTClient, error)
genericclioptions.IOStreams
}
var (
@ -78,11 +85,13 @@ var (
kubectl taint node -l myLabel=X dedicated=foo:PreferNoSchedule`))
)
func NewCmdTaint(f cmdutil.Factory, out io.Writer) *cobra.Command {
options := &TaintOptions{}
func NewCmdTaint(f cmdutil.Factory, streams genericclioptions.IOStreams) *cobra.Command {
options := &TaintOptions{
PrintFlags: genericclioptions.NewPrintFlags("tainted").WithTypeSetter(scheme.Scheme),
IOStreams: streams,
}
validArgs := []string{"node"}
argAliases := kubectl.ResourceAliases(validArgs)
cmd := &cobra.Command{
Use: "taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N",
@ -91,7 +100,7 @@ func NewCmdTaint(f cmdutil.Factory, out io.Writer) *cobra.Command {
Long: fmt.Sprintf(taintLong, validation.DNS1123SubdomainMaxLength, validation.LabelValueMaxLength),
Example: taintExample,
Run: func(cmd *cobra.Command, args []string) {
if err := options.Complete(f, out, cmd, args); err != nil {
if err := options.Complete(f, cmd, args); err != nil {
cmdutil.CheckErr(err)
}
if err := options.Validate(); err != nil {
@ -101,13 +110,12 @@ func NewCmdTaint(f cmdutil.Factory, out io.Writer) *cobra.Command {
cmdutil.CheckErr(err)
}
},
ValidArgs: validArgs,
ArgAliases: argAliases,
ValidArgs: validArgs,
}
cmdutil.AddValidateFlags(cmd)
cmdutil.AddPrinterFlags(cmd)
cmdutil.AddInclude3rdPartyFlags(cmd)
options.PrintFlags.AddFlags(cmd)
cmdutil.AddValidateFlags(cmd)
cmd.Flags().StringVarP(&options.selector, "selector", "l", options.selector, "Selector (label query) to filter on, supports '=', '==', and '!='.(e.g. -l key1=value1,key2=value2)")
cmd.Flags().BoolVar(&options.overwrite, "overwrite", options.overwrite, "If true, allow taints to be overwritten, otherwise reject taint updates that overwrite existing taints.")
cmd.Flags().BoolVar(&options.all, "all", options.all, "Select all nodes in the cluster")
@ -115,8 +123,8 @@ func NewCmdTaint(f cmdutil.Factory, out io.Writer) *cobra.Command {
}
// Complete adapts from the command line args and factory to the data required.
func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
namespace, _, err := f.DefaultNamespace()
func (o *TaintOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) (err error) {
namespace, _, err := f.ToRawKubeConfigLoader().Namespace()
if err != nil {
return err
}
@ -140,6 +148,11 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
}
}
o.ToPrinter = func(operation string) (printers.ResourcePrinter, error) {
o.PrintFlags.NamePrintFlags.Operation = operation
return o.PrintFlags.ToPrinter()
}
if len(o.resources) < 1 {
return fmt.Errorf("one or more resources must be specified as <resource> <name>")
}
@ -151,7 +164,7 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
return cmdutil.UsageErrorf(cmd, err.Error())
}
o.builder = f.NewBuilder().
Internal().
WithScheme(legacyscheme.Scheme).
ContinueOnError().
NamespaceParam(namespace).DefaultNamespace()
if o.selector != "" {
@ -166,9 +179,8 @@ func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Com
o.builder = o.builder.LabelSelectorParam(o.selector).
Flatten().
Latest()
o.f = f
o.out = out
o.cmd = cmd
o.ClientForMapping = f.ClientForMapping
return nil
}
@ -192,7 +204,7 @@ func (o TaintOptions) validateFlags() error {
// Validate checks to the TaintOptions to see if there is sufficient information run the command.
func (o TaintOptions) Validate() error {
resourceType := strings.ToLower(o.resources[0])
validResources, isValidResource := append(kubectl.ResourceAliases([]string{"node"}), "node"), false
validResources, isValidResource := []string{"node", "nodes"}, false
for _, validResource := range validResources {
if resourceType == validResource {
isValidResource = true
@ -234,9 +246,10 @@ func (o TaintOptions) RunTaint() error {
return err
}
obj, err := info.Mapping.ConvertToVersion(info.Object, info.Mapping.GroupVersionKind.GroupVersion())
obj, err := legacyscheme.Scheme.ConvertToVersion(info.Object, v1.SchemeGroupVersion)
if err != nil {
return err
glog.V(1).Info(err)
return fmt.Errorf("object was not a node.v1.: %T", info.Object)
}
name, namespace := info.Name, info.Namespace
oldData, err := json.Marshal(obj)
@ -258,7 +271,7 @@ func (o TaintOptions) RunTaint() error {
}
mapping := info.ResourceMapping()
client, err := o.f.ClientForMapping(mapping)
client, err := o.ClientForMapping(mapping)
if err != nil {
return err
}
@ -273,14 +286,13 @@ func (o TaintOptions) RunTaint() error {
if err != nil {
return err
}
outputObj = cmdutil.AsDefaultVersionedOrOriginal(outputObj, mapping)
outputFormat := cmdutil.GetFlagString(o.cmd, "output")
if outputFormat != "" {
return cmdutil.PrintObject(o.cmd, outputObj, o.out)
printer, err := o.ToPrinter(operation)
if err != nil {
return err
}
cmdutil.PrintSuccess(false, o.out, info.Object, false, operation)
return nil
return printer.PrintObj(outputObj, o.Out)
})
}