mirror of
https://github.com/kubernetes-sigs/descheduler.git
synced 2026-01-26 21:31:18 +01:00
36 lines
1.0 KiB
Go
36 lines
1.0 KiB
Go
package utils
|
|
|
|
import (
|
|
v1 "k8s.io/api/core/v1"
|
|
"k8s.io/apimachinery/pkg/labels"
|
|
"k8s.io/apimachinery/pkg/util/sets"
|
|
)
|
|
|
|
const SystemCriticalPriority = 2 * int32(1000000000)
|
|
|
|
// GetNamespacesFromPodAffinityTerm returns a set of names
|
|
// according to the namespaces indicated in podAffinityTerm.
|
|
// If namespaces is empty it considers the given pod's namespace.
|
|
func GetNamespacesFromPodAffinityTerm(pod *v1.Pod, podAffinityTerm *v1.PodAffinityTerm) sets.String {
|
|
names := sets.String{}
|
|
if len(podAffinityTerm.Namespaces) == 0 {
|
|
names.Insert(pod.Namespace)
|
|
} else {
|
|
names.Insert(podAffinityTerm.Namespaces...)
|
|
}
|
|
return names
|
|
}
|
|
|
|
// PodMatchesTermsNamespaceAndSelector returns true if the given <pod>
|
|
// matches the namespace and selector defined by <affinityPod>`s <term>.
|
|
func PodMatchesTermsNamespaceAndSelector(pod *v1.Pod, namespaces sets.String, selector labels.Selector) bool {
|
|
if !namespaces.Has(pod.Namespace) {
|
|
return false
|
|
}
|
|
|
|
if !selector.Matches(labels.Set(pod.Labels)) {
|
|
return false
|
|
}
|
|
return true
|
|
}
|