From 4ad64d2ad40ac17debdf7d8a48368d6288c512f3 Mon Sep 17 00:00:00 2001 From: Avesh Agarwal Date: Mon, 31 Jul 2017 22:27:46 -0400 Subject: [PATCH] Implement various pods implementation. --- pkg/rescheduler/pod/pods.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pkg/rescheduler/pod/pods.go b/pkg/rescheduler/pod/pods.go index aa61f41a4..9c76d1f87 100644 --- a/pkg/rescheduler/pod/pods.go +++ b/pkg/rescheduler/pod/pods.go @@ -20,9 +20,14 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/fields" "k8s.io/kubernetes/pkg/api/v1" + "k8s.io/kubernetes/pkg/api/v1/helper/qos" "k8s.io/kubernetes/pkg/client/clientset_generated/clientset" ) +const ( + criticalPodAnnotation = "scheduler.alpha.kubernetes.io/critical-pod" +) + func ListPodsOnANode(client clientset.Interface, node *v1.Node) ([]*v1.Pod, error) { podList, err := client.CoreV1().Pods(v1.NamespaceAll).List( metav1.ListOptions{FieldSelector: fields.SelectorFromSet(fields.Set{"spec.nodeName": node.Name}).String()}) @@ -37,3 +42,20 @@ func ListPodsOnANode(client clientset.Interface, node *v1.Node) ([]*v1.Pod, erro return pods, nil } + +func IsCriticalPod(pod *v1.Pod) bool { + _, found := pod.ObjectMeta.Annotations[criticalPodAnnotation] + return found +} + +func IsBestEffortPod(pod *v1.Pod) bool { + return qos.GetPodQOS(pod) == v1.PodQOSBestEffort +} + +func IsBurstablePod(pod *v1.Pod) bool { + return qos.GetPodQOS(pod) == v1.PodQOSBurstable +} + +func IsGuaranteedPod(pod *v1.Pod) bool { + return qos.GetPodQOS(pod) == v1.PodQOSGuaranteed +}