mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-22 19:31:44 +00:00
Merge pull request #82070 from olivierlemasle/fix82011
kubectl cluster-info dump: use file extension according to output format
This commit is contained in:
commit
a70e574955
@ -113,15 +113,15 @@ var (
|
||||
kubectl cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state`))
|
||||
)
|
||||
|
||||
func setupOutputWriter(dir string, defaultWriter io.Writer, filename string) io.Writer {
|
||||
func setupOutputWriter(dir string, defaultWriter io.Writer, filename string, fileExtension string) io.Writer {
|
||||
if len(dir) == 0 || dir == "-" {
|
||||
return defaultWriter
|
||||
}
|
||||
fullFile := path.Join(dir, filename)
|
||||
fullFile := path.Join(dir, filename) + fileExtension
|
||||
parent := path.Dir(fullFile)
|
||||
cmdutil.CheckErr(os.MkdirAll(parent, 0755))
|
||||
|
||||
file, err := os.Create(path.Join(dir, filename))
|
||||
file, err := os.Create(fullFile)
|
||||
cmdutil.CheckErr(err)
|
||||
return file
|
||||
}
|
||||
@ -171,7 +171,17 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := o.PrintObj(nodes, setupOutputWriter(o.OutputDir, o.Out, "nodes.json")); err != nil {
|
||||
fileExtension := ".txt"
|
||||
if o.PrintFlags.OutputFormat != nil {
|
||||
switch *o.PrintFlags.OutputFormat {
|
||||
case "json":
|
||||
fileExtension = ".json"
|
||||
case "yaml":
|
||||
fileExtension = ".yaml"
|
||||
}
|
||||
}
|
||||
|
||||
if err := o.PrintObj(nodes, setupOutputWriter(o.OutputDir, o.Out, "nodes", fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -199,7 +209,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := o.PrintObj(events, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "events.json"))); err != nil {
|
||||
if err := o.PrintObj(events, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "events"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -207,7 +217,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := o.PrintObj(rcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replication-controllers.json"))); err != nil {
|
||||
if err := o.PrintObj(rcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replication-controllers"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -215,7 +225,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := o.PrintObj(svcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "services.json"))); err != nil {
|
||||
if err := o.PrintObj(svcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "services"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -223,7 +233,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := o.PrintObj(sets, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "daemonsets.json"))); err != nil {
|
||||
if err := o.PrintObj(sets, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "daemonsets"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -231,7 +241,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := o.PrintObj(deps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "deployments.json"))); err != nil {
|
||||
if err := o.PrintObj(deps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "deployments"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -239,7 +249,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := o.PrintObj(rps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replicasets.json"))); err != nil {
|
||||
if err := o.PrintObj(rps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replicasets"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -248,7 +258,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := o.PrintObj(pods, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "pods.json"))); err != nil {
|
||||
if err := o.PrintObj(pods, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "pods"), fileExtension)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -277,7 +287,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
||||
for ix := range pods.Items {
|
||||
pod := &pods.Items[ix]
|
||||
containers := pod.Spec.Containers
|
||||
writer := setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, pod.Name, "logs.txt"))
|
||||
writer := setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, pod.Name, "logs"), ".txt")
|
||||
|
||||
for i := range containers {
|
||||
printContainer(writer, containers[i], pod)
|
||||
|
@ -33,7 +33,7 @@ func TestSetupOutputWriterNoOp(t *testing.T) {
|
||||
f := cmdtesting.NewTestFactory()
|
||||
defer f.Cleanup()
|
||||
|
||||
writer := setupOutputWriter(test, buf, "/some/file/that/should/be/ignored")
|
||||
writer := setupOutputWriter(test, buf, "/some/file/that/should/be/ignored", "")
|
||||
if writer != buf {
|
||||
t.Errorf("expected: %v, saw: %v", buf, writer)
|
||||
}
|
||||
@ -41,19 +41,20 @@ func TestSetupOutputWriterNoOp(t *testing.T) {
|
||||
}
|
||||
|
||||
func TestSetupOutputWriterFile(t *testing.T) {
|
||||
file := "output.json"
|
||||
file := "output"
|
||||
extension := ".json"
|
||||
dir, err := ioutil.TempDir(os.TempDir(), "out")
|
||||
if err != nil {
|
||||
t.Errorf("unexpected error: %v", err)
|
||||
}
|
||||
fullPath := path.Join(dir, file)
|
||||
fullPath := path.Join(dir, file) + extension
|
||||
defer os.RemoveAll(dir)
|
||||
|
||||
_, _, buf, _ := genericclioptions.NewTestIOStreams()
|
||||
f := cmdtesting.NewTestFactory()
|
||||
defer f.Cleanup()
|
||||
|
||||
writer := setupOutputWriter(dir, buf, file)
|
||||
writer := setupOutputWriter(dir, buf, file, extension)
|
||||
if writer == buf {
|
||||
t.Errorf("expected: %v, saw: %v", buf, writer)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user