Check for sandboxes before deleting the pod from apiserver
This commit is contained in:
@@ -42,6 +42,7 @@ import (
|
||||
// api.Registry.GroupOrDie(v1.GroupName).GroupVersions[0].String() is changed
|
||||
// to "v1"?
|
||||
|
||||
runtimeapi "k8s.io/cri-api/pkg/apis/runtime/v1alpha2"
|
||||
_ "k8s.io/kubernetes/pkg/apis/core/install"
|
||||
"k8s.io/kubernetes/pkg/features"
|
||||
kubecontainer "k8s.io/kubernetes/pkg/kubelet/container"
|
||||
@@ -2421,3 +2422,70 @@ func TestTruncatePodHostname(t *testing.T) {
|
||||
assert.Equal(t, test.output, output)
|
||||
}
|
||||
}
|
||||
|
||||
func TestPodResourcesAreReclaimed(t *testing.T) {
|
||||
|
||||
type args struct {
|
||||
pod *v1.Pod
|
||||
status v1.PodStatus
|
||||
runtimeStatus kubecontainer.PodStatus
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
args args
|
||||
want bool
|
||||
}{
|
||||
{
|
||||
"pod with running containers",
|
||||
args{
|
||||
pod: &v1.Pod{},
|
||||
status: v1.PodStatus{
|
||||
ContainerStatuses: []v1.ContainerStatus{
|
||||
runningState("containerA"),
|
||||
runningState("containerB"),
|
||||
},
|
||||
},
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"pod with containers in runtime cache",
|
||||
args{
|
||||
pod: &v1.Pod{},
|
||||
status: v1.PodStatus{},
|
||||
runtimeStatus: kubecontainer.PodStatus{
|
||||
ContainerStatuses: []*kubecontainer.ContainerStatus{
|
||||
{},
|
||||
},
|
||||
},
|
||||
},
|
||||
false,
|
||||
},
|
||||
{
|
||||
"pod with sandbox present",
|
||||
args{
|
||||
pod: &v1.Pod{},
|
||||
status: v1.PodStatus{},
|
||||
runtimeStatus: kubecontainer.PodStatus{
|
||||
SandboxStatuses: []*runtimeapi.PodSandboxStatus{
|
||||
{},
|
||||
},
|
||||
},
|
||||
},
|
||||
false,
|
||||
},
|
||||
}
|
||||
|
||||
testKubelet := newTestKubelet(t, false)
|
||||
defer testKubelet.Cleanup()
|
||||
kl := testKubelet.kubelet
|
||||
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
testKubelet.fakeRuntime.PodStatus = tt.args.runtimeStatus
|
||||
if got := kl.PodResourcesAreReclaimed(tt.args.pod, tt.args.status); got != tt.want {
|
||||
t.Errorf("PodResourcesAreReclaimed() = %v, want %v", got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user