Merge pull request #124906 from liggitt/pod-list-panic
Fix printPod panic with spurious container statuses
This commit is contained in:
		| @@ -3207,6 +3207,9 @@ func (list SortableResourceNames) Less(i, j int) bool { | |||||||
| } | } | ||||||
|  |  | ||||||
| func isRestartableInitContainer(initContainer *api.Container) bool { | func isRestartableInitContainer(initContainer *api.Container) bool { | ||||||
|  | 	if initContainer == nil { | ||||||
|  | 		return false | ||||||
|  | 	} | ||||||
| 	if initContainer.RestartPolicy == nil { | 	if initContainer.RestartPolicy == nil { | ||||||
| 		return false | 		return false | ||||||
| 	} | 	} | ||||||
|   | |||||||
| @@ -25,6 +25,7 @@ import ( | |||||||
| 	"time" | 	"time" | ||||||
|  |  | ||||||
| 	"github.com/google/go-cmp/cmp" | 	"github.com/google/go-cmp/cmp" | ||||||
|  |  | ||||||
| 	apiv1 "k8s.io/api/core/v1" | 	apiv1 "k8s.io/api/core/v1" | ||||||
| 	"k8s.io/apimachinery/pkg/api/resource" | 	"k8s.io/apimachinery/pkg/api/resource" | ||||||
| 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | 	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" | ||||||
| @@ -50,6 +51,7 @@ import ( | |||||||
| 	"k8s.io/kubernetes/pkg/apis/storagemigration" | 	"k8s.io/kubernetes/pkg/apis/storagemigration" | ||||||
| 	"k8s.io/kubernetes/pkg/printers" | 	"k8s.io/kubernetes/pkg/printers" | ||||||
| 	utilpointer "k8s.io/utils/pointer" | 	utilpointer "k8s.io/utils/pointer" | ||||||
|  | 	"k8s.io/utils/ptr" | ||||||
| ) | ) | ||||||
|  |  | ||||||
| var containerRestartPolicyAlways = api.ContainerRestartPolicyAlways | var containerRestartPolicyAlways = api.ContainerRestartPolicyAlways | ||||||
| @@ -1718,6 +1720,32 @@ func TestPrintPodWithRestartableInitContainer(t *testing.T) { | |||||||
| 				}, | 				}, | ||||||
| 			}, | 			}, | ||||||
| 		}, | 		}, | ||||||
|  | 		{ | ||||||
|  | 			// Test pod has container statuses for non-existent initContainers and containers | ||||||
|  | 			api.Pod{ | ||||||
|  | 				ObjectMeta: metav1.ObjectMeta{Name: "test4"}, | ||||||
|  | 				Spec: api.PodSpec{ | ||||||
|  | 					InitContainers: []api.Container{ | ||||||
|  | 						{Name: "init1", Image: "initimage"}, | ||||||
|  | 						{Name: "sidecar1", Image: "sidecarimage", RestartPolicy: ptr.To(api.ContainerRestartPolicyAlways)}, | ||||||
|  | 					}, | ||||||
|  | 					Containers: []api.Container{{Name: "container1", Image: "containerimage"}}, | ||||||
|  | 				}, | ||||||
|  | 				Status: api.PodStatus{ | ||||||
|  | 					Phase: "Running", | ||||||
|  | 					InitContainerStatuses: []api.ContainerStatus{ | ||||||
|  | 						{Name: "initinvalid"}, | ||||||
|  | 						{Name: "init1"}, | ||||||
|  | 						{Name: "sidecar1"}, | ||||||
|  | 					}, | ||||||
|  | 					ContainerStatuses: []api.ContainerStatus{ | ||||||
|  | 						{Name: "containerinvalid"}, | ||||||
|  | 						{Name: "container1"}, | ||||||
|  | 					}, | ||||||
|  | 				}, | ||||||
|  | 			}, | ||||||
|  | 			[]metav1.TableRow{{Cells: []interface{}{"test4", "0/2", "Init:0/2", "0", "<unknown>"}}}, | ||||||
|  | 		}, | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	for i, test := range tests { | 	for i, test := range tests { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot