Skip to content

Commit c8bb5f3

Browse files
Refactoring predicate filtering for ansible
Signed-off-by: Venkat Ramaraju <[email protected]>
1 parent 46681e3 commit c8bb5f3

File tree

3 files changed

+11
-94
lines changed

3 files changed

+11
-94
lines changed

internal/ansible/controller/controller.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package controller
1717
import (
1818
"fmt"
1919
"os"
20+
"reflect"
2021
"strings"
2122
"time"
2223

@@ -33,7 +34,6 @@ import (
3334

3435
"github.com/operator-framework/operator-sdk/internal/ansible/events"
3536
"github.com/operator-framework/operator-sdk/internal/ansible/handler"
36-
"github.com/operator-framework/operator-sdk/internal/ansible/predicate"
3737
"github.com/operator-framework/operator-sdk/internal/ansible/runner"
3838
)
3939

@@ -103,12 +103,15 @@ func Add(mgr manager.Manager, options Options) *controller.Controller {
103103
predicates := []ctrlpredicate.Predicate{
104104
ctrlpredicate.Or(ctrlpredicate.GenerationChangedPredicate{}, libpredicate.NoGenerationPredicate{}),
105105
}
106-
filterPredicate, err := predicate.NewResourceFilterPredicate(options.Selector)
107-
if err != nil {
108-
log.Error(err, "Error creating resource filter predicate")
109-
os.Exit(1)
106+
107+
if !reflect.ValueOf(options.Selector).IsZero() {
108+
filterPredicate, err := ctrlpredicate.LabelSelectorPredicate(options.Selector)
109+
if err != nil {
110+
log.Error(err, "Unable to create predicate from selector.")
111+
os.Exit(1)
112+
}
113+
predicates = append(predicates, filterPredicate)
110114
}
111-
predicates = append(predicates, filterPredicate)
112115

113116
u := &unstructured.Unstructured{}
114117
u.SetGroupVersionKind(options.GVK)

internal/ansible/predicate/predicate.go

Lines changed: 0 additions & 56 deletions
This file was deleted.

internal/ansible/watches/watches.go

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -85,36 +85,6 @@ var (
8585
ansibleVerbosityDefault = 2
8686
)
8787

88-
// Creates, populates, and returns a LabelSelector object. Used in Unmarshal().
89-
func parseLabelSelector(dls tempLabelSelector) metav1.LabelSelector {
90-
obj := metav1.LabelSelector{}
91-
obj.MatchLabels = dls.MatchLabels
92-
93-
for _, v := range dls.MatchExpressions {
94-
requirement := metav1.LabelSelectorRequirement{
95-
Key: v.Key,
96-
Operator: v.Operator,
97-
Values: v.Values,
98-
}
99-
100-
obj.MatchExpressions = append(obj.MatchExpressions, requirement)
101-
}
102-
103-
return obj
104-
}
105-
106-
// Temporary structs created to store yaml parsing
107-
type tempLabelSelector struct {
108-
MatchLabels map[string]string `yaml:"matchLabels,omitempty"`
109-
MatchExpressions []tempRequirement `json:"matchExpressions,omitempty"`
110-
}
111-
112-
type tempRequirement struct {
113-
Key string `json:"key"`
114-
Operator metav1.LabelSelectorOperator `json:"operator"`
115-
Values []string `json:"values,omitempty"`
116-
}
117-
11888
// Use an alias struct to handle complex types
11989
type alias struct {
12090
Group string `yaml:"group"`
@@ -132,7 +102,7 @@ type alias struct {
132102
MarkUnsafe *bool `yaml:"markUnsafe"`
133103
Blacklist []schema.GroupVersionKind `yaml:"blacklist,omitempty"`
134104
Finalizer *Finalizer `yaml:"finalizer"`
135-
Selector tempLabelSelector `yaml:"selector"`
105+
Selector metav1.LabelSelector `yaml:"selector"`
136106
}
137107

138108
// buildWatch will build Watch based on the values parsed from alias
@@ -201,7 +171,7 @@ func (w *Watch) setValuesFromAlias(tmp alias) error {
201171
return err
202172
}
203173
w.addRolePlaybookPaths(wd)
204-
w.Selector = parseLabelSelector(tmp.Selector)
174+
w.Selector = tmp.Selector
205175

206176
return nil
207177
}

0 commit comments

Comments
 (0)