Merge pull request #15930 from mikedanese/nc

make nodecontroller delete terminating pods on 1.0 nodes
This commit is contained in:
Saad Ali
2015-10-22 12:38:14 -07:00
2 changed files with 212 additions and 1 deletions

View File

@@ -27,6 +27,7 @@ import (
apierrors "k8s.io/kubernetes/pkg/api/errors"
"k8s.io/kubernetes/pkg/api/resource"
"k8s.io/kubernetes/pkg/api/unversioned"
"k8s.io/kubernetes/pkg/client/cache"
client "k8s.io/kubernetes/pkg/client/unversioned"
"k8s.io/kubernetes/pkg/client/unversioned/testclient"
"k8s.io/kubernetes/pkg/fields"
@@ -646,6 +647,111 @@ func TestNodeDeletion(t *testing.T) {
}
}
func TestCheckPod(t *testing.T) {
tcs := []struct {
pod api.Pod
prune bool
}{
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: nil},
Spec: api.PodSpec{NodeName: "new"},
},
prune: false,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: nil},
Spec: api.PodSpec{NodeName: "old"},
},
prune: false,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: nil},
Spec: api.PodSpec{NodeName: ""},
},
prune: false,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: nil},
Spec: api.PodSpec{NodeName: "nonexistant"},
},
prune: false,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: &unversioned.Time{}},
Spec: api.PodSpec{NodeName: "new"},
},
prune: false,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: &unversioned.Time{}},
Spec: api.PodSpec{NodeName: "old"},
},
prune: true,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: &unversioned.Time{}},
Spec: api.PodSpec{NodeName: ""},
},
prune: true,
},
{
pod: api.Pod{
ObjectMeta: api.ObjectMeta{DeletionTimestamp: &unversioned.Time{}},
Spec: api.PodSpec{NodeName: "nonexistant"},
},
prune: true,
},
}
nc := NewNodeController(nil, nil, 0, nil, nil, 0, 0, 0, nil, false)
nc.nodeStore.Store = cache.NewStore(cache.MetaNamespaceKeyFunc)
nc.nodeStore.Store.Add(&api.Node{
ObjectMeta: api.ObjectMeta{
Name: "new",
},
Status: api.NodeStatus{
NodeInfo: api.NodeSystemInfo{
KubeletVersion: "v1.1.0",
},
},
})
nc.nodeStore.Store.Add(&api.Node{
ObjectMeta: api.ObjectMeta{
Name: "old",
},
Status: api.NodeStatus{
NodeInfo: api.NodeSystemInfo{
KubeletVersion: "v1.0.0",
},
},
})
for i, tc := range tcs {
var deleteCalls int
nc.forcefullyDeletePod = func(_ *api.Pod) {
deleteCalls++
}
nc.maybeDeleteTerminatingPod(&tc.pod)
if tc.prune && deleteCalls != 1 {
t.Errorf("[%v] expected number of delete calls to be 1 but got %v", i, deleteCalls)
}
if !tc.prune && deleteCalls != 0 {
t.Errorf("[%v] expected number of delete calls to be 0 but got %v", i, deleteCalls)
}
}
}
func newNode(name string) *api.Node {
return &api.Node{
ObjectMeta: api.ObjectMeta{Name: name},