Skip to content

Commit 5c1660c

Browse files
committed
Fix printPod panic with spurious container statuses
1 parent 7a6931b commit 5c1660c

File tree

2 files changed

+31
-0
lines changed

2 files changed

+31
-0
lines changed

pkg/printers/internalversion/printers.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3207,6 +3207,9 @@ func (list SortableResourceNames) Less(i, j int) bool {
32073207
}
32083208

32093209
func isRestartableInitContainer(initContainer *api.Container) bool {
3210+
if initContainer == nil {
3211+
return false
3212+
}
32103213
if initContainer.RestartPolicy == nil {
32113214
return false
32123215
}

pkg/printers/internalversion/printers_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525
"time"
2626

2727
"github.com/google/go-cmp/cmp"
28+
2829
apiv1 "k8s.io/api/core/v1"
2930
"k8s.io/apimachinery/pkg/api/resource"
3031
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
@@ -50,6 +51,7 @@ import (
5051
"k8s.io/kubernetes/pkg/apis/storagemigration"
5152
"k8s.io/kubernetes/pkg/printers"
5253
utilpointer "k8s.io/utils/pointer"
54+
"k8s.io/utils/ptr"
5355
)
5456

5557
var containerRestartPolicyAlways = api.ContainerRestartPolicyAlways
@@ -1718,6 +1720,32 @@ func TestPrintPodWithRestartableInitContainer(t *testing.T) {
17181720
},
17191721
},
17201722
},
1723+
{
1724+
// Test pod has container statuses for non-existent initContainers and containers
1725+
api.Pod{
1726+
ObjectMeta: metav1.ObjectMeta{Name: "test4"},
1727+
Spec: api.PodSpec{
1728+
InitContainers: []api.Container{
1729+
{Name: "init1", Image: "initimage"},
1730+
{Name: "sidecar1", Image: "sidecarimage", RestartPolicy: ptr.To(api.ContainerRestartPolicyAlways)},
1731+
},
1732+
Containers: []api.Container{{Name: "container1", Image: "containerimage"}},
1733+
},
1734+
Status: api.PodStatus{
1735+
Phase: "Running",
1736+
InitContainerStatuses: []api.ContainerStatus{
1737+
{Name: "initinvalid"},
1738+
{Name: "init1"},
1739+
{Name: "sidecar1"},
1740+
},
1741+
ContainerStatuses: []api.ContainerStatus{
1742+
{Name: "containerinvalid"},
1743+
{Name: "container1"},
1744+
},
1745+
},
1746+
},
1747+
[]metav1.TableRow{{Cells: []interface{}{"test4", "0/2", "Init:0/2", "0", "<unknown>"}}},
1748+
},
17211749
}
17221750

17231751
for i, test := range tests {

0 commit comments

Comments
 (0)