Skip to content

Commit a70e574

Browse files
authored
Merge pull request kubernetes#82070 from olivierlemasle/fix82011
kubectl cluster-info dump: use file extension according to output format
2 parents d883045 + d6fcc22 commit a70e574

File tree

2 files changed

+27
-16
lines changed

2 files changed

+27
-16
lines changed

staging/src/k8s.io/kubectl/pkg/cmd/clusterinfo/clusterinfo_dump.go

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,15 @@ var (
113113
kubectl cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state`))
114114
)
115115

116-
func setupOutputWriter(dir string, defaultWriter io.Writer, filename string) io.Writer {
116+
func setupOutputWriter(dir string, defaultWriter io.Writer, filename string, fileExtension string) io.Writer {
117117
if len(dir) == 0 || dir == "-" {
118118
return defaultWriter
119119
}
120-
fullFile := path.Join(dir, filename)
120+
fullFile := path.Join(dir, filename) + fileExtension
121121
parent := path.Dir(fullFile)
122122
cmdutil.CheckErr(os.MkdirAll(parent, 0755))
123123

124-
file, err := os.Create(path.Join(dir, filename))
124+
file, err := os.Create(fullFile)
125125
cmdutil.CheckErr(err)
126126
return file
127127
}
@@ -171,7 +171,17 @@ func (o *ClusterInfoDumpOptions) Run() error {
171171
return err
172172
}
173173

174-
if err := o.PrintObj(nodes, setupOutputWriter(o.OutputDir, o.Out, "nodes.json")); err != nil {
174+
fileExtension := ".txt"
175+
if o.PrintFlags.OutputFormat != nil {
176+
switch *o.PrintFlags.OutputFormat {
177+
case "json":
178+
fileExtension = ".json"
179+
case "yaml":
180+
fileExtension = ".yaml"
181+
}
182+
}
183+
184+
if err := o.PrintObj(nodes, setupOutputWriter(o.OutputDir, o.Out, "nodes", fileExtension)); err != nil {
175185
return err
176186
}
177187

@@ -199,47 +209,47 @@ func (o *ClusterInfoDumpOptions) Run() error {
199209
if err != nil {
200210
return err
201211
}
202-
if err := o.PrintObj(events, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "events.json"))); err != nil {
212+
if err := o.PrintObj(events, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "events"), fileExtension)); err != nil {
203213
return err
204214
}
205215

206216
rcs, err := o.CoreClient.ReplicationControllers(namespace).List(context.TODO(), metav1.ListOptions{})
207217
if err != nil {
208218
return err
209219
}
210-
if err := o.PrintObj(rcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replication-controllers.json"))); err != nil {
220+
if err := o.PrintObj(rcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replication-controllers"), fileExtension)); err != nil {
211221
return err
212222
}
213223

214224
svcs, err := o.CoreClient.Services(namespace).List(context.TODO(), metav1.ListOptions{})
215225
if err != nil {
216226
return err
217227
}
218-
if err := o.PrintObj(svcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "services.json"))); err != nil {
228+
if err := o.PrintObj(svcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "services"), fileExtension)); err != nil {
219229
return err
220230
}
221231

222232
sets, err := o.AppsClient.DaemonSets(namespace).List(context.TODO(), metav1.ListOptions{})
223233
if err != nil {
224234
return err
225235
}
226-
if err := o.PrintObj(sets, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "daemonsets.json"))); err != nil {
236+
if err := o.PrintObj(sets, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "daemonsets"), fileExtension)); err != nil {
227237
return err
228238
}
229239

230240
deps, err := o.AppsClient.Deployments(namespace).List(context.TODO(), metav1.ListOptions{})
231241
if err != nil {
232242
return err
233243
}
234-
if err := o.PrintObj(deps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "deployments.json"))); err != nil {
244+
if err := o.PrintObj(deps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "deployments"), fileExtension)); err != nil {
235245
return err
236246
}
237247

238248
rps, err := o.AppsClient.ReplicaSets(namespace).List(context.TODO(), metav1.ListOptions{})
239249
if err != nil {
240250
return err
241251
}
242-
if err := o.PrintObj(rps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replicasets.json"))); err != nil {
252+
if err := o.PrintObj(rps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replicasets"), fileExtension)); err != nil {
243253
return err
244254
}
245255

@@ -248,7 +258,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
248258
return err
249259
}
250260

251-
if err := o.PrintObj(pods, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "pods.json"))); err != nil {
261+
if err := o.PrintObj(pods, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "pods"), fileExtension)); err != nil {
252262
return err
253263
}
254264

@@ -277,7 +287,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
277287
for ix := range pods.Items {
278288
pod := &pods.Items[ix]
279289
containers := pod.Spec.Containers
280-
writer := setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, pod.Name, "logs.txt"))
290+
writer := setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, pod.Name, "logs"), ".txt")
281291

282292
for i := range containers {
283293
printContainer(writer, containers[i], pod)

staging/src/k8s.io/kubectl/pkg/cmd/clusterinfo/clusterinfo_dump_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,27 +33,28 @@ func TestSetupOutputWriterNoOp(t *testing.T) {
3333
f := cmdtesting.NewTestFactory()
3434
defer f.Cleanup()
3535

36-
writer := setupOutputWriter(test, buf, "/some/file/that/should/be/ignored")
36+
writer := setupOutputWriter(test, buf, "/some/file/that/should/be/ignored", "")
3737
if writer != buf {
3838
t.Errorf("expected: %v, saw: %v", buf, writer)
3939
}
4040
}
4141
}
4242

4343
func TestSetupOutputWriterFile(t *testing.T) {
44-
file := "output.json"
44+
file := "output"
45+
extension := ".json"
4546
dir, err := ioutil.TempDir(os.TempDir(), "out")
4647
if err != nil {
4748
t.Errorf("unexpected error: %v", err)
4849
}
49-
fullPath := path.Join(dir, file)
50+
fullPath := path.Join(dir, file) + extension
5051
defer os.RemoveAll(dir)
5152

5253
_, _, buf, _ := genericclioptions.NewTestIOStreams()
5354
f := cmdtesting.NewTestFactory()
5455
defer f.Cleanup()
5556

56-
writer := setupOutputWriter(dir, buf, file)
57+
writer := setupOutputWriter(dir, buf, file, extension)
5758
if writer == buf {
5859
t.Errorf("expected: %v, saw: %v", buf, writer)
5960
}

0 commit comments

Comments
 (0)