fix cluster-info dump error

pull/8/head
Chao Wang 2018-08-02 12:14:44 +08:00 committed by chao wang
parent db9545e69e
commit 6ca446c5a0
2 changed files with 41 additions and 20 deletions

View File

@ -122,6 +122,7 @@ go_library(
"//staging/src/k8s.io/client-go/dynamic:go_default_library", "//staging/src/k8s.io/client-go/dynamic:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes:go_default_library", "//staging/src/k8s.io/client-go/kubernetes:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/scheme:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/apps/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/autoscaling/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/batch/v1:go_default_library",
"//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library", "//staging/src/k8s.io/client-go/kubernetes/typed/core/v1:go_default_library",

View File

@ -27,7 +27,8 @@ import (
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes" appsv1client "k8s.io/client-go/kubernetes/typed/apps/v1"
corev1client "k8s.io/client-go/kubernetes/typed/core/v1"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
@ -47,7 +48,8 @@ type ClusterInfoDumpOptions struct {
Namespaces []string Namespaces []string
Timeout time.Duration Timeout time.Duration
Clientset kubernetes.Interface AppsClient appsv1client.AppsV1Interface
CoreClient corev1client.CoreV1Interface
Namespace string Namespace string
RESTClientGetter genericclioptions.RESTClientGetter RESTClientGetter genericclioptions.RESTClientGetter
LogsForObject polymorphichelpers.LogsForObjectFunc LogsForObject polymorphichelpers.LogsForObjectFunc
@ -58,7 +60,7 @@ type ClusterInfoDumpOptions struct {
// NewCmdCreateSecret groups subcommands to create various types of secrets // NewCmdCreateSecret groups subcommands to create various types of secrets
func NewCmdClusterInfoDump(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command { func NewCmdClusterInfoDump(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobra.Command {
o := &ClusterInfoDumpOptions{ o := &ClusterInfoDumpOptions{
PrintFlags: genericclioptions.NewPrintFlags("").WithTypeSetter(scheme.Scheme), PrintFlags: genericclioptions.NewPrintFlags("").WithTypeSetter(scheme.Scheme).WithDefaultOutput("json"),
IOStreams: ioStreams, IOStreams: ioStreams,
} }
@ -73,6 +75,9 @@ func NewCmdClusterInfoDump(f cmdutil.Factory, ioStreams genericclioptions.IOStre
cmdutil.CheckErr(o.Run()) cmdutil.CheckErr(o.Run())
}, },
} }
o.PrintFlags.AddFlags(cmd)
cmd.Flags().StringVar(&o.OutputDir, "output-directory", o.OutputDir, i18n.T("Where to output the files. If empty or '-' uses stdout, otherwise creates a directory hierarchy in that directory")) cmd.Flags().StringVar(&o.OutputDir, "output-directory", o.OutputDir, i18n.T("Where to output the files. If empty or '-' uses stdout, otherwise creates a directory hierarchy in that directory"))
cmd.Flags().StringSliceVar(&o.Namespaces, "namespaces", o.Namespaces, "A comma separated list of namespaces to dump.") cmd.Flags().StringSliceVar(&o.Namespaces, "namespaces", o.Namespaces, "A comma separated list of namespaces to dump.")
cmd.Flags().BoolVar(&o.AllNamespaces, "all-namespaces", o.AllNamespaces, "If true, dump all namespaces. If true, --namespaces is ignored.") cmd.Flags().BoolVar(&o.AllNamespaces, "all-namespaces", o.AllNamespaces, "If true, dump all namespaces. If true, --namespaces is ignored.")
@ -123,18 +128,28 @@ func (o *ClusterInfoDumpOptions) Complete(f cmdutil.Factory, cmd *cobra.Command)
return err return err
} }
jsonOutputFmt := "json"
o.PrintFlags.OutputFormat = &jsonOutputFmt
o.PrintObj = printer.PrintObj o.PrintObj = printer.PrintObj
config, err := f.ToRESTConfig()
if err != nil {
return err
}
o.CoreClient, err = corev1client.NewForConfig(config)
if err != nil {
return err
}
o.AppsClient, err = appsv1client.NewForConfig(config)
if err != nil {
return err
}
o.Timeout, err = cmdutil.GetPodRunningTimeoutFlag(cmd) o.Timeout, err = cmdutil.GetPodRunningTimeoutFlag(cmd)
if err != nil { if err != nil {
return err return err
} }
o.Clientset, err = f.KubernetesClientSet()
if err != nil {
return err
}
o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace() o.Namespace, _, err = f.ToRawKubeConfigLoader().Namespace()
if err != nil { if err != nil {
return err return err
@ -147,7 +162,7 @@ func (o *ClusterInfoDumpOptions) Complete(f cmdutil.Factory, cmd *cobra.Command)
} }
func (o *ClusterInfoDumpOptions) Run() error { func (o *ClusterInfoDumpOptions) Run() error {
nodes, err := o.Clientset.Core().Nodes().List(metav1.ListOptions{}) nodes, err := o.CoreClient.Nodes().List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -158,7 +173,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
var namespaces []string var namespaces []string
if o.AllNamespaces { if o.AllNamespaces {
namespaceList, err := o.Clientset.Core().Namespaces().List(metav1.ListOptions{}) namespaceList, err := o.CoreClient.Namespaces().List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -176,7 +191,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
for _, namespace := range namespaces { for _, namespace := range namespaces {
// TODO: this is repetitive in the extreme. Use reflection or // TODO: this is repetitive in the extreme. Use reflection or
// something to make this a for loop. // something to make this a for loop.
events, err := o.Clientset.Core().Events(namespace).List(metav1.ListOptions{}) events, err := o.CoreClient.Events(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -184,7 +199,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
return err return err
} }
rcs, err := o.Clientset.Core().ReplicationControllers(namespace).List(metav1.ListOptions{}) rcs, err := o.CoreClient.ReplicationControllers(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -192,7 +207,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
return err return err
} }
svcs, err := o.Clientset.Core().Services(namespace).List(metav1.ListOptions{}) svcs, err := o.CoreClient.Services(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -200,7 +215,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
return err return err
} }
sets, err := o.Clientset.Extensions().DaemonSets(namespace).List(metav1.ListOptions{}) sets, err := o.AppsClient.DaemonSets(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -208,7 +223,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
return err return err
} }
deps, err := o.Clientset.Extensions().Deployments(namespace).List(metav1.ListOptions{}) deps, err := o.AppsClient.Deployments(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -216,7 +231,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
return err return err
} }
rps, err := o.Clientset.Extensions().ReplicaSets(namespace).List(metav1.ListOptions{}) rps, err := o.AppsClient.ReplicaSets(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -224,7 +239,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
return err return err
} }
pods, err := o.Clientset.Core().Pods(namespace).List(metav1.ListOptions{}) pods, err := o.CoreClient.Pods(namespace).List(metav1.ListOptions{})
if err != nil { if err != nil {
return err return err
} }
@ -265,8 +280,13 @@ func (o *ClusterInfoDumpOptions) Run() error {
} }
} }
} }
if o.OutputDir != "-" {
fmt.Fprintf(o.Out, "Cluster info dumped to %s\n", o.OutputDir) dest := o.OutputDir
if len(dest) == 0 {
dest = "standard output"
}
if dest != "-" {
fmt.Fprintf(o.Out, "Cluster info dumped to %s\n", dest)
} }
return nil return nil
} }