Skip to content

Commit bd32f54

Browse files
committed
Fix print volume when kubelet describe a pod with image volume
1 parent 026c55e commit bd32f54

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

staging/src/k8s.io/kubectl/pkg/describe/describe.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,6 +1000,8 @@ func describeVolumes(volumes []corev1.Volume, w PrefixWriter, space string) {
10001000
printProjectedVolumeSource(volume.VolumeSource.Projected, w)
10011001
case volume.VolumeSource.CSI != nil:
10021002
printCSIVolumeSource(volume.VolumeSource.CSI, w)
1003+
case volume.VolumeSource.Image != nil:
1004+
printImageVolumeSource(volume.VolumeSource.Image, w)
10031005
default:
10041006
w.Write(LEVEL_1, "<unknown>\n")
10051007
}
@@ -1481,6 +1483,13 @@ func printCSIPersistentVolumeAttributesMultilineIndent(w PrefixWriter, initialIn
14811483
}
14821484
}
14831485

1486+
func printImageVolumeSource(image *corev1.ImageVolumeSource, w PrefixWriter) {
1487+
w.Write(LEVEL_2, "Type:\tImage (a container image or OCI artifact)\n"+
1488+
" Reference:\t%v\n"+
1489+
" PullPolicy:\t%v\n",
1490+
image.Reference, image.PullPolicy)
1491+
}
1492+
14841493
type PersistentVolumeDescriber struct {
14851494
clientset.Interface
14861495
}

staging/src/k8s.io/kubectl/pkg/describe/describe_test.go

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,53 @@ func TestDescribePodTolerations(t *testing.T) {
268268
}
269269
}
270270

271+
func TestDescribePodVolumes(t *testing.T) {
272+
pod := &corev1.Pod{
273+
ObjectMeta: metav1.ObjectMeta{
274+
Name: "bar",
275+
Namespace: "foo",
276+
},
277+
Spec: corev1.PodSpec{
278+
Volumes: []corev1.Volume{
279+
{
280+
Name: "image",
281+
VolumeSource: corev1.VolumeSource{Image: &corev1.ImageVolumeSource{Reference: "image", PullPolicy: corev1.PullIfNotPresent}},
282+
},
283+
},
284+
},
285+
}
286+
287+
expected := dedent.Dedent(`
288+
Name: bar
289+
Namespace: foo
290+
Node: <none>
291+
Labels: <none>
292+
Annotations: <none>
293+
Status:
294+
IP:
295+
IPs: <none>
296+
Containers: <none>
297+
Volumes:
298+
image:
299+
Type: Image (a container image or OCI artifact)
300+
Reference: image
301+
PullPolicy: IfNotPresent
302+
QoS Class: BestEffort
303+
Node-Selectors: <none>
304+
Tolerations: <none>
305+
Events: <none>
306+
`)[1:]
307+
308+
fakeClient := fake.NewSimpleClientset(pod)
309+
c := &describeClient{T: t, Namespace: "foo", Interface: fakeClient}
310+
d := PodDescriber{c}
311+
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
312+
if err != nil {
313+
t.Errorf("unexpected error: %v", err)
314+
}
315+
assert.Equal(t, expected, out)
316+
}
317+
271318
func TestDescribeTopologySpreadConstraints(t *testing.T) {
272319
fake := fake.NewSimpleClientset(&corev1.Pod{
273320
ObjectMeta: metav1.ObjectMeta{

0 commit comments

Comments
 (0)