Merge pull request #126706 from carlory/kubectl-describe-image-volume

show image volume when kubectl describe a pod with image volume
This commit is contained in:
Kubernetes Prow Robot 2024-08-15 04:29:18 -07:00 committed by GitHub
commit ab26ad0950
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 56 additions and 0 deletions

View File

@ -1000,6 +1000,8 @@ func describeVolumes(volumes []corev1.Volume, w PrefixWriter, space string) {
printProjectedVolumeSource(volume.VolumeSource.Projected, w)
case volume.VolumeSource.CSI != nil:
printCSIVolumeSource(volume.VolumeSource.CSI, w)
case volume.VolumeSource.Image != nil:
printImageVolumeSource(volume.VolumeSource.Image, w)
default:
w.Write(LEVEL_1, "<unknown>\n")
}
@ -1481,6 +1483,13 @@ func printCSIPersistentVolumeAttributesMultilineIndent(w PrefixWriter, initialIn
}
}
func printImageVolumeSource(image *corev1.ImageVolumeSource, w PrefixWriter) {
w.Write(LEVEL_2, "Type:\tImage (a container image or OCI artifact)\n"+
" Reference:\t%v\n"+
" PullPolicy:\t%v\n",
image.Reference, image.PullPolicy)
}
type PersistentVolumeDescriber struct {
clientset.Interface
}

View File

@ -268,6 +268,53 @@ func TestDescribePodTolerations(t *testing.T) {
}
}
func TestDescribePodVolumes(t *testing.T) {
pod := &corev1.Pod{
ObjectMeta: metav1.ObjectMeta{
Name: "bar",
Namespace: "foo",
},
Spec: corev1.PodSpec{
Volumes: []corev1.Volume{
{
Name: "image",
VolumeSource: corev1.VolumeSource{Image: &corev1.ImageVolumeSource{Reference: "image", PullPolicy: corev1.PullIfNotPresent}},
},
},
},
}
expected := dedent.Dedent(`
Name: bar
Namespace: foo
Node: <none>
Labels: <none>
Annotations: <none>
Status:
IP:
IPs: <none>
Containers: <none>
Volumes:
image:
Type: Image (a container image or OCI artifact)
Reference: image
PullPolicy: IfNotPresent
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: <none>
Events: <none>
`)[1:]
fakeClient := fake.NewSimpleClientset(pod)
c := &describeClient{T: t, Namespace: "foo", Interface: fakeClient}
d := PodDescriber{c}
out, err := d.Describe("foo", "bar", DescriberSettings{ShowEvents: true})
if err != nil {
t.Errorf("unexpected error: %v", err)
}
assert.Equal(t, expected, out)
}
func TestDescribeTopologySpreadConstraints(t *testing.T) {
fake := fake.NewSimpleClientset(&corev1.Pod{
ObjectMeta: metav1.ObjectMeta{