mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 14:07:14 +00:00
Merge pull request #33180 from AdoHe/refactory_interface
Automatic merge from submit-queue refact kubectl Factory make it interface refactor kubectl to make Factory interface. @kubernetes/kubectl
This commit is contained in:
commit
9b3ca2fb0d
@ -26,7 +26,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/util/flag"
|
"k8s.io/kubernetes/pkg/util/flag"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewKubeadmCommand(f *cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command {
|
func NewKubeadmCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command {
|
||||||
cmds := &cobra.Command{
|
cmds := &cobra.Command{
|
||||||
Use: "kubeadm",
|
Use: "kubeadm",
|
||||||
Short: "kubeadm: easily bootstrap a secure Kubernetes cluster.",
|
Short: "kubeadm: easily bootstrap a secure Kubernetes cluster.",
|
||||||
|
@ -54,7 +54,7 @@ type AnnotateOptions struct {
|
|||||||
newAnnotations map[string]string
|
newAnnotations map[string]string
|
||||||
removeAnnotations []string
|
removeAnnotations []string
|
||||||
|
|
||||||
// Common shared fields
|
// Common share fields
|
||||||
out io.Writer
|
out io.Writer
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ var (
|
|||||||
kubectl annotate pods foo description-`)
|
kubectl annotate pods foo description-`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdAnnotate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdAnnotate(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &AnnotateOptions{}
|
options := &AnnotateOptions{}
|
||||||
|
|
||||||
// retrieve a list of handled resources from printer as valid args
|
// retrieve a list of handled resources from printer as valid args
|
||||||
@ -138,7 +138,7 @@ func NewCmdAnnotate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete adapts from the command line args and factory to the data required.
|
// Complete adapts from the command line args and factory to the data required.
|
||||||
func (o *AnnotateOptions) Complete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
func (o *AnnotateOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
||||||
o.out = out
|
o.out = out
|
||||||
o.local = cmdutil.GetFlagBool(cmd, "local")
|
o.local = cmdutil.GetFlagBool(cmd, "local")
|
||||||
o.overwrite = cmdutil.GetFlagBool(cmd, "overwrite")
|
o.overwrite = cmdutil.GetFlagBool(cmd, "overwrite")
|
||||||
@ -172,7 +172,7 @@ func (o AnnotateOptions) Validate() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunAnnotate does the work
|
// RunAnnotate does the work
|
||||||
func (o AnnotateOptions) RunAnnotate(f *cmdutil.Factory, cmd *cobra.Command) error {
|
func (o AnnotateOptions) RunAnnotate(f cmdutil.Factory, cmd *cobra.Command) error {
|
||||||
namespace, enforceNamespace, err := f.DefaultNamespace()
|
namespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -28,7 +28,7 @@ import (
|
|||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdApiVersions(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdApiVersions(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "api-versions",
|
Use: "api-versions",
|
||||||
// apiversions is deprecated.
|
// apiversions is deprecated.
|
||||||
@ -42,7 +42,7 @@ func NewCmdApiVersions(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunApiVersions(f *cmdutil.Factory, w io.Writer) error {
|
func RunApiVersions(f cmdutil.Factory, w io.Writer) error {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "apiversions" {
|
if len(os.Args) > 1 && os.Args[1] == "apiversions" {
|
||||||
printDeprecationWarning("api-versions", "apiversions")
|
printDeprecationWarning("api-versions", "apiversions")
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ var (
|
|||||||
cat pod.json | kubectl apply -f -`)
|
cat pod.json | kubectl apply -f -`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdApply(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdApply(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
var options ApplyOptions
|
var options ApplyOptions
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -122,7 +122,7 @@ func validatePruneAll(prune, all bool, selector string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunApply(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *ApplyOptions) error {
|
func RunApply(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *ApplyOptions) error {
|
||||||
shortOutput := cmdutil.GetFlagString(cmd, "output") == "name"
|
shortOutput := cmdutil.GetFlagString(cmd, "output") == "name"
|
||||||
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -48,7 +48,7 @@ var (
|
|||||||
kubectl attach 123456-7890 -c ruby-container -i -t`)
|
kubectl attach 123456-7890 -c ruby-container -i -t`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdAttach(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.Command {
|
func NewCmdAttach(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.Command {
|
||||||
options := &AttachOptions{
|
options := &AttachOptions{
|
||||||
StreamOptions: StreamOptions{
|
StreamOptions: StreamOptions{
|
||||||
In: cmdIn,
|
In: cmdIn,
|
||||||
@ -113,7 +113,7 @@ type AttachOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete verifies command line arguments and loads data from the command environment
|
// Complete verifies command line arguments and loads data from the command environment
|
||||||
func (p *AttachOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, argsIn []string) error {
|
func (p *AttachOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn []string) error {
|
||||||
if len(argsIn) == 0 {
|
if len(argsIn) == 0 {
|
||||||
return cmdutil.UsageError(cmd, "POD is required for attach")
|
return cmdutil.UsageError(cmd, "POD is required for attach")
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ var (
|
|||||||
kubectl autoscale rc foo --max=5 --cpu-percent=80`)
|
kubectl autoscale rc foo --max=5 --cpu-percent=80`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdAutoscale(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdAutoscale(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
validArgs := []string{"deployment", "replicaset", "replicationcontroller"}
|
validArgs := []string{"deployment", "replicaset", "replicationcontroller"}
|
||||||
@ -79,7 +79,7 @@ func NewCmdAutoscale(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunAutoscale(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
||||||
namespace, enforceNamespace, err := f.DefaultNamespace()
|
namespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -33,7 +33,7 @@ import (
|
|||||||
var longDescr = `Display addresses of the master and services with label kubernetes.io/cluster-service=true
|
var longDescr = `Display addresses of the master and services with label kubernetes.io/cluster-service=true
|
||||||
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.`
|
To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.`
|
||||||
|
|
||||||
func NewCmdClusterInfo(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdClusterInfo(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "cluster-info",
|
Use: "cluster-info",
|
||||||
// clusterinfo is deprecated.
|
// clusterinfo is deprecated.
|
||||||
@ -50,7 +50,7 @@ func NewCmdClusterInfo(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunClusterInfo(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command) error {
|
func RunClusterInfo(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "clusterinfo" {
|
if len(os.Args) > 1 && os.Args[1] == "clusterinfo" {
|
||||||
printDeprecationWarning("cluster-info", "clusterinfo")
|
printDeprecationWarning("cluster-info", "clusterinfo")
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateSecret groups subcommands to create various types of secrets
|
// NewCmdCreateSecret groups subcommands to create various types of secrets
|
||||||
func NewCmdClusterInfoDump(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdClusterInfoDump(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "dump",
|
Use: "dump",
|
||||||
Short: "Dump lots of relevant info for debugging and diagnosis",
|
Short: "Dump lots of relevant info for debugging and diagnosis",
|
||||||
@ -84,7 +84,7 @@ func setupOutputWriter(cmd *cobra.Command, defaultWriter io.Writer, filename str
|
|||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
|
|
||||||
func dumpClusterInfo(f *cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
func dumpClusterInfo(f cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
||||||
clientset, err := f.ClientSet()
|
clientset, err := f.ClientSet()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -224,7 +224,7 @@ Use "{{.CommandPath}} [command] --help" for more information about a command.{{e
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewKubectlCommand creates the `kubectl` command and its nested children.
|
// NewKubectlCommand creates the `kubectl` command and its nested children.
|
||||||
func NewKubectlCommand(f *cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command {
|
func NewKubectlCommand(f cmdutil.Factory, in io.Reader, out, err io.Writer) *cobra.Command {
|
||||||
// Parent command to which all subcommands are added.
|
// Parent command to which all subcommands are added.
|
||||||
cmds := &cobra.Command{
|
cmds := &cobra.Command{
|
||||||
Use: "kubectl",
|
Use: "kubectl",
|
||||||
|
@ -28,6 +28,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/emicklei/go-restful/swagger"
|
||||||
|
"github.com/spf13/cobra"
|
||||||
|
"github.com/spf13/pflag"
|
||||||
|
|
||||||
"k8s.io/kubernetes/pkg/api"
|
"k8s.io/kubernetes/pkg/api"
|
||||||
"k8s.io/kubernetes/pkg/api/meta"
|
"k8s.io/kubernetes/pkg/api/meta"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
@ -210,7 +214,12 @@ type testFactory struct {
|
|||||||
Err error
|
Err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewTestFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.NegotiatedSerializer) {
|
type fakeFactory struct {
|
||||||
|
tf *testFactory
|
||||||
|
Codec runtime.Codec
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewTestFactory() (cmdutil.Factory, *testFactory, runtime.Codec, runtime.NegotiatedSerializer) {
|
||||||
scheme, mapper, codec := newExternalScheme()
|
scheme, mapper, codec := newExternalScheme()
|
||||||
t := &testFactory{
|
t := &testFactory{
|
||||||
Validator: validation.NullSchema{},
|
Validator: validation.NullSchema{},
|
||||||
@ -220,167 +229,361 @@ func NewTestFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.Ne
|
|||||||
negotiatedSerializer := serializer.NegotiatedSerializerWrapper(
|
negotiatedSerializer := serializer.NegotiatedSerializerWrapper(
|
||||||
runtime.SerializerInfo{Serializer: codec},
|
runtime.SerializerInfo{Serializer: codec},
|
||||||
runtime.StreamSerializerInfo{})
|
runtime.StreamSerializerInfo{})
|
||||||
return &cmdutil.Factory{
|
return &fakeFactory{
|
||||||
Object: func() (meta.RESTMapper, runtime.ObjectTyper) {
|
tf: t,
|
||||||
priorityRESTMapper := meta.PriorityRESTMapper{
|
Codec: codec,
|
||||||
Delegate: t.Mapper,
|
|
||||||
ResourcePriority: []unversioned.GroupVersionResource{
|
|
||||||
{Group: meta.AnyGroup, Version: "v1", Resource: meta.AnyResource},
|
|
||||||
},
|
|
||||||
KindPriority: []unversioned.GroupVersionKind{
|
|
||||||
{Group: meta.AnyGroup, Version: "v1", Kind: meta.AnyKind},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return priorityRESTMapper, t.Typer
|
|
||||||
},
|
|
||||||
ClientForMapping: func(*meta.RESTMapping) (resource.RESTClient, error) {
|
|
||||||
return t.Client, t.Err
|
|
||||||
},
|
|
||||||
Decoder: func(bool) runtime.Decoder {
|
|
||||||
return codec
|
|
||||||
},
|
|
||||||
JSONEncoder: func() runtime.Encoder {
|
|
||||||
return codec
|
|
||||||
},
|
|
||||||
Describer: func(*meta.RESTMapping) (kubectl.Describer, error) {
|
|
||||||
return t.Describer, t.Err
|
|
||||||
},
|
|
||||||
Printer: func(mapping *meta.RESTMapping, options kubectl.PrintOptions) (kubectl.ResourcePrinter, error) {
|
|
||||||
return t.Printer, t.Err
|
|
||||||
},
|
|
||||||
Validator: func(validate bool, cacheDir string) (validation.Schema, error) {
|
|
||||||
return t.Validator, t.Err
|
|
||||||
},
|
|
||||||
DefaultNamespace: func() (string, bool, error) {
|
|
||||||
return t.Namespace, false, t.Err
|
|
||||||
},
|
|
||||||
ClientConfig: func() (*restclient.Config, error) {
|
|
||||||
return t.ClientConfig, t.Err
|
|
||||||
},
|
|
||||||
}, t, codec, negotiatedSerializer
|
}, t, codec, negotiatedSerializer
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMixedFactory(apiClient resource.RESTClient) (*cmdutil.Factory, *testFactory, runtime.Codec) {
|
func (f *fakeFactory) FlagSet() *pflag.FlagSet {
|
||||||
f, t, c, _ := NewTestFactory()
|
return nil
|
||||||
var multiRESTMapper meta.MultiRESTMapper
|
|
||||||
multiRESTMapper = append(multiRESTMapper, t.Mapper)
|
|
||||||
multiRESTMapper = append(multiRESTMapper, testapi.Default.RESTMapper())
|
|
||||||
f.Object = func() (meta.RESTMapper, runtime.ObjectTyper) {
|
|
||||||
priorityRESTMapper := meta.PriorityRESTMapper{
|
|
||||||
Delegate: multiRESTMapper,
|
|
||||||
ResourcePriority: []unversioned.GroupVersionResource{
|
|
||||||
{Group: meta.AnyGroup, Version: "v1", Resource: meta.AnyResource},
|
|
||||||
},
|
|
||||||
KindPriority: []unversioned.GroupVersionKind{
|
|
||||||
{Group: meta.AnyGroup, Version: "v1", Kind: meta.AnyKind},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
return priorityRESTMapper, runtime.MultiObjectTyper{t.Typer, api.Scheme}
|
|
||||||
}
|
|
||||||
f.ClientForMapping = func(m *meta.RESTMapping) (resource.RESTClient, error) {
|
|
||||||
if m.ObjectConvertor == api.Scheme {
|
|
||||||
return apiClient, t.Err
|
|
||||||
}
|
|
||||||
return t.Client, t.Err
|
|
||||||
}
|
|
||||||
return f, t, c
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewAPIFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.NegotiatedSerializer) {
|
func (f *fakeFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
|
||||||
|
priorityRESTMapper := meta.PriorityRESTMapper{
|
||||||
|
Delegate: f.tf.Mapper,
|
||||||
|
ResourcePriority: []unversioned.GroupVersionResource{
|
||||||
|
{Group: meta.AnyGroup, Version: "v1", Resource: meta.AnyResource},
|
||||||
|
},
|
||||||
|
KindPriority: []unversioned.GroupVersionKind{
|
||||||
|
{Group: meta.AnyGroup, Version: "v1", Kind: meta.AnyKind},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return priorityRESTMapper, f.tf.Typer
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) UnstructuredObject() (meta.RESTMapper, runtime.ObjectTyper, error) {
|
||||||
|
return nil, nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Decoder(bool) runtime.Decoder {
|
||||||
|
return f.Codec
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) JSONEncoder() runtime.Encoder {
|
||||||
|
return f.Codec
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) RESTClient() (*restclient.RESTClient, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) ClientSet() (*internalclientset.Clientset, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) ClientConfig() (*restclient.Config, error) {
|
||||||
|
return f.tf.ClientConfig, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) ClientForMapping(*meta.RESTMapping) (resource.RESTClient, error) {
|
||||||
|
return f.tf.Client, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) UnstructuredClientForMapping(*meta.RESTMapping) (resource.RESTClient, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Describer(*meta.RESTMapping) (kubectl.Describer, error) {
|
||||||
|
return f.tf.Describer, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Printer(mapping *meta.RESTMapping, options kubectl.PrintOptions) (kubectl.ResourcePrinter, error) {
|
||||||
|
return f.tf.Printer, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Scaler(*meta.RESTMapping) (kubectl.Scaler, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Reaper(*meta.RESTMapping) (kubectl.Reaper, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) HistoryViewer(*meta.RESTMapping) (kubectl.HistoryViewer, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Rollbacker(*meta.RESTMapping) (kubectl.Rollbacker, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) StatusViewer(*meta.RESTMapping) (kubectl.StatusViewer, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) MapBasedSelectorForObject(runtime.Object) (string, error) {
|
||||||
|
return "", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) PortsForObject(runtime.Object) ([]string, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) ProtocolsForObject(runtime.Object) (map[string]string, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) LabelsForObject(runtime.Object) (map[string]string, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) LogsForObject(object, options runtime.Object) (*restclient.Request, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) PauseObject(runtime.Object) (bool, error) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) ResumeObject(runtime.Object) (bool, error) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Validator(validate bool, cacheDir string) (validation.Schema, error) {
|
||||||
|
return f.tf.Validator, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) SwaggerSchema(unversioned.GroupVersionKind) (*swagger.ApiDeclaration, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) DefaultNamespace() (string, bool, error) {
|
||||||
|
return f.tf.Namespace, false, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Generators(string) map[string]kubectl.Generator {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) CanBeExposed(unversioned.GroupKind) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) CanBeAutoscaled(unversioned.GroupKind) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) AttachablePodForObject(ob runtime.Object) (*api.Pod, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) UpdatePodSpecForObject(obj runtime.Object, fn func(*api.PodSpec) error) (bool, error) {
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) EditorEnvs() []string {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) PrintObjectSpecificMessage(obj runtime.Object, out io.Writer) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) Command() string {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) BindFlags(flags *pflag.FlagSet) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) BindExternalFlags(flags *pflag.FlagSet) {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) PrintObject(cmd *cobra.Command, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) PrinterForMapping(cmd *cobra.Command, mapping *meta.RESTMapping, withNamespace bool) (kubectl.ResourcePrinter, error) {
|
||||||
|
return f.tf.Printer, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) NewBuilder() *resource.Builder {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) DefaultResourceFilterOptions(cmd *cobra.Command, withNamespace bool) *kubectl.PrintOptions {
|
||||||
|
return &kubectl.PrintOptions{}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeFactory) DefaultResourceFilterFunc() kubectl.Filters {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
type fakeMixedFactory struct {
|
||||||
|
cmdutil.Factory
|
||||||
|
tf *testFactory
|
||||||
|
apiClient resource.RESTClient
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeMixedFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
|
||||||
|
var multiRESTMapper meta.MultiRESTMapper
|
||||||
|
multiRESTMapper = append(multiRESTMapper, f.tf.Mapper)
|
||||||
|
multiRESTMapper = append(multiRESTMapper, testapi.Default.RESTMapper())
|
||||||
|
priorityRESTMapper := meta.PriorityRESTMapper{
|
||||||
|
Delegate: multiRESTMapper,
|
||||||
|
ResourcePriority: []unversioned.GroupVersionResource{
|
||||||
|
{Group: meta.AnyGroup, Version: "v1", Resource: meta.AnyResource},
|
||||||
|
},
|
||||||
|
KindPriority: []unversioned.GroupVersionKind{
|
||||||
|
{Group: meta.AnyGroup, Version: "v1", Kind: meta.AnyKind},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
return priorityRESTMapper, runtime.MultiObjectTyper{f.tf.Typer, api.Scheme}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeMixedFactory) ClientForMapping(m *meta.RESTMapping) (resource.RESTClient, error) {
|
||||||
|
if m.ObjectConvertor == api.Scheme {
|
||||||
|
return f.apiClient, f.tf.Err
|
||||||
|
}
|
||||||
|
return f.tf.Client, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewMixedFactory(apiClient resource.RESTClient) (cmdutil.Factory, *testFactory, runtime.Codec) {
|
||||||
|
f, t, c, _ := NewTestFactory()
|
||||||
|
return &fakeMixedFactory{
|
||||||
|
Factory: f,
|
||||||
|
tf: t,
|
||||||
|
apiClient: apiClient,
|
||||||
|
}, t, c
|
||||||
|
}
|
||||||
|
|
||||||
|
type fakeAPIFactory struct {
|
||||||
|
cmdutil.Factory
|
||||||
|
tf *testFactory
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
|
||||||
|
return testapi.Default.RESTMapper(), api.Scheme
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) UnstructuredObject() (meta.RESTMapper, runtime.ObjectTyper, error) {
|
||||||
|
groupResources := testDynamicResources()
|
||||||
|
mapper := discovery.NewRESTMapper(groupResources, meta.InterfacesForUnstructured)
|
||||||
|
typer := discovery.NewUnstructuredObjectTyper(groupResources)
|
||||||
|
|
||||||
|
return cmdutil.NewShortcutExpander(mapper, nil), typer, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) Decoder(bool) runtime.Decoder {
|
||||||
|
return testapi.Default.Codec()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) JSONEncoder() runtime.Encoder {
|
||||||
|
return testapi.Default.Codec()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) ClientSet() (*internalclientset.Clientset, error) {
|
||||||
|
// Swap out the HTTP client out of the client with the fake's version.
|
||||||
|
fakeClient := f.tf.Client.(*fake.RESTClient)
|
||||||
|
restClient, err := restclient.RESTClientFor(f.tf.ClientConfig)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
restClient.Client = fakeClient.Client
|
||||||
|
return internalclientset.New(restClient), f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) RESTClient() (*restclient.RESTClient, error) {
|
||||||
|
// Swap out the HTTP client out of the client with the fake's version.
|
||||||
|
fakeClient := f.tf.Client.(*fake.RESTClient)
|
||||||
|
restClient, err := restclient.RESTClientFor(f.tf.ClientConfig)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
restClient.Client = fakeClient.Client
|
||||||
|
return restClient, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) ClientConfig() (*restclient.Config, error) {
|
||||||
|
return f.tf.ClientConfig, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) ClientForMapping(*meta.RESTMapping) (resource.RESTClient, error) {
|
||||||
|
return f.tf.Client, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) UnstructuredClientForMapping(*meta.RESTMapping) (resource.RESTClient, error) {
|
||||||
|
return f.tf.Client, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) Describer(*meta.RESTMapping) (kubectl.Describer, error) {
|
||||||
|
return f.tf.Describer, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) Printer(mapping *meta.RESTMapping, options kubectl.PrintOptions) (kubectl.ResourcePrinter, error) {
|
||||||
|
return f.tf.Printer, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) LogsForObject(object, options runtime.Object) (*restclient.Request, error) {
|
||||||
|
fakeClient := f.tf.Client.(*fake.RESTClient)
|
||||||
|
c := client.NewOrDie(f.tf.ClientConfig)
|
||||||
|
c.Client = fakeClient.Client
|
||||||
|
|
||||||
|
switch t := object.(type) {
|
||||||
|
case *api.Pod:
|
||||||
|
opts, ok := options.(*api.PodLogOptions)
|
||||||
|
if !ok {
|
||||||
|
return nil, errors.New("provided options object is not a PodLogOptions")
|
||||||
|
}
|
||||||
|
return c.Pods(f.tf.Namespace).GetLogs(t.Name, opts), nil
|
||||||
|
default:
|
||||||
|
fqKinds, _, err := api.Scheme.ObjectKinds(object)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return nil, fmt.Errorf("cannot get the logs from %v", fqKinds[0])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) Validator(validate bool, cacheDir string) (validation.Schema, error) {
|
||||||
|
return f.tf.Validator, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) DefaultNamespace() (string, bool, error) {
|
||||||
|
return f.tf.Namespace, false, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) Generators(cmdName string) map[string]kubectl.Generator {
|
||||||
|
return cmdutil.DefaultGenerators(cmdName)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) PrintObject(cmd *cobra.Command, mapper meta.RESTMapper, obj runtime.Object, out io.Writer) error {
|
||||||
|
gvks, _, err := api.Scheme.ObjectKinds(obj)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
mapping, err := mapper.RESTMapping(gvks[0].GroupKind())
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
printer, err := f.PrinterForMapping(cmd, mapping, false)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return printer.PrintObj(obj, out)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) PrinterForMapping(cmd *cobra.Command, mapping *meta.RESTMapping, withNamespace bool) (kubectl.ResourcePrinter, error) {
|
||||||
|
return f.tf.Printer, f.tf.Err
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *fakeAPIFactory) NewBuilder() *resource.Builder {
|
||||||
|
mapper, typer := f.Object()
|
||||||
|
|
||||||
|
return resource.NewBuilder(mapper, typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true))
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewAPIFactory() (cmdutil.Factory, *testFactory, runtime.Codec, runtime.NegotiatedSerializer) {
|
||||||
t := &testFactory{
|
t := &testFactory{
|
||||||
Validator: validation.NullSchema{},
|
Validator: validation.NullSchema{},
|
||||||
}
|
}
|
||||||
|
|
||||||
f := &cmdutil.Factory{
|
|
||||||
Object: func() (meta.RESTMapper, runtime.ObjectTyper) {
|
|
||||||
return testapi.Default.RESTMapper(), api.Scheme
|
|
||||||
},
|
|
||||||
UnstructuredObject: func() (meta.RESTMapper, runtime.ObjectTyper, error) {
|
|
||||||
groupResources := testDynamicResources()
|
|
||||||
mapper := discovery.NewRESTMapper(groupResources, meta.InterfacesForUnstructured)
|
|
||||||
typer := discovery.NewUnstructuredObjectTyper(groupResources)
|
|
||||||
|
|
||||||
return cmdutil.NewShortcutExpander(mapper, nil), typer, nil
|
|
||||||
},
|
|
||||||
ClientSet: func() (*internalclientset.Clientset, error) {
|
|
||||||
// Swap out the HTTP client out of the client with the fake's version.
|
|
||||||
fakeClient := t.Client.(*fake.RESTClient)
|
|
||||||
restClient, err := restclient.RESTClientFor(t.ClientConfig)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
restClient.Client = fakeClient.Client
|
|
||||||
return internalclientset.New(restClient), t.Err
|
|
||||||
},
|
|
||||||
RESTClient: func() (*restclient.RESTClient, error) {
|
|
||||||
// Swap out the HTTP client out of the client with the fake's version.
|
|
||||||
fakeClient := t.Client.(*fake.RESTClient)
|
|
||||||
restClient, err := restclient.RESTClientFor(t.ClientConfig)
|
|
||||||
if err != nil {
|
|
||||||
panic(err)
|
|
||||||
}
|
|
||||||
restClient.Client = fakeClient.Client
|
|
||||||
return restClient, t.Err
|
|
||||||
},
|
|
||||||
ClientForMapping: func(*meta.RESTMapping) (resource.RESTClient, error) {
|
|
||||||
return t.Client, t.Err
|
|
||||||
},
|
|
||||||
UnstructuredClientForMapping: func(*meta.RESTMapping) (resource.RESTClient, error) {
|
|
||||||
return t.Client, t.Err
|
|
||||||
},
|
|
||||||
Decoder: func(bool) runtime.Decoder {
|
|
||||||
return testapi.Default.Codec()
|
|
||||||
},
|
|
||||||
JSONEncoder: func() runtime.Encoder {
|
|
||||||
return testapi.Default.Codec()
|
|
||||||
},
|
|
||||||
Describer: func(*meta.RESTMapping) (kubectl.Describer, error) {
|
|
||||||
return t.Describer, t.Err
|
|
||||||
},
|
|
||||||
Printer: func(mapping *meta.RESTMapping, options kubectl.PrintOptions) (kubectl.ResourcePrinter, error) {
|
|
||||||
return t.Printer, t.Err
|
|
||||||
},
|
|
||||||
Validator: func(validate bool, cacheDir string) (validation.Schema, error) {
|
|
||||||
return t.Validator, t.Err
|
|
||||||
},
|
|
||||||
DefaultNamespace: func() (string, bool, error) {
|
|
||||||
return t.Namespace, false, t.Err
|
|
||||||
},
|
|
||||||
ClientConfig: func() (*restclient.Config, error) {
|
|
||||||
return t.ClientConfig, t.Err
|
|
||||||
},
|
|
||||||
Generators: func(cmdName string) map[string]kubectl.Generator {
|
|
||||||
return cmdutil.DefaultGenerators(cmdName)
|
|
||||||
},
|
|
||||||
LogsForObject: func(object, options runtime.Object) (*restclient.Request, error) {
|
|
||||||
fakeClient := t.Client.(*fake.RESTClient)
|
|
||||||
c := client.NewOrDie(t.ClientConfig)
|
|
||||||
c.Client = fakeClient.Client
|
|
||||||
|
|
||||||
switch t := object.(type) {
|
|
||||||
case *api.Pod:
|
|
||||||
opts, ok := options.(*api.PodLogOptions)
|
|
||||||
if !ok {
|
|
||||||
return nil, errors.New("provided options object is not a PodLogOptions")
|
|
||||||
}
|
|
||||||
return c.Pods(t.Namespace).GetLogs(t.Name, opts), nil
|
|
||||||
default:
|
|
||||||
fqKinds, _, err := api.Scheme.ObjectKinds(object)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return nil, fmt.Errorf("cannot get the logs from %v", fqKinds[0])
|
|
||||||
}
|
|
||||||
},
|
|
||||||
}
|
|
||||||
rf := cmdutil.NewFactory(nil)
|
rf := cmdutil.NewFactory(nil)
|
||||||
f.MapBasedSelectorForObject = rf.MapBasedSelectorForObject
|
return &fakeAPIFactory{
|
||||||
f.PortsForObject = rf.PortsForObject
|
Factory: rf,
|
||||||
f.ProtocolsForObject = rf.ProtocolsForObject
|
tf: t,
|
||||||
f.LabelsForObject = rf.LabelsForObject
|
}, t, testapi.Default.Codec(), testapi.Default.NegotiatedSerializer()
|
||||||
f.CanBeExposed = rf.CanBeExposed
|
|
||||||
f.PrintObjectSpecificMessage = rf.PrintObjectSpecificMessage
|
|
||||||
return f, t, testapi.Default.Codec(), testapi.Default.NegotiatedSerializer()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser {
|
func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser {
|
||||||
|
@ -56,7 +56,7 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdCompletion(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdCompletion(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
shells := []string{}
|
shells := []string{}
|
||||||
for s := range completion_shells {
|
for s := range completion_shells {
|
||||||
shells = append(shells, s)
|
shells = append(shells, s)
|
||||||
@ -77,7 +77,7 @@ func NewCmdCompletion(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunCompletion(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) error {
|
func RunCompletion(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
return cmdutil.UsageError(cmd, "Shell not specified.")
|
return cmdutil.UsageError(cmd, "Shell not specified.")
|
||||||
}
|
}
|
||||||
|
@ -62,7 +62,7 @@ var (
|
|||||||
|
|
||||||
// NewCmdConvert creates a command object for the generic "convert" action, which
|
// NewCmdConvert creates a command object for the generic "convert" action, which
|
||||||
// translates the config file into a given version.
|
// translates the config file into a given version.
|
||||||
func NewCmdConvert(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdConvert(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &ConvertOptions{}
|
options := &ConvertOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -103,7 +103,7 @@ type ConvertOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete collects information required to run Convert command from command line.
|
// Complete collects information required to run Convert command from command line.
|
||||||
func (o *ConvertOptions) Complete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
||||||
o.outputVersion, err = cmdutil.OutputVersion(cmd, ®istered.EnabledVersionsForGroup(api.GroupName)[0])
|
o.outputVersion, err = cmdutil.OutputVersion(cmd, ®istered.EnabledVersionsForGroup(api.GroupName)[0])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -43,7 +43,7 @@ var (
|
|||||||
cat pod.json | kubectl create -f -`)
|
cat pod.json | kubectl create -f -`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdCreate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdCreate(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -89,7 +89,7 @@ func ValidateArgs(cmd *cobra.Command, args []string) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunCreate(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *resource.FilenameOptions) error {
|
func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *resource.FilenameOptions) error {
|
||||||
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -183,7 +183,7 @@ type CreateSubcommandOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunCreateSubcommand executes a create subcommand using the specified options
|
// RunCreateSubcommand executes a create subcommand using the specified options
|
||||||
func RunCreateSubcommand(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *CreateSubcommandOptions) error {
|
func RunCreateSubcommand(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, options *CreateSubcommandOptions) error {
|
||||||
namespace, _, err := f.DefaultNamespace()
|
namespace, _, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -53,7 +53,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// ConfigMap is a command to ease creating ConfigMaps.
|
// ConfigMap is a command to ease creating ConfigMaps.
|
||||||
func NewCmdCreateConfigMap(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateConfigMap(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]",
|
Use: "configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]",
|
||||||
Aliases: []string{"cm"},
|
Aliases: []string{"cm"},
|
||||||
@ -75,7 +75,7 @@ func NewCmdCreateConfigMap(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateConfigMap is the implementation of the create configmap command.
|
// CreateConfigMap is the implementation of the create configmap command.
|
||||||
func CreateConfigMap(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateConfigMap(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -37,7 +37,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateDeployment is a macro command to create a new deployment
|
// NewCmdCreateDeployment is a macro command to create a new deployment
|
||||||
func NewCmdCreateDeployment(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateDeployment(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "deployment NAME --image=image [--dry-run]",
|
Use: "deployment NAME --image=image [--dry-run]",
|
||||||
Aliases: []string{"deploy"},
|
Aliases: []string{"deploy"},
|
||||||
@ -59,7 +59,7 @@ func NewCmdCreateDeployment(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateDeployment implements the behavior to run the create deployment command
|
// CreateDeployment implements the behavior to run the create deployment command
|
||||||
func CreateDeployment(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateDeployment(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -37,7 +37,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateNamespace is a macro command to create a new namespace
|
// NewCmdCreateNamespace is a macro command to create a new namespace
|
||||||
func NewCmdCreateNamespace(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateNamespace(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "namespace NAME [--dry-run]",
|
Use: "namespace NAME [--dry-run]",
|
||||||
Aliases: []string{"ns"},
|
Aliases: []string{"ns"},
|
||||||
@ -58,7 +58,7 @@ func NewCmdCreateNamespace(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateNamespace implements the behavior to run the create namespace command
|
// CreateNamespace implements the behavior to run the create namespace command
|
||||||
func CreateNamespace(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateNamespace(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -40,7 +40,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateQuota is a macro command to create a new quota
|
// NewCmdCreateQuota is a macro command to create a new quota
|
||||||
func NewCmdCreateQuota(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateQuota(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=bool]",
|
Use: "quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=bool]",
|
||||||
Aliases: []string{"resourcequota"},
|
Aliases: []string{"resourcequota"},
|
||||||
@ -63,7 +63,7 @@ func NewCmdCreateQuota(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateQuota implements the behavior to run the create quota command
|
// CreateQuota implements the behavior to run the create quota command
|
||||||
func CreateQuota(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateQuota(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -28,7 +28,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateSecret groups subcommands to create various types of secrets
|
// NewCmdCreateSecret groups subcommands to create various types of secrets
|
||||||
func NewCmdCreateSecret(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateSecret(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "secret",
|
Use: "secret",
|
||||||
Short: "Create a secret using specified subcommand",
|
Short: "Create a secret using specified subcommand",
|
||||||
@ -70,7 +70,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateSecretGeneric is a command to create generic secrets from files, directories, or literal values
|
// NewCmdCreateSecretGeneric is a command to create generic secrets from files, directories, or literal values
|
||||||
func NewCmdCreateSecretGeneric(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateSecretGeneric(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]",
|
Use: "generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run]",
|
||||||
Short: "Create a secret from a local file, directory or literal value",
|
Short: "Create a secret from a local file, directory or literal value",
|
||||||
@ -92,7 +92,7 @@ func NewCmdCreateSecretGeneric(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Comm
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateSecretGeneric is the implementation of the create secret generic command
|
// CreateSecretGeneric is the implementation of the create secret generic command
|
||||||
func CreateSecretGeneric(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateSecretGeneric(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -138,7 +138,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateSecretDockerRegistry is a macro command for creating secrets to work with Docker registries
|
// NewCmdCreateSecretDockerRegistry is a macro command for creating secrets to work with Docker registries
|
||||||
func NewCmdCreateSecretDockerRegistry(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateSecretDockerRegistry(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-literal=key1=value1] [--dry-run]",
|
Use: "docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-literal=key1=value1] [--dry-run]",
|
||||||
Short: "Create a secret for use with a Docker registry",
|
Short: "Create a secret for use with a Docker registry",
|
||||||
@ -165,7 +165,7 @@ func NewCmdCreateSecretDockerRegistry(f *cmdutil.Factory, cmdOut io.Writer) *cob
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateSecretDockerRegistry is the implementation of the create secret docker-registry command
|
// CreateSecretDockerRegistry is the implementation of the create secret docker-registry command
|
||||||
func CreateSecretDockerRegistry(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateSecretDockerRegistry(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -209,7 +209,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateSecretTLS is a macro command for creating secrets to work with Docker registries
|
// NewCmdCreateSecretTLS is a macro command for creating secrets to work with Docker registries
|
||||||
func NewCmdCreateSecretTLS(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateSecretTLS(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run]",
|
Use: "tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run]",
|
||||||
Short: "Create a TLS secret",
|
Short: "Create a TLS secret",
|
||||||
@ -230,7 +230,7 @@ func NewCmdCreateSecretTLS(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateSecretTLS is the implementation of the create secret tls command
|
// CreateSecretTLS is the implementation of the create secret tls command
|
||||||
func CreateSecretTLS(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateSecretTLS(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateService is a macro command to create a new service
|
// NewCmdCreateService is a macro command to create a new service
|
||||||
func NewCmdCreateService(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateService(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "service",
|
Use: "service",
|
||||||
Aliases: []string{"svc"},
|
Aliases: []string{"svc"},
|
||||||
@ -63,7 +63,7 @@ func addPortFlags(cmd *cobra.Command) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewCmdCreateServiceClusterIP is a command to create a clusterIP service
|
// NewCmdCreateServiceClusterIP is a command to create a clusterIP service
|
||||||
func NewCmdCreateServiceClusterIP(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateServiceClusterIP(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run]",
|
Use: "clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run]",
|
||||||
Short: "Create a clusterIP service.",
|
Short: "Create a clusterIP service.",
|
||||||
@ -84,7 +84,7 @@ func NewCmdCreateServiceClusterIP(f *cmdutil.Factory, cmdOut io.Writer) *cobra.C
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateServiceClusterIP implements the behavior to run the create service clusterIP command
|
// CreateServiceClusterIP implements the behavior to run the create service clusterIP command
|
||||||
func CreateServiceClusterIP(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateServiceClusterIP(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -119,7 +119,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateServiceNodePort is a macro command for creating a NodePort service
|
// NewCmdCreateServiceNodePort is a macro command for creating a NodePort service
|
||||||
func NewCmdCreateServiceNodePort(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateServiceNodePort(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "nodeport NAME [--tcp=port:targetPort] [--dry-run]",
|
Use: "nodeport NAME [--tcp=port:targetPort] [--dry-run]",
|
||||||
Short: "Create a NodePort service.",
|
Short: "Create a NodePort service.",
|
||||||
@ -140,7 +140,7 @@ func NewCmdCreateServiceNodePort(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Co
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateServiceNodePort is the implementation of the create service nodeport command
|
// CreateServiceNodePort is the implementation of the create service nodeport command
|
||||||
func CreateServiceNodePort(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateServiceNodePort(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -176,7 +176,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateServiceLoadBalancer is a macro command for creating a LoadBalancer service
|
// NewCmdCreateServiceLoadBalancer is a macro command for creating a LoadBalancer service
|
||||||
func NewCmdCreateServiceLoadBalancer(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateServiceLoadBalancer(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "loadbalancer NAME [--tcp=port:targetPort] [--dry-run]",
|
Use: "loadbalancer NAME [--tcp=port:targetPort] [--dry-run]",
|
||||||
Short: "Create a LoadBalancer service.",
|
Short: "Create a LoadBalancer service.",
|
||||||
@ -196,7 +196,7 @@ func NewCmdCreateServiceLoadBalancer(f *cmdutil.Factory, cmdOut io.Writer) *cobr
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateServiceLoadBalancer is the implementation of the service loadbalancer command
|
// CreateServiceLoadBalancer is the implementation of the service loadbalancer command
|
||||||
func CreateServiceLoadBalancer(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateServiceLoadBalancer(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -37,7 +37,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdCreateServiceAccount is a macro command to create a new service account
|
// NewCmdCreateServiceAccount is a macro command to create a new service account
|
||||||
func NewCmdCreateServiceAccount(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
func NewCmdCreateServiceAccount(f cmdutil.Factory, cmdOut io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "serviceaccount NAME [--dry-run]",
|
Use: "serviceaccount NAME [--dry-run]",
|
||||||
Aliases: []string{"sa"},
|
Aliases: []string{"sa"},
|
||||||
@ -58,7 +58,7 @@ func NewCmdCreateServiceAccount(f *cmdutil.Factory, cmdOut io.Writer) *cobra.Com
|
|||||||
}
|
}
|
||||||
|
|
||||||
// CreateServiceAccount implements the behavior to run the create service account command
|
// CreateServiceAccount implements the behavior to run the create service account command
|
||||||
func CreateServiceAccount(f *cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
func CreateServiceAccount(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
name, err := NameFromCommandArgs(cmd, args)
|
name, err := NameFromCommandArgs(cmd, args)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -66,7 +66,7 @@ var (
|
|||||||
kubectl delete pods --all`)
|
kubectl delete pods --all`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdDelete(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdDelete(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
// retrieve a list of handled resources from printer as valid args
|
// retrieve a list of handled resources from printer as valid args
|
||||||
@ -108,7 +108,7 @@ func NewCmdDelete(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunDelete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
func RunDelete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -158,7 +158,7 @@ func RunDelete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
|
|||||||
return DeleteResult(r, out, ignoreNotFound, shortOutput, mapper)
|
return DeleteResult(r, out, ignoreNotFound, shortOutput, mapper)
|
||||||
}
|
}
|
||||||
|
|
||||||
func ReapResult(r *resource.Result, f *cmdutil.Factory, out io.Writer, isDefaultDelete, ignoreNotFound bool, timeout time.Duration, gracePeriod int, shortOutput bool, mapper meta.RESTMapper, quiet bool) error {
|
func ReapResult(r *resource.Result, f cmdutil.Factory, out io.Writer, isDefaultDelete, ignoreNotFound bool, timeout time.Duration, gracePeriod int, shortOutput bool, mapper meta.RESTMapper, quiet bool) error {
|
||||||
found := 0
|
found := 0
|
||||||
if ignoreNotFound {
|
if ignoreNotFound {
|
||||||
r = r.IgnoreErrors(errors.IsNotFound)
|
r = r.IgnoreErrors(errors.IsNotFound)
|
||||||
|
@ -67,7 +67,7 @@ var (
|
|||||||
kubectl describe pods frontend`)
|
kubectl describe pods frontend`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdDescribe(f *cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
|
func NewCmdDescribe(f cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
describerSettings := &kubectl.DescriberSettings{}
|
describerSettings := &kubectl.DescriberSettings{}
|
||||||
|
|
||||||
@ -95,7 +95,7 @@ func NewCmdDescribe(f *cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunDescribe(f *cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions, describerSettings *kubectl.DescriberSettings) error {
|
func RunDescribe(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions, describerSettings *kubectl.DescriberSettings) error {
|
||||||
selector := cmdutil.GetFlagString(cmd, "selector")
|
selector := cmdutil.GetFlagString(cmd, "selector")
|
||||||
allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces")
|
allNamespaces := cmdutil.GetFlagBool(cmd, "all-namespaces")
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
@ -157,7 +157,7 @@ func RunDescribe(f *cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command,
|
|||||||
return utilerrors.NewAggregate(allErrs)
|
return utilerrors.NewAggregate(allErrs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func DescribeMatchingResources(mapper meta.RESTMapper, typer runtime.ObjectTyper, f *cmdutil.Factory, namespace, rsrc, prefix string, describerSettings *kubectl.DescriberSettings, out io.Writer, originalError error) error {
|
func DescribeMatchingResources(mapper meta.RESTMapper, typer runtime.ObjectTyper, f cmdutil.Factory, namespace, rsrc, prefix string, describerSettings *kubectl.DescriberSettings, out io.Writer, originalError error) error {
|
||||||
r := resource.NewBuilder(mapper, typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true)).
|
r := resource.NewBuilder(mapper, typer, resource.ClientMapperFunc(f.ClientForMapping), f.Decoder(true)).
|
||||||
NamespaceParam(namespace).DefaultNamespace().
|
NamespaceParam(namespace).DefaultNamespace().
|
||||||
ResourceTypeOrNameArgs(true, rsrc).
|
ResourceTypeOrNameArgs(true, rsrc).
|
||||||
|
@ -40,7 +40,7 @@ import (
|
|||||||
type DrainOptions struct {
|
type DrainOptions struct {
|
||||||
client *internalclientset.Clientset
|
client *internalclientset.Clientset
|
||||||
restClient *restclient.RESTClient
|
restClient *restclient.RESTClient
|
||||||
factory *cmdutil.Factory
|
factory cmdutil.Factory
|
||||||
Force bool
|
Force bool
|
||||||
GracePeriodSeconds int
|
GracePeriodSeconds int
|
||||||
IgnoreDaemonsets bool
|
IgnoreDaemonsets bool
|
||||||
@ -80,7 +80,7 @@ var (
|
|||||||
`)
|
`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdCordon(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdCordon(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &DrainOptions{factory: f, out: out}
|
options := &DrainOptions{factory: f, out: out}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -106,7 +106,7 @@ var (
|
|||||||
`)
|
`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdUncordon(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdUncordon(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &DrainOptions{factory: f, out: out}
|
options := &DrainOptions{factory: f, out: out}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -151,7 +151,7 @@ var (
|
|||||||
`)
|
`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdDrain(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdDrain(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &DrainOptions{factory: f, out: out}
|
options := &DrainOptions{factory: f, out: out}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
|
@ -69,7 +69,7 @@ func TestCordon(t *testing.T) {
|
|||||||
description string
|
description string
|
||||||
node *api.Node
|
node *api.Node
|
||||||
expected *api.Node
|
expected *api.Node
|
||||||
cmd func(*cmdutil.Factory, io.Writer) *cobra.Command
|
cmd func(cmdutil.Factory, io.Writer) *cobra.Command
|
||||||
arg string
|
arg string
|
||||||
expectFatal bool
|
expectFatal bool
|
||||||
}{
|
}{
|
||||||
@ -177,7 +177,10 @@ func TestCordon(t *testing.T) {
|
|||||||
// Restore cmdutil behavior
|
// Restore cmdutil behavior
|
||||||
cmdutil.DefaultBehaviorOnFatal()
|
cmdutil.DefaultBehaviorOnFatal()
|
||||||
}()
|
}()
|
||||||
cmdutil.BehaviorOnFatal(func(e string, code int) { saw_fatal = true; panic(e) })
|
cmdutil.BehaviorOnFatal(func(e string, code int) {
|
||||||
|
saw_fatal = true
|
||||||
|
panic(e)
|
||||||
|
})
|
||||||
cmd.SetArgs([]string{test.arg})
|
cmd.SetArgs([]string{test.arg})
|
||||||
cmd.Execute()
|
cmd.Execute()
|
||||||
}()
|
}()
|
||||||
|
@ -80,7 +80,7 @@ var (
|
|||||||
|
|
||||||
var errExit = fmt.Errorf("exit directly")
|
var errExit = fmt.Errorf("exit directly")
|
||||||
|
|
||||||
func NewCmdEdit(f *cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
func NewCmdEdit(f cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
// retrieve a list of handled resources from printer as valid args
|
// retrieve a list of handled resources from printer as valid args
|
||||||
@ -121,7 +121,7 @@ func NewCmdEdit(f *cmdutil.Factory, out, errOut io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunEdit(f *cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
func RunEdit(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
||||||
o, err := getPrinter(cmd)
|
o, err := getPrinter(cmd)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -321,7 +321,7 @@ func getPrinter(cmd *cobra.Command) (*editPrinterOptions, error) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func getMapperAndResult(f *cmdutil.Factory, args []string, options *resource.FilenameOptions) (meta.RESTMapper, *resource.Mapper, *resource.Result, string, error) {
|
func getMapperAndResult(f cmdutil.Factory, args []string, options *resource.FilenameOptions) (meta.RESTMapper, *resource.Mapper, *resource.Result, string, error) {
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, nil, "", err
|
return nil, nil, nil, "", err
|
||||||
@ -441,7 +441,7 @@ func visitToPatch(originalObj runtime.Object, updates *resource.Info, mapper met
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func visitAnnotation(cmd *cobra.Command, f *cmdutil.Factory, updates *resource.Info, resourceMapper *resource.Mapper, encoder runtime.Encoder) ([]runtime.Object, error) {
|
func visitAnnotation(cmd *cobra.Command, f cmdutil.Factory, updates *resource.Info, resourceMapper *resource.Mapper, encoder runtime.Encoder) ([]runtime.Object, error) {
|
||||||
mutatedObjects := []runtime.Object{}
|
mutatedObjects := []runtime.Object{}
|
||||||
annotationVisitor := resource.NewFlattenListVisitor(updates, resourceMapper)
|
annotationVisitor := resource.NewFlattenListVisitor(updates, resourceMapper)
|
||||||
// iterate through all items to apply annotations
|
// iterate through all items to apply annotations
|
||||||
|
@ -30,7 +30,6 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/restclient"
|
"k8s.io/kubernetes/pkg/client/restclient"
|
||||||
"k8s.io/kubernetes/pkg/client/unversioned/remotecommand"
|
"k8s.io/kubernetes/pkg/client/unversioned/remotecommand"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
|
||||||
remotecommandserver "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
|
remotecommandserver "k8s.io/kubernetes/pkg/kubelet/server/remotecommand"
|
||||||
"k8s.io/kubernetes/pkg/util/interrupt"
|
"k8s.io/kubernetes/pkg/util/interrupt"
|
||||||
"k8s.io/kubernetes/pkg/util/term"
|
"k8s.io/kubernetes/pkg/util/term"
|
||||||
@ -53,7 +52,7 @@ const (
|
|||||||
execUsageStr = "expected 'exec POD_NAME COMMAND [ARG1] [ARG2] ... [ARGN]'.\nPOD_NAME and COMMAND are required arguments for the exec command"
|
execUsageStr = "expected 'exec POD_NAME COMMAND [ARG1] [ARG2] ... [ARGN]'.\nPOD_NAME and COMMAND are required arguments for the exec command"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdExec(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.Command {
|
func NewCmdExec(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.Command {
|
||||||
options := &ExecOptions{
|
options := &ExecOptions{
|
||||||
StreamOptions: StreamOptions{
|
StreamOptions: StreamOptions{
|
||||||
In: cmdIn,
|
In: cmdIn,
|
||||||
@ -140,7 +139,7 @@ type ExecOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete verifies command line arguments and loads data from the command environment
|
// Complete verifies command line arguments and loads data from the command environment
|
||||||
func (p *ExecOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, argsIn []string, argsLenAtDash int) error {
|
func (p *ExecOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, argsIn []string, argsLenAtDash int) error {
|
||||||
// Let kubectl exec follow rules for `--`, see #13004 issue
|
// Let kubectl exec follow rules for `--`, see #13004 issue
|
||||||
if len(p.PodName) == 0 && (len(argsIn) == 0 || argsLenAtDash == 0) {
|
if len(p.PodName) == 0 && (len(argsIn) == 0 || argsLenAtDash == 0) {
|
||||||
return cmdutil.UsageError(cmd, execUsageStr)
|
return cmdutil.UsageError(cmd, execUsageStr)
|
||||||
@ -158,29 +157,6 @@ func (p *ExecOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, argsIn []
|
|||||||
return cmdutil.UsageError(cmd, execUsageStr)
|
return cmdutil.UsageError(cmd, execUsageStr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
namespace, _, err := f.DefaultNamespace()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
p.Namespace = namespace
|
|
||||||
|
|
||||||
clientMapper := resource.ClientMapperFunc(f.ClientForMapping)
|
|
||||||
mapper, typer := f.Object()
|
|
||||||
decoder := f.Decoder(true)
|
|
||||||
|
|
||||||
infos, err := resource.NewBuilder(mapper, typer, clientMapper, decoder).
|
|
||||||
NamespaceParam(p.Namespace).DefaultNamespace().
|
|
||||||
ResourceNames("pods", p.PodName).
|
|
||||||
SingleResourceType().
|
|
||||||
Do().Infos()
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if len(infos) != 1 {
|
|
||||||
return cmdutil.UsageError(cmd, execUsageStr)
|
|
||||||
}
|
|
||||||
|
|
||||||
p.PodName = infos[0].Name
|
|
||||||
|
|
||||||
cmdParent := cmd.Parent()
|
cmdParent := cmd.Parent()
|
||||||
if cmdParent != nil {
|
if cmdParent != nil {
|
||||||
@ -190,6 +166,12 @@ func (p *ExecOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, argsIn []
|
|||||||
p.SuggestedCmdUsage = fmt.Sprintf("Use '%s describe pod/%s' to see all of the containers in this pod.", p.FullCmdName, p.PodName)
|
p.SuggestedCmdUsage = fmt.Sprintf("Use '%s describe pod/%s' to see all of the containers in this pod.", p.FullCmdName, p.PodName)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
namespace, _, err := f.DefaultNamespace()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
p.Namespace = namespace
|
||||||
|
|
||||||
config, err := f.ClientConfig()
|
config, err := f.ClientConfig()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -55,7 +55,7 @@ func TestPodAndContainer(t *testing.T) {
|
|||||||
p *ExecOptions
|
p *ExecOptions
|
||||||
name string
|
name string
|
||||||
expectError bool
|
expectError bool
|
||||||
expectedPod *api.Pod
|
expectedPod string
|
||||||
expectedContainer string
|
expectedContainer string
|
||||||
expectedArgs []string
|
expectedArgs []string
|
||||||
}{
|
}{
|
||||||
@ -81,18 +81,10 @@ func TestPodAndContainer(t *testing.T) {
|
|||||||
p: &ExecOptions{StreamOptions: StreamOptions{PodName: "foo"}},
|
p: &ExecOptions{StreamOptions: StreamOptions{PodName: "foo"}},
|
||||||
args: []string{"cmd"},
|
args: []string{"cmd"},
|
||||||
argsLenAtDash: -1,
|
argsLenAtDash: -1,
|
||||||
expectedPod: execPod(),
|
expectedPod: "foo",
|
||||||
expectedArgs: []string{"cmd"},
|
expectedArgs: []string{"cmd"},
|
||||||
name: "pod in flags",
|
name: "pod in flags",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
p: &ExecOptions{StreamOptions: StreamOptions{PodName: "pod/foo"}},
|
|
||||||
args: []string{"cmd"},
|
|
||||||
argsLenAtDash: -1,
|
|
||||||
expectedPod: execPod(),
|
|
||||||
expectedArgs: []string{"cmd"},
|
|
||||||
name: "pod with 'pod/' prefix in flags",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
p: &ExecOptions{},
|
p: &ExecOptions{},
|
||||||
args: []string{"foo", "cmd"},
|
args: []string{"foo", "cmd"},
|
||||||
@ -111,23 +103,15 @@ func TestPodAndContainer(t *testing.T) {
|
|||||||
p: &ExecOptions{},
|
p: &ExecOptions{},
|
||||||
args: []string{"foo", "cmd"},
|
args: []string{"foo", "cmd"},
|
||||||
argsLenAtDash: -1,
|
argsLenAtDash: -1,
|
||||||
expectedPod: execPod(),
|
expectedPod: "foo",
|
||||||
expectedArgs: []string{"cmd"},
|
expectedArgs: []string{"cmd"},
|
||||||
name: "cmd, w/o flags",
|
name: "cmd, w/o flags",
|
||||||
},
|
},
|
||||||
{
|
|
||||||
p: &ExecOptions{},
|
|
||||||
args: []string{"pod/foo", "cmd"},
|
|
||||||
argsLenAtDash: -1,
|
|
||||||
expectedPod: execPod(),
|
|
||||||
expectedArgs: []string{"cmd"},
|
|
||||||
name: "pod with 'pod/' prefix, cmd, w/o flags",
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
p: &ExecOptions{},
|
p: &ExecOptions{},
|
||||||
args: []string{"foo", "cmd"},
|
args: []string{"foo", "cmd"},
|
||||||
argsLenAtDash: 1,
|
argsLenAtDash: 1,
|
||||||
expectedPod: execPod(),
|
expectedPod: "foo",
|
||||||
expectedArgs: []string{"cmd"},
|
expectedArgs: []string{"cmd"},
|
||||||
name: "cmd, cmd is behind dash",
|
name: "cmd, cmd is behind dash",
|
||||||
},
|
},
|
||||||
@ -135,27 +119,17 @@ func TestPodAndContainer(t *testing.T) {
|
|||||||
p: &ExecOptions{StreamOptions: StreamOptions{ContainerName: "bar"}},
|
p: &ExecOptions{StreamOptions: StreamOptions{ContainerName: "bar"}},
|
||||||
args: []string{"foo", "cmd"},
|
args: []string{"foo", "cmd"},
|
||||||
argsLenAtDash: -1,
|
argsLenAtDash: -1,
|
||||||
expectedPod: execPod(),
|
expectedPod: "foo",
|
||||||
expectedContainer: "bar",
|
expectedContainer: "bar",
|
||||||
expectedArgs: []string{"cmd"},
|
expectedArgs: []string{"cmd"},
|
||||||
name: "cmd, container in flag",
|
name: "cmd, container in flag",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
f, tf, codec, ns := NewAPIFactory()
|
f, tf, _, ns := NewAPIFactory()
|
||||||
tf.Client = &fake.RESTClient{
|
tf.Client = &fake.RESTClient{
|
||||||
NegotiatedSerializer: ns,
|
NegotiatedSerializer: ns,
|
||||||
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
|
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }),
|
||||||
switch m := req.Method; {
|
|
||||||
case m == "GET":
|
|
||||||
body := objBody(codec, test.expectedPod)
|
|
||||||
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: body}, nil
|
|
||||||
default:
|
|
||||||
//Ensures no GET is performed when deleting by name
|
|
||||||
t.Errorf("%s: unexpected request: %s %#v\n%#v", test.name, req.Method, req.URL, req)
|
|
||||||
return nil, fmt.Errorf("unexpected request")
|
|
||||||
}
|
|
||||||
}),
|
|
||||||
}
|
}
|
||||||
tf.Namespace = "test"
|
tf.Namespace = "test"
|
||||||
tf.ClientConfig = defaultClientConfig()
|
tf.ClientConfig = defaultClientConfig()
|
||||||
@ -172,8 +146,8 @@ func TestPodAndContainer(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if options.PodName != test.expectedPod.Name {
|
if options.PodName != test.expectedPod {
|
||||||
t.Errorf("expected: %s, got: %s (%s)", test.expectedPod.Name, options.PodName, test.name)
|
t.Errorf("expected: %s, got: %s (%s)", test.expectedPod, options.PodName, test.name)
|
||||||
}
|
}
|
||||||
if options.ContainerName != test.expectedContainer {
|
if options.ContainerName != test.expectedContainer {
|
||||||
t.Errorf("expected: %s, got: %s (%s)", test.expectedContainer, options.ContainerName, test.name)
|
t.Errorf("expected: %s, got: %s (%s)", test.expectedContainer, options.ContainerName, test.name)
|
||||||
@ -187,24 +161,22 @@ func TestPodAndContainer(t *testing.T) {
|
|||||||
func TestExec(t *testing.T) {
|
func TestExec(t *testing.T) {
|
||||||
version := registered.GroupOrDie(api.GroupName).GroupVersion.Version
|
version := registered.GroupOrDie(api.GroupName).GroupVersion.Version
|
||||||
tests := []struct {
|
tests := []struct {
|
||||||
name, shortPodPath, podPath, execPath, container string
|
name, podPath, execPath, container string
|
||||||
pod *api.Pod
|
pod *api.Pod
|
||||||
execErr bool
|
execErr bool
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
name: "pod exec",
|
name: "pod exec",
|
||||||
shortPodPath: "/namespaces/test/pods/foo",
|
podPath: "/api/" + version + "/namespaces/test/pods/foo",
|
||||||
podPath: "/api/" + version + "/namespaces/test/pods/foo",
|
execPath: "/api/" + version + "/namespaces/test/pods/foo/exec",
|
||||||
execPath: "/api/" + version + "/namespaces/test/pods/foo/exec",
|
pod: execPod(),
|
||||||
pod: execPod(),
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "pod exec error",
|
name: "pod exec error",
|
||||||
shortPodPath: "/namespaces/test/pods/foo",
|
podPath: "/api/" + version + "/namespaces/test/pods/foo",
|
||||||
podPath: "/api/" + version + "/namespaces/test/pods/foo",
|
execPath: "/api/" + version + "/namespaces/test/pods/foo/exec",
|
||||||
execPath: "/api/" + version + "/namespaces/test/pods/foo/exec",
|
pod: execPod(),
|
||||||
pod: execPod(),
|
execErr: true,
|
||||||
execErr: true,
|
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
@ -216,9 +188,6 @@ func TestExec(t *testing.T) {
|
|||||||
case p == test.podPath && m == "GET":
|
case p == test.podPath && m == "GET":
|
||||||
body := objBody(codec, test.pod)
|
body := objBody(codec, test.pod)
|
||||||
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: body}, nil
|
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: body}, nil
|
||||||
case p == test.shortPodPath && m == "GET":
|
|
||||||
body := objBody(codec, test.pod)
|
|
||||||
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: body}, nil
|
|
||||||
default:
|
default:
|
||||||
// Ensures no GET is performed when deleting by name
|
// Ensures no GET is performed when deleting by name
|
||||||
t.Errorf("%s: unexpected request: %s %#v\n%#v", test.name, req.Method, req.URL, req)
|
t.Errorf("%s: unexpected request: %s %#v\n%#v", test.name, req.Method, req.URL, req)
|
||||||
|
@ -44,7 +44,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdExplain returns a cobra command for swagger docs
|
// NewCmdExplain returns a cobra command for swagger docs
|
||||||
func NewCmdExplain(f *cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
|
func NewCmdExplain(f cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "explain RESOURCE",
|
Use: "explain RESOURCE",
|
||||||
Short: "Documentation of resources",
|
Short: "Documentation of resources",
|
||||||
@ -61,7 +61,7 @@ func NewCmdExplain(f *cmdutil.Factory, out, cmdErr io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunExplain executes the appropriate steps to print a model's documentation
|
// RunExplain executes the appropriate steps to print a model's documentation
|
||||||
func RunExplain(f *cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, args []string) error {
|
func RunExplain(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
if len(args) == 0 {
|
if len(args) == 0 {
|
||||||
fmt.Fprint(cmdErr, "You must specify the type of resource to explain. ", valid_resources)
|
fmt.Fprint(cmdErr, "You must specify the type of resource to explain. ", valid_resources)
|
||||||
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
||||||
|
@ -73,7 +73,7 @@ var (
|
|||||||
kubectl expose deployment nginx --port=80 --target-port=8000`)
|
kubectl expose deployment nginx --port=80 --target-port=8000`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdExposeService(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdExposeService(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
validArgs, argAliases := []string{}, []string{}
|
validArgs, argAliases := []string{}, []string{}
|
||||||
@ -123,7 +123,7 @@ func NewCmdExposeService(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunExpose(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
||||||
namespace, enforceNamespace, err := f.DefaultNamespace()
|
namespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -81,7 +81,7 @@ var (
|
|||||||
|
|
||||||
// NewCmdGet creates a command object for the generic "get" action, which
|
// NewCmdGet creates a command object for the generic "get" action, which
|
||||||
// retrieves one or more resources from a server.
|
// retrieves one or more resources from a server.
|
||||||
func NewCmdGet(f *cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Command {
|
func NewCmdGet(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Command {
|
||||||
options := &GetOptions{}
|
options := &GetOptions{}
|
||||||
|
|
||||||
// retrieve a list of handled resources from printer as valid args
|
// retrieve a list of handled resources from printer as valid args
|
||||||
@ -125,7 +125,7 @@ func NewCmdGet(f *cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Comma
|
|||||||
|
|
||||||
// RunGet implements the generic Get command
|
// RunGet implements the generic Get command
|
||||||
// TODO: convert all direct flag accessors to a struct and pass that instead of cmd
|
// TODO: convert all direct flag accessors to a struct and pass that instead of cmd
|
||||||
func RunGet(f *cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args []string, options *GetOptions) error {
|
func RunGet(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Command, args []string, options *GetOptions) error {
|
||||||
if len(options.Raw) > 0 {
|
if len(options.Raw) > 0 {
|
||||||
restClient, err := f.RESTClient()
|
restClient, err := f.RESTClient()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -28,7 +28,7 @@ import (
|
|||||||
const help_long = `Help provides help for any command in the application.
|
const help_long = `Help provides help for any command in the application.
|
||||||
Simply type kubectl help [path to command] for full details.`
|
Simply type kubectl help [path to command] for full details.`
|
||||||
|
|
||||||
func NewCmdHelp(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdHelp(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "help [command] | STRING_TO_SEARCH",
|
Use: "help [command] | STRING_TO_SEARCH",
|
||||||
Short: "Help about any command",
|
Short: "Help about any command",
|
||||||
|
@ -88,7 +88,7 @@ var (
|
|||||||
kubectl label pods foo bar-`)
|
kubectl label pods foo bar-`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdLabel(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdLabel(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &LabelOptions{}
|
options := &LabelOptions{}
|
||||||
|
|
||||||
// retrieve a list of handled resources from printer as valid args
|
// retrieve a list of handled resources from printer as valid args
|
||||||
@ -135,7 +135,7 @@ func NewCmdLabel(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete adapts from the command line args and factory to the data required.
|
// Complete adapts from the command line args and factory to the data required.
|
||||||
func (o *LabelOptions) Complete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
func (o *LabelOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
||||||
o.out = out
|
o.out = out
|
||||||
o.local = cmdutil.GetFlagBool(cmd, "local")
|
o.local = cmdutil.GetFlagBool(cmd, "local")
|
||||||
o.overwrite = cmdutil.GetFlagBool(cmd, "overwrite")
|
o.overwrite = cmdutil.GetFlagBool(cmd, "overwrite")
|
||||||
@ -166,7 +166,7 @@ func (o *LabelOptions) Validate() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunLabel does the work
|
// RunLabel does the work
|
||||||
func (o *LabelOptions) RunLabel(f *cmdutil.Factory, cmd *cobra.Command) error {
|
func (o *LabelOptions) RunLabel(f cmdutil.Factory, cmd *cobra.Command) error {
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -74,7 +74,7 @@ type LogsOptions struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewCmdLog creates a new pod logs command
|
// NewCmdLog creates a new pod logs command
|
||||||
func NewCmdLogs(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdLogs(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
o := &LogsOptions{}
|
o := &LogsOptions{}
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "logs [-f] [-p] POD [-c CONTAINER]",
|
Use: "logs [-f] [-p] POD [-c CONTAINER]",
|
||||||
@ -111,7 +111,7 @@ func NewCmdLogs(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *LogsOptions) Complete(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) error {
|
func (o *LogsOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) error {
|
||||||
containerName := cmdutil.GetFlagString(cmd, "container")
|
containerName := cmdutil.GetFlagString(cmd, "container")
|
||||||
switch len(args) {
|
switch len(args) {
|
||||||
case 0:
|
case 0:
|
||||||
|
@ -69,7 +69,7 @@ var (
|
|||||||
kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'`)
|
kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdPatch(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdPatch(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &PatchOptions{}
|
options := &PatchOptions{}
|
||||||
|
|
||||||
// retrieve a list of handled resources from printer as valid args
|
// retrieve a list of handled resources from printer as valid args
|
||||||
@ -111,7 +111,7 @@ func NewCmdPatch(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunPatch(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *PatchOptions) error {
|
func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *PatchOptions) error {
|
||||||
switch {
|
switch {
|
||||||
case options.Local && len(args) != 0:
|
case options.Local && len(args) != 0:
|
||||||
return fmt.Errorf("cannot specify --local and server resources")
|
return fmt.Errorf("cannot specify --local and server resources")
|
||||||
|
@ -62,7 +62,7 @@ var (
|
|||||||
kubectl port-forward mypod 0:5000`)
|
kubectl port-forward mypod 0:5000`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdPortForward(f *cmdutil.Factory, cmdOut, cmdErr io.Writer) *cobra.Command {
|
func NewCmdPortForward(f cmdutil.Factory, cmdOut, cmdErr io.Writer) *cobra.Command {
|
||||||
opts := &PortForwardOptions{
|
opts := &PortForwardOptions{
|
||||||
PortForwarder: &defaultPortForwarder{
|
PortForwarder: &defaultPortForwarder{
|
||||||
cmdOut: cmdOut,
|
cmdOut: cmdOut,
|
||||||
@ -112,7 +112,7 @@ func (f *defaultPortForwarder) ForwardPorts(method string, url *url.URL, opts Po
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete completes all the required options for port-forward cmd.
|
// Complete completes all the required options for port-forward cmd.
|
||||||
func (o *PortForwardOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args []string, cmdOut io.Writer, cmdErr io.Writer) error {
|
func (o *PortForwardOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string, cmdOut io.Writer, cmdErr io.Writer) error {
|
||||||
var err error
|
var err error
|
||||||
o.PodName = cmdutil.GetFlagString(cmd, "pod")
|
o.PodName = cmdutil.GetFlagString(cmd, "pod")
|
||||||
if len(o.PodName) == 0 && len(args) == 0 {
|
if len(o.PodName) == 0 && len(args) == 0 {
|
||||||
|
@ -45,7 +45,7 @@ var (
|
|||||||
kubectl proxy --api-prefix=/k8s-api`)
|
kubectl proxy --api-prefix=/k8s-api`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdProxy(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdProxy(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix]",
|
Use: "proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix]",
|
||||||
Short: "Run a proxy to the Kubernetes API server",
|
Short: "Run a proxy to the Kubernetes API server",
|
||||||
@ -86,7 +86,7 @@ func NewCmdProxy(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunProxy(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command) error {
|
func RunProxy(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error {
|
||||||
path := cmdutil.GetFlagString(cmd, "unix-socket")
|
path := cmdutil.GetFlagString(cmd, "unix-socket")
|
||||||
port := cmdutil.GetFlagInt(cmd, "port")
|
port := cmdutil.GetFlagInt(cmd, "port")
|
||||||
address := cmdutil.GetFlagString(cmd, "address")
|
address := cmdutil.GetFlagString(cmd, "address")
|
||||||
|
@ -58,7 +58,7 @@ var (
|
|||||||
kubectl replace --force -f ./pod.json`)
|
kubectl replace --force -f ./pod.json`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdReplace(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdReplace(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -90,7 +90,7 @@ func NewCmdReplace(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunReplace(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "update" {
|
if len(os.Args) > 1 && os.Args[1] == "update" {
|
||||||
printDeprecationWarning("replace", "update")
|
printDeprecationWarning("replace", "update")
|
||||||
}
|
}
|
||||||
@ -163,7 +163,7 @@ func RunReplace(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []st
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func forceReplace(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error {
|
func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error {
|
||||||
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagString(cmd, "schema-cache-dir"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -74,7 +74,7 @@ var (
|
|||||||
pollInterval, _ = time.ParseDuration("3s")
|
pollInterval, _ = time.ParseDuration("3s")
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRollingUpdate(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRollingUpdate(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -141,7 +141,7 @@ func validateArguments(cmd *cobra.Command, filenames, args []string) error {
|
|||||||
return utilerrors.NewAggregate(errors)
|
return utilerrors.NewAggregate(errors)
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunRollingUpdate(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "rollingupdate" {
|
if len(os.Args) > 1 && os.Args[1] == "rollingupdate" {
|
||||||
printDeprecationWarning("rolling-update", "rollingupdate")
|
printDeprecationWarning("rolling-update", "rollingupdate")
|
||||||
}
|
}
|
||||||
|
@ -36,7 +36,7 @@ var (
|
|||||||
`)
|
`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRollout(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRollout(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "rollout SUBCOMMAND",
|
Use: "rollout SUBCOMMAND",
|
||||||
|
@ -39,7 +39,7 @@ var (
|
|||||||
kubectl rollout history deployment/abc --revision=3`)
|
kubectl rollout history deployment/abc --revision=3`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRolloutHistory(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRolloutHistory(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
validArgs := []string{"deployment"}
|
validArgs := []string{"deployment"}
|
||||||
@ -63,7 +63,7 @@ func NewCmdRolloutHistory(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunHistory(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string, options *resource.FilenameOptions) error {
|
func RunHistory(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string, options *resource.FilenameOptions) error {
|
||||||
if len(args) == 0 && cmdutil.IsFilenameEmpty(options.Filenames) {
|
if len(args) == 0 && cmdutil.IsFilenameEmpty(options.Filenames) {
|
||||||
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
||||||
}
|
}
|
||||||
|
@ -58,7 +58,7 @@ var (
|
|||||||
kubectl rollout pause deployment/nginx`)
|
kubectl rollout pause deployment/nginx`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRolloutPause(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRolloutPause(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &PauseConfig{}
|
options := &PauseConfig{}
|
||||||
|
|
||||||
validArgs := []string{"deployment"}
|
validArgs := []string{"deployment"}
|
||||||
@ -90,7 +90,7 @@ func NewCmdRolloutPause(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *PauseConfig) CompletePause(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string) error {
|
func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string) error {
|
||||||
if len(args) == 0 && cmdutil.IsFilenameEmpty(o.Filenames) {
|
if len(args) == 0 && cmdutil.IsFilenameEmpty(o.Filenames) {
|
||||||
return cmdutil.UsageError(cmd, cmd.Use)
|
return cmdutil.UsageError(cmd, cmd.Use)
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ var (
|
|||||||
kubectl rollout resume deployment/nginx`)
|
kubectl rollout resume deployment/nginx`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRolloutResume(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRolloutResume(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &ResumeConfig{}
|
options := &ResumeConfig{}
|
||||||
|
|
||||||
validArgs := []string{"deployment"}
|
validArgs := []string{"deployment"}
|
||||||
@ -88,7 +88,7 @@ func NewCmdRolloutResume(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *ResumeConfig) CompleteResume(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string) error {
|
func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string) error {
|
||||||
if len(args) == 0 && cmdutil.IsFilenameEmpty(o.Filenames) {
|
if len(args) == 0 && cmdutil.IsFilenameEmpty(o.Filenames) {
|
||||||
return cmdutil.UsageError(cmd, cmd.Use)
|
return cmdutil.UsageError(cmd, cmd.Use)
|
||||||
}
|
}
|
||||||
|
@ -45,7 +45,7 @@ var (
|
|||||||
kubectl rollout status deployment/nginx`)
|
kubectl rollout status deployment/nginx`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRolloutStatus(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRolloutStatus(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
validArgs := []string{"deployment"}
|
validArgs := []string{"deployment"}
|
||||||
@ -70,7 +70,7 @@ func NewCmdRolloutStatus(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunStatus(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string, options *resource.FilenameOptions) error {
|
func RunStatus(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string, options *resource.FilenameOptions) error {
|
||||||
if len(args) == 0 && cmdutil.IsFilenameEmpty(options.Filenames) {
|
if len(args) == 0 && cmdutil.IsFilenameEmpty(options.Filenames) {
|
||||||
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
||||||
}
|
}
|
||||||
|
@ -59,7 +59,7 @@ var (
|
|||||||
kubectl rollout undo --dry-run=true deployment/abc`)
|
kubectl rollout undo --dry-run=true deployment/abc`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRolloutUndo(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdRolloutUndo(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &UndoOptions{}
|
options := &UndoOptions{}
|
||||||
|
|
||||||
validArgs := []string{"deployment"}
|
validArgs := []string{"deployment"}
|
||||||
@ -93,7 +93,7 @@ func NewCmdRolloutUndo(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *UndoOptions) CompleteUndo(f *cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string) error {
|
func (o *UndoOptions) CompleteUndo(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, args []string) error {
|
||||||
if len(args) == 0 && cmdutil.IsFilenameEmpty(o.Filenames) {
|
if len(args) == 0 && cmdutil.IsFilenameEmpty(o.Filenames) {
|
||||||
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
return cmdutil.UsageError(cmd, "Required resource not specified.")
|
||||||
}
|
}
|
||||||
|
@ -83,7 +83,7 @@ var (
|
|||||||
kubectl run pi --schedule="0/5 * * * ?" --image=perl --restart=OnFailure -- perl -Mbignum=bpi -wle 'print bpi(2000)'`)
|
kubectl run pi --schedule="0/5 * * * ?" --image=perl --restart=OnFailure -- perl -Mbignum=bpi -wle 'print bpi(2000)'`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdRun(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.Command {
|
func NewCmdRun(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "run NAME --image=image [--env=\"key=value\"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]",
|
Use: "run NAME --image=image [--env=\"key=value\"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...]",
|
||||||
// run-container is deprecated
|
// run-container is deprecated
|
||||||
@ -133,7 +133,7 @@ func addRunFlags(cmd *cobra.Command) {
|
|||||||
cmd.Flags().String("schedule", "", "A schedule in the Cron format the job should be run with.")
|
cmd.Flags().String("schedule", "", "A schedule in the Cron format the job should be run with.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func Run(f *cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cobra.Command, args []string, argsLenAtDash int) error {
|
func Run(f cmdutil.Factory, cmdIn io.Reader, cmdOut, cmdErr io.Writer, cmd *cobra.Command, args []string, argsLenAtDash int) error {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "run-container" {
|
if len(os.Args) > 1 && os.Args[1] == "run-container" {
|
||||||
printDeprecationWarning("run", "run-container")
|
printDeprecationWarning("run", "run-container")
|
||||||
}
|
}
|
||||||
@ -456,7 +456,7 @@ func waitForPodTerminated(podClient coreclient.PodsGetter, ns, name string, out
|
|||||||
return pod, err
|
return pod, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleAttachPod(f *cmdutil.Factory, podClient coreclient.PodsGetter, ns, name string, opts *AttachOptions, quiet bool) error {
|
func handleAttachPod(f cmdutil.Factory, podClient coreclient.PodsGetter, ns, name string, opts *AttachOptions, quiet bool) error {
|
||||||
pod, err := waitForPodRunning(podClient, ns, name, opts.Out, quiet)
|
pod, err := waitForPodRunning(podClient, ns, name, opts.Out, quiet)
|
||||||
if err != nil && err != conditions.ErrPodCompleted {
|
if err != nil && err != conditions.ErrPodCompleted {
|
||||||
return err
|
return err
|
||||||
@ -535,7 +535,7 @@ func verifyImagePullPolicy(cmd *cobra.Command) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func generateService(f *cmdutil.Factory, cmd *cobra.Command, args []string, serviceGenerator string, paramsIn map[string]interface{}, namespace string, out io.Writer) error {
|
func generateService(f cmdutil.Factory, cmd *cobra.Command, args []string, serviceGenerator string, paramsIn map[string]interface{}, namespace string, out io.Writer) error {
|
||||||
generators := f.Generators("expose")
|
generators := f.Generators("expose")
|
||||||
generator, found := generators[serviceGenerator]
|
generator, found := generators[serviceGenerator]
|
||||||
if !found {
|
if !found {
|
||||||
@ -583,7 +583,7 @@ func generateService(f *cmdutil.Factory, cmd *cobra.Command, args []string, serv
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func createGeneratedObject(f *cmdutil.Factory, cmd *cobra.Command, generator kubectl.Generator, names []kubectl.GeneratorParam, params map[string]interface{}, overrides, namespace string) (runtime.Object, string, meta.RESTMapper, *meta.RESTMapping, error) {
|
func createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator kubectl.Generator, names []kubectl.GeneratorParam, params map[string]interface{}, overrides, namespace string) (runtime.Object, string, meta.RESTMapper, *meta.RESTMapping, error) {
|
||||||
err := kubectl.ValidateParams(names, params)
|
err := kubectl.ValidateParams(names, params)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, "", nil, nil, err
|
return nil, "", nil, nil, err
|
||||||
|
@ -56,7 +56,7 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
// NewCmdScale returns a cobra command with the appropriate configuration and flags to run scale
|
// 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 io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
validArgs := []string{"deployment", "replicaset", "replicationcontroller", "job"}
|
validArgs := []string{"deployment", "replicaset", "replicationcontroller", "job"}
|
||||||
@ -93,7 +93,7 @@ func NewCmdScale(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// RunScale executes the scaling
|
// 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 io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error {
|
||||||
if len(os.Args) > 1 && os.Args[1] == "resize" {
|
if len(os.Args) > 1 && os.Args[1] == "resize" {
|
||||||
printDeprecationWarning("scale", "resize")
|
printDeprecationWarning("scale", "resize")
|
||||||
}
|
}
|
||||||
|
@ -32,7 +32,7 @@ var (
|
|||||||
set_example = dedent.Dedent(``)
|
set_example = dedent.Dedent(``)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdSet(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdSet(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "set SUBCOMMAND",
|
Use: "set SUBCOMMAND",
|
||||||
|
@ -78,7 +78,7 @@ var (
|
|||||||
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml`)
|
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdImage(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdImage(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &ImageOptions{
|
options := &ImageOptions{
|
||||||
Out: out,
|
Out: out,
|
||||||
}
|
}
|
||||||
@ -105,7 +105,7 @@ func NewCmdImage(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *ImageOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args []string) error {
|
func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
|
||||||
o.Mapper, o.Typer = f.Object()
|
o.Mapper, o.Typer = f.Object()
|
||||||
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
|
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
|
||||||
o.Encoder = f.JSONEncoder()
|
o.Encoder = f.JSONEncoder()
|
||||||
|
@ -49,7 +49,7 @@ var (
|
|||||||
kubectl stop -f path/to/resources`)
|
kubectl stop -f path/to/resources`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdStop(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdStop(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &resource.FilenameOptions{}
|
options := &resource.FilenameOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -75,7 +75,7 @@ func NewCmdStop(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunStop(f *cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer, options *resource.FilenameOptions) error {
|
func RunStop(f cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer, options *resource.FilenameOptions) error {
|
||||||
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
cmdNamespace, enforceNamespace, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -47,7 +47,7 @@ type TaintOptions struct {
|
|||||||
selector string
|
selector string
|
||||||
overwrite bool
|
overwrite bool
|
||||||
all bool
|
all bool
|
||||||
f *cmdutil.Factory
|
f cmdutil.Factory
|
||||||
out io.Writer
|
out io.Writer
|
||||||
cmd *cobra.Command
|
cmd *cobra.Command
|
||||||
}
|
}
|
||||||
@ -73,7 +73,7 @@ var (
|
|||||||
kubectl taint nodes foo dedicated-`)
|
kubectl taint nodes foo dedicated-`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdTaint(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdTaint(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &TaintOptions{}
|
options := &TaintOptions{}
|
||||||
|
|
||||||
validArgs := []string{"node"}
|
validArgs := []string{"node"}
|
||||||
@ -220,7 +220,7 @@ func parseTaints(spec []string) ([]api.Taint, []api.Taint, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Complete adapts from the command line args and factory to the data required.
|
// 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) {
|
func (o *TaintOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string) (err error) {
|
||||||
namespace, _, err := f.DefaultNamespace()
|
namespace, _, err := f.DefaultNamespace()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
|
@ -35,7 +35,7 @@ var (
|
|||||||
The top command allows you to see the resource consumption for nodes or pods.`)
|
The top command allows you to see the resource consumption for nodes or pods.`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdTop(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdTop(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &TopOptions{}
|
options := &TopOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -55,6 +55,6 @@ func NewCmdTop(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o TopOptions) RunTop(f *cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
func (o TopOptions) RunTop(f cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
||||||
return cmd.Help()
|
return cmd.Help()
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ var (
|
|||||||
kubectl top node NODE_NAME`)
|
kubectl top node NODE_NAME`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdTopNode(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdTopNode(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &TopNodeOptions{}
|
options := &TopNodeOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -78,7 +78,7 @@ func NewCmdTopNode(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *TopNodeOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
func (o *TopNodeOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
||||||
var err error
|
var err error
|
||||||
if len(args) == 1 {
|
if len(args) == 1 {
|
||||||
o.ResourceName = args[0]
|
o.ResourceName = args[0]
|
||||||
|
@ -69,7 +69,7 @@ var (
|
|||||||
kubectl top pod -l name=myLabel`)
|
kubectl top pod -l name=myLabel`)
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdTopPod(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdTopPod(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
options := &TopPodOptions{}
|
options := &TopPodOptions{}
|
||||||
|
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
@ -96,7 +96,7 @@ func NewCmdTopPod(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o *TopPodOptions) Complete(f *cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
func (o *TopPodOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string, out io.Writer) error {
|
||||||
var err error
|
var err error
|
||||||
if len(args) == 1 {
|
if len(args) == 1 {
|
||||||
o.ResourceName = args[0]
|
o.ResourceName = args[0]
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -55,7 +55,7 @@ import (
|
|||||||
func TestNewFactoryDefaultFlagBindings(t *testing.T) {
|
func TestNewFactoryDefaultFlagBindings(t *testing.T) {
|
||||||
factory := NewFactory(nil)
|
factory := NewFactory(nil)
|
||||||
|
|
||||||
if !factory.flags.HasFlags() {
|
if !factory.FlagSet().HasFlags() {
|
||||||
t.Errorf("Expected flags, but didn't get any")
|
t.Errorf("Expected flags, but didn't get any")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -64,8 +64,8 @@ func TestNewFactoryNoFlagBindings(t *testing.T) {
|
|||||||
clientConfig := clientcmd.NewDefaultClientConfig(*clientcmdapi.NewConfig(), &clientcmd.ConfigOverrides{})
|
clientConfig := clientcmd.NewDefaultClientConfig(*clientcmdapi.NewConfig(), &clientcmd.ConfigOverrides{})
|
||||||
factory := NewFactory(clientConfig)
|
factory := NewFactory(clientConfig)
|
||||||
|
|
||||||
if factory.flags.HasFlags() {
|
if factory.FlagSet().HasFlags() {
|
||||||
t.Errorf("Expected zero flags, but got %v", factory.flags)
|
t.Errorf("Expected zero flags, but got %v", factory.FlagSet())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -229,12 +229,12 @@ func TestCanBeExposed(t *testing.T) {
|
|||||||
func TestFlagUnderscoreRenaming(t *testing.T) {
|
func TestFlagUnderscoreRenaming(t *testing.T) {
|
||||||
factory := NewFactory(nil)
|
factory := NewFactory(nil)
|
||||||
|
|
||||||
factory.flags.SetNormalizeFunc(flag.WordSepNormalizeFunc)
|
factory.FlagSet().SetNormalizeFunc(flag.WordSepNormalizeFunc)
|
||||||
factory.flags.Bool("valid_flag", false, "bool value")
|
factory.FlagSet().Bool("valid_flag", false, "bool value")
|
||||||
|
|
||||||
// In case of failure of this test check this PR: spf13/pflag#23
|
// In case of failure of this test check this PR: spf13/pflag#23
|
||||||
if factory.flags.Lookup("valid_flag").Name != "valid-flag" {
|
if factory.FlagSet().Lookup("valid_flag").Name != "valid-flag" {
|
||||||
t.Fatalf("Expected flag name to be valid-flag, got %s", factory.flags.Lookup("valid_flag").Name)
|
t.Fatalf("Expected flag name to be valid-flag, got %s", factory.FlagSet().Lookup("valid_flag").Name)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewCmdVersion(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
func NewCmdVersion(f cmdutil.Factory, out io.Writer) *cobra.Command {
|
||||||
cmd := &cobra.Command{
|
cmd := &cobra.Command{
|
||||||
Use: "version",
|
Use: "version",
|
||||||
Short: "Print the client and server version information",
|
Short: "Print the client and server version information",
|
||||||
@ -40,7 +40,7 @@ func NewCmdVersion(f *cmdutil.Factory, out io.Writer) *cobra.Command {
|
|||||||
return cmd
|
return cmd
|
||||||
}
|
}
|
||||||
|
|
||||||
func RunVersion(f *cmdutil.Factory, out io.Writer, cmd *cobra.Command) error {
|
func RunVersion(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) error {
|
||||||
kubectl.GetClientVersion(out)
|
kubectl.GetClientVersion(out)
|
||||||
if cmdutil.GetFlagBool(cmd, "client") {
|
if cmdutil.GetFlagBool(cmd, "client") {
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
Reference in New Issue
Block a user