mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-23 03:41:45 +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`))
|
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 == "-" {
|
if len(dir) == 0 || dir == "-" {
|
||||||
return defaultWriter
|
return defaultWriter
|
||||||
}
|
}
|
||||||
fullFile := path.Join(dir, filename)
|
fullFile := path.Join(dir, filename) + fileExtension
|
||||||
parent := path.Dir(fullFile)
|
parent := path.Dir(fullFile)
|
||||||
cmdutil.CheckErr(os.MkdirAll(parent, 0755))
|
cmdutil.CheckErr(os.MkdirAll(parent, 0755))
|
||||||
|
|
||||||
file, err := os.Create(path.Join(dir, filename))
|
file, err := os.Create(fullFile)
|
||||||
cmdutil.CheckErr(err)
|
cmdutil.CheckErr(err)
|
||||||
return file
|
return file
|
||||||
}
|
}
|
||||||
@ -171,7 +171,17 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -199,7 +209,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -207,7 +217,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -215,7 +225,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -223,7 +233,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,7 +241,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -239,7 +249,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,7 +258,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
return err
|
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
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,7 +287,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
|
|||||||
for ix := range pods.Items {
|
for ix := range pods.Items {
|
||||||
pod := &pods.Items[ix]
|
pod := &pods.Items[ix]
|
||||||
containers := pod.Spec.Containers
|
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 {
|
for i := range containers {
|
||||||
printContainer(writer, containers[i], pod)
|
printContainer(writer, containers[i], pod)
|
||||||
|
@ -33,7 +33,7 @@ func TestSetupOutputWriterNoOp(t *testing.T) {
|
|||||||
f := cmdtesting.NewTestFactory()
|
f := cmdtesting.NewTestFactory()
|
||||||
defer f.Cleanup()
|
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 {
|
if writer != buf {
|
||||||
t.Errorf("expected: %v, saw: %v", buf, writer)
|
t.Errorf("expected: %v, saw: %v", buf, writer)
|
||||||
}
|
}
|
||||||
@ -41,19 +41,20 @@ func TestSetupOutputWriterNoOp(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSetupOutputWriterFile(t *testing.T) {
|
func TestSetupOutputWriterFile(t *testing.T) {
|
||||||
file := "output.json"
|
file := "output"
|
||||||
|
extension := ".json"
|
||||||
dir, err := ioutil.TempDir(os.TempDir(), "out")
|
dir, err := ioutil.TempDir(os.TempDir(), "out")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Errorf("unexpected error: %v", err)
|
t.Errorf("unexpected error: %v", err)
|
||||||
}
|
}
|
||||||
fullPath := path.Join(dir, file)
|
fullPath := path.Join(dir, file) + extension
|
||||||
defer os.RemoveAll(dir)
|
defer os.RemoveAll(dir)
|
||||||
|
|
||||||
_, _, buf, _ := genericclioptions.NewTestIOStreams()
|
_, _, buf, _ := genericclioptions.NewTestIOStreams()
|
||||||
f := cmdtesting.NewTestFactory()
|
f := cmdtesting.NewTestFactory()
|
||||||
defer f.Cleanup()
|
defer f.Cleanup()
|
||||||
|
|
||||||
writer := setupOutputWriter(dir, buf, file)
|
writer := setupOutputWriter(dir, buf, file, extension)
|
||||||
if writer == buf {
|
if writer == buf {
|
||||||
t.Errorf("expected: %v, saw: %v", buf, writer)
|
t.Errorf("expected: %v, saw: %v", buf, writer)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user