Remove 'all namespaces' meaning of empty list in PodAffinityTerm

This commit is contained in:
Jordan Liggitt 2017-03-17 00:32:07 -04:00
parent a10c8f49ff
commit 8fda1c716b
No known key found for this signature in database
GPG Key ID: 24E7ADF9A3B42012
3 changed files with 7 additions and 12 deletions

View File

@ -1886,9 +1886,7 @@ type PodAffinityTerm struct {
// +optional
LabelSelector *metav1.LabelSelector
// namespaces specifies which namespaces the labelSelector applies to (matches against);
// nil list means "this pod's namespace," empty list means "all namespaces"
// The json tag here is not "omitempty" since we need to distinguish nil and empty.
// See https://golang.org/pkg/encoding/json/#Marshal for more details.
// null or empty list means "this pod's namespace"
Namespaces []string
// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
// the labelSelector in the specified namespaces, where co-located is defined as running on a node

View File

@ -2102,10 +2102,8 @@ type PodAffinityTerm struct {
// +optional
LabelSelector *metav1.LabelSelector `json:"labelSelector,omitempty" protobuf:"bytes,1,opt,name=labelSelector"`
// namespaces specifies which namespaces the labelSelector applies to (matches against);
// nil list means "this pod's namespace," empty list means "all namespaces"
// The json tag here is not "omitempty" since we need to distinguish nil and empty.
// See https://golang.org/pkg/encoding/json/#Marshal for more details.
Namespaces []string `json:"namespaces" protobuf:"bytes,2,rep,name=namespaces"`
// null or empty list means "this pod's namespace"
Namespaces []string `json:"namespaces,omitempty" protobuf:"bytes,2,rep,name=namespaces"`
// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching
// the labelSelector in the specified namespaces, where co-located is defined as running on a node
// whose value of the label with key topologyKey matches that of any node on which any of the

View File

@ -26,13 +26,12 @@ import (
// GetNamespacesFromPodAffinityTerm returns a set of names
// according to the namespaces indicated in podAffinityTerm.
// 1. If the namespaces is nil considers the given pod's namespace
// 2. If the namespaces is empty list then considers all the namespaces
// 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 podAffinityTerm.Namespaces == nil {
if len(podAffinityTerm.Namespaces) == 0 {
names.Insert(pod.Namespace)
} else if len(podAffinityTerm.Namespaces) != 0 {
} else {
names.Insert(podAffinityTerm.Namespaces...)
}
return names
@ -41,7 +40,7 @@ func GetNamespacesFromPodAffinityTerm(pod *v1.Pod, podAffinityTerm *v1.PodAffini
// 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 len(namespaces) != 0 && !namespaces.Has(pod.Namespace) {
if !namespaces.Has(pod.Namespace) {
return false
}