NodeConditionPredicates should return NodeOutOfDisk error.

This commit is contained in:
Klaus Ma 2017-08-14 15:17:56 +08:00
parent b32639f9e7
commit abee0ce8a3
2 changed files with 20 additions and 1 deletions

View File

@ -1351,7 +1351,7 @@ func NodeConditionPredicates(nodeInfo *schedulercache.NodeInfo) (bool, []algorit
// TODO: There are other node status that the DaemonSet should ideally respect too, // TODO: There are other node status that the DaemonSet should ideally respect too,
// e.g. MemoryPressure, and DiskPressure // e.g. MemoryPressure, and DiskPressure
if c.Type == v1.NodeOutOfDisk && c.Status == v1.ConditionTrue { if c.Type == v1.NodeOutOfDisk && c.Status == v1.ConditionTrue {
reasons = append(reasons, predicates.ErrNodeSelectorNotMatch) reasons = append(reasons, predicates.ErrNodeOutOfDisk)
break break
} }
} }

View File

@ -1394,6 +1394,7 @@ func setDaemonSetCritical(ds *extensions.DaemonSet) {
func TestNodeShouldRunDaemonPod(t *testing.T) { func TestNodeShouldRunDaemonPod(t *testing.T) {
cases := []struct { cases := []struct {
podsOnNode []*v1.Pod podsOnNode []*v1.Pod
nodeCondition []v1.NodeCondition
ds *extensions.DaemonSet ds *extensions.DaemonSet
wantToRun, shouldSchedule, shouldContinueRunning bool wantToRun, shouldSchedule, shouldContinueRunning bool
err error err error
@ -1414,6 +1415,23 @@ func TestNodeShouldRunDaemonPod(t *testing.T) {
shouldSchedule: true, shouldSchedule: true,
shouldContinueRunning: true, shouldContinueRunning: true,
}, },
{
ds: &extensions.DaemonSet{
Spec: extensions.DaemonSetSpec{
Selector: &metav1.LabelSelector{MatchLabels: simpleDaemonSetLabel},
Template: v1.PodTemplateSpec{
ObjectMeta: metav1.ObjectMeta{
Labels: simpleDaemonSetLabel,
},
Spec: resourcePodSpec("", "50M", "0.5"),
},
},
},
nodeCondition: []v1.NodeCondition{{Type: v1.NodeOutOfDisk, Status: v1.ConditionTrue}},
wantToRun: true,
shouldSchedule: false,
shouldContinueRunning: true,
},
{ {
ds: &extensions.DaemonSet{ ds: &extensions.DaemonSet{
Spec: extensions.DaemonSetSpec{ Spec: extensions.DaemonSetSpec{
@ -1484,6 +1502,7 @@ func TestNodeShouldRunDaemonPod(t *testing.T) {
for i, c := range cases { for i, c := range cases {
for _, strategy := range updateStrategies() { for _, strategy := range updateStrategies() {
node := newNode("test-node", nil) node := newNode("test-node", nil)
node.Status.Conditions = append(node.Status.Conditions, c.nodeCondition...)
node.Status.Allocatable = allocatableResources("100M", "1") node.Status.Allocatable = allocatableResources("100M", "1")
manager, _, _ := newTestController() manager, _, _ := newTestController()
manager.nodeStore.Add(node) manager.nodeStore.Add(node)