Skip to content

Commit d6fcc22

Browse files
kubectl cluster-info dump: use file extension according to output format
1 parent 0045885 commit d6fcc22

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
@@ -112,15 +112,15 @@ var (
112112
kubectl cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state`))
113113
)
114114

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

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

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

@@ -198,47 +208,47 @@ func (o *ClusterInfoDumpOptions) Run() error {
198208
if err != nil {
199209
return err
200210
}
201-
if err := o.PrintObj(events, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "events.json"))); err != nil {
211+
if err := o.PrintObj(events, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "events"), fileExtension)); err != nil {
202212
return err
203213
}
204214

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

213223
svcs, err := o.CoreClient.Services(namespace).List(metav1.ListOptions{})
214224
if err != nil {
215225
return err
216226
}
217-
if err := o.PrintObj(svcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "services.json"))); err != nil {
227+
if err := o.PrintObj(svcs, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "services"), fileExtension)); err != nil {
218228
return err
219229
}
220230

221231
sets, err := o.AppsClient.DaemonSets(namespace).List(metav1.ListOptions{})
222232
if err != nil {
223233
return err
224234
}
225-
if err := o.PrintObj(sets, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "daemonsets.json"))); err != nil {
235+
if err := o.PrintObj(sets, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "daemonsets"), fileExtension)); err != nil {
226236
return err
227237
}
228238

229239
deps, err := o.AppsClient.Deployments(namespace).List(metav1.ListOptions{})
230240
if err != nil {
231241
return err
232242
}
233-
if err := o.PrintObj(deps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "deployments.json"))); err != nil {
243+
if err := o.PrintObj(deps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "deployments"), fileExtension)); err != nil {
234244
return err
235245
}
236246

237247
rps, err := o.AppsClient.ReplicaSets(namespace).List(metav1.ListOptions{})
238248
if err != nil {
239249
return err
240250
}
241-
if err := o.PrintObj(rps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replicasets.json"))); err != nil {
251+
if err := o.PrintObj(rps, setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, "replicasets"), fileExtension)); err != nil {
242252
return err
243253
}
244254

@@ -247,7 +257,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
247257
return err
248258
}
249259

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

@@ -276,7 +286,7 @@ func (o *ClusterInfoDumpOptions) Run() error {
276286
for ix := range pods.Items {
277287
pod := &pods.Items[ix]
278288
containers := pod.Spec.Containers
279-
writer := setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, pod.Name, "logs.txt"))
289+
writer := setupOutputWriter(o.OutputDir, o.Out, path.Join(namespace, pod.Name, "logs"), ".txt")
280290

281291
for i := range containers {
282292
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)