Skip to content

Commit 90686ec

Browse files
committed
fix(operatorgroups): use pointer for labelselector
Allows for empty LabelSelectors to accommodate anyOf validation.
1 parent 8d22327 commit 90686ec

File tree

5 files changed

+20
-15
lines changed

5 files changed

+20
-15
lines changed

pkg/api/apis/operators/v1alpha2/operatorgroup_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import (
88
type OperatorGroupSpec struct {
99
// Selector selects the OperatorGroup's target namespaces.
1010
// +optional
11-
Selector metav1.LabelSelector `json:"selector,omitempty"`
11+
Selector *metav1.LabelSelector `json:"selector,omitempty"`
1212

1313
// TargetNamespaces is an explicit set of namespaces to target.
1414
// If it is set, Selector is ignored.

pkg/api/apis/operators/v1alpha2/zz_generated.deepcopy.go

Lines changed: 6 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/controller/operators/olm/operator_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2970,7 +2970,7 @@ func TestSyncOperatorGroups(t *testing.T) {
29702970
Namespace: operatorNamespace,
29712971
},
29722972
Spec: v1alpha2.OperatorGroupSpec{
2973-
Selector: metav1.LabelSelector{
2973+
Selector: &metav1.LabelSelector{
29742974
MatchLabels: map[string]string{"a": "app-a"},
29752975
},
29762976
},
@@ -3000,7 +3000,7 @@ func TestSyncOperatorGroups(t *testing.T) {
30003000
Namespace: operatorNamespace,
30013001
},
30023002
Spec: v1alpha2.OperatorGroupSpec{
3003-
Selector: metav1.LabelSelector{
3003+
Selector: &metav1.LabelSelector{
30043004
MatchLabels: map[string]string{"app": "app-a"},
30053005
},
30063006
},
@@ -3034,7 +3034,7 @@ func TestSyncOperatorGroups(t *testing.T) {
30343034
Namespace: operatorNamespace,
30353035
},
30363036
Spec: v1alpha2.OperatorGroupSpec{
3037-
Selector: metav1.LabelSelector{
3037+
Selector: &metav1.LabelSelector{
30383038
MatchLabels: map[string]string{"app": "app-a"},
30393039
},
30403040
},

pkg/controller/operators/olm/operatorgroup.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -560,7 +560,7 @@ func namespacesChanged(clusterNamespaces []string, statusNamespaces []string) bo
560560
}
561561

562562
func (a *Operator) getOperatorGroupTargets(op *v1alpha2.OperatorGroup) ([]string, error) {
563-
selector, err := metav1.LabelSelectorAsSelector(&op.Spec.Selector)
563+
selector, err := metav1.LabelSelectorAsSelector(op.Spec.Selector)
564564
if err != nil {
565565
return nil, err
566566
}
@@ -573,7 +573,7 @@ func (a *Operator) getOperatorGroupTargets(op *v1alpha2.OperatorGroup) ([]string
573573
}
574574
namespaceSet[ns] = struct{}{}
575575
}
576-
} else if selector == nil || selector.Empty() {
576+
} else if selector == nil || selector.Empty() || selector == labels.Nothing() {
577577
namespaceSet[corev1.NamespaceAll] = struct{}{}
578578
} else {
579579
matchedNamespaces, err := a.lister.CoreV1().NamespaceLister().List(selector)

test/e2e/operator_groups_e2e_test.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,7 @@ func checkOperatorGroupAnnotations(obj metav1.Object, op *v1alpha2.OperatorGroup
101101
return nil
102102
}
103103

104-
func newOperatorGroup(namespace, name string, annotations map[string]string, selector metav1.LabelSelector, targetNamespaces []string, static bool) *v1alpha2.OperatorGroup {
104+
func newOperatorGroup(namespace, name string, annotations map[string]string, selector *metav1.LabelSelector, targetNamespaces []string, static bool) *v1alpha2.OperatorGroup {
105105
return &v1alpha2.OperatorGroup{
106106
ObjectMeta: metav1.ObjectMeta{
107107
Namespace: namespace,
@@ -179,7 +179,7 @@ func TestOperatorGroup(t *testing.T) {
179179
Namespace: opGroupNamespace,
180180
},
181181
Spec: v1alpha2.OperatorGroupSpec{
182-
Selector: metav1.LabelSelector{
182+
Selector: &metav1.LabelSelector{
183183
MatchLabels: matchingLabel,
184184
},
185185
},
@@ -779,9 +779,9 @@ func TestOperatorGroupIntersection(t *testing.T) {
779779
require.NoError(t, err)
780780

781781
// Create operatorgroups
782-
groupA := newOperatorGroup(nsA, genName("a"), nil, metav1.LabelSelector{}, nil, false)
783-
groupB := newOperatorGroup(nsB, genName("b"), nil, metav1.LabelSelector{}, []string{nsC}, false)
784-
groupD := newOperatorGroup(nsD, genName("d"), nil, metav1.LabelSelector{}, []string{nsD, nsE}, false)
782+
groupA := newOperatorGroup(nsA, genName("a"), nil, nil, nil, false)
783+
groupB := newOperatorGroup(nsB, genName("b"), nil, nil, []string{nsC}, false)
784+
groupD := newOperatorGroup(nsD, genName("d"), nil, nil, []string{nsD, nsE}, false)
785785
for _, group := range []*v1alpha2.OperatorGroup{groupA, groupB, groupD} {
786786
_, err := crc.OperatorsV1alpha2().OperatorGroups(group.GetNamespace()).Create(group)
787787
require.NoError(t, err)
@@ -995,9 +995,9 @@ func TestStaticProviderOperatorGroup(t *testing.T) {
995995
require.NoError(t, err)
996996

997997
// Create OperatorGroups
998-
groupA := newOperatorGroup(nsA, genName("a"), map[string]string{v1alpha2.OperatorGroupProvidedAPIsAnnotationKey: kvgA}, metav1.LabelSelector{}, []string{nsD}, true)
999-
groupB := newOperatorGroup(nsB, genName("b"), nil, metav1.LabelSelector{}, nil, false)
1000-
groupC := newOperatorGroup(nsC, genName("d"), nil, metav1.LabelSelector{}, []string{nsC}, false)
998+
groupA := newOperatorGroup(nsA, genName("a"), map[string]string{v1alpha2.OperatorGroupProvidedAPIsAnnotationKey: kvgA}, nil, []string{nsD}, true)
999+
groupB := newOperatorGroup(nsB, genName("b"), nil, nil, nil, false)
1000+
groupC := newOperatorGroup(nsC, genName("d"), nil, nil, []string{nsC}, false)
10011001
for _, group := range []*v1alpha2.OperatorGroup{groupA, groupB, groupC} {
10021002
_, err := crc.OperatorsV1alpha2().OperatorGroups(group.GetNamespace()).Create(group)
10031003
require.NoError(t, err)

0 commit comments

Comments
 (0)