Skip to content

Commit c07c23c

Browse files
committed
Refactor cyclomatic complexity for fluentbitconfig controller
Signed-off-by: Marco Franssen <marco.franssen@gmail.com>
1 parent 17c80db commit c07c23c

File tree

1 file changed

+38
-74
lines changed

1 file changed

+38
-74
lines changed

controllers/fluentbitconfig_controller.go

Lines changed: 38 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ func (r *FluentBitConfigReconciler) Reconcile(ctx context.Context, req ctrl.Requ
8181
}
8282

8383
for _, fb := range fbs.Items {
84-
8584
var cfgs fluentbitv1alpha2.ClusterFluentBitConfigList
8685
if err := r.List(ctx, &cfgs); err != nil {
8786
if errors.IsNotFound(err) {
@@ -95,54 +94,29 @@ func (r *FluentBitConfigReconciler) Reconcile(ctx context.Context, req ctrl.Requ
9594
if cfg.Name != fb.Spec.FluentBitConfigName {
9695
continue
9796
}
97+
9898
var inputs fluentbitv1alpha2.ClusterInputList
99-
selector, err := metav1.LabelSelectorAsSelector(&cfg.Spec.InputSelector)
100-
if err != nil {
101-
return ctrl.Result{}, err
102-
}
103-
if err = r.List(ctx, &inputs, client.MatchingLabelsSelector{Selector: selector}); err != nil {
99+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.InputSelector, &inputs); err != nil {
104100
return ctrl.Result{}, err
105101
}
106102

107-
// List all filters matching the label selector.
108103
var filters fluentbitv1alpha2.ClusterFilterList
109-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.FilterSelector)
110-
if err != nil {
111-
return ctrl.Result{}, err
112-
}
113-
if err = r.List(ctx, &filters, client.MatchingLabelsSelector{Selector: selector}); err != nil {
104+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.FilterSelector, &filters); err != nil {
114105
return ctrl.Result{}, err
115106
}
116107

117-
// List all outputs matching the label selector.
118108
var outputs fluentbitv1alpha2.ClusterOutputList
119-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.OutputSelector)
120-
if err != nil {
121-
return ctrl.Result{}, err
122-
}
123-
if err = r.List(ctx, &outputs, client.MatchingLabelsSelector{Selector: selector}); err != nil {
109+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.OutputSelector, &outputs); err != nil {
124110
return ctrl.Result{}, err
125111
}
126112

127-
// List all parsers matching the label selector.
128113
var parsers fluentbitv1alpha2.ClusterParserList
129-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.ParserSelector)
130-
if err != nil {
131-
return ctrl.Result{}, err
132-
}
133-
if err = r.List(ctx, &parsers, client.MatchingLabelsSelector{Selector: selector}); err != nil {
114+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.ParserSelector, &parsers); err != nil {
134115
return ctrl.Result{}, err
135116
}
136117

137-
// List all multiline parsers matching the label selector.
138118
var multilineParsers fluentbitv1alpha2.ClusterMultilineParserList
139-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.MultilineParserSelector)
140-
if err != nil {
141-
return ctrl.Result{}, err
142-
}
143-
if err = r.List(
144-
ctx, &multilineParsers, client.MatchingLabelsSelector{Selector: selector},
145-
); err != nil {
119+
if err := listClusterResources(ctx, r.Client, &cfg.Spec.MultilineParserSelector, &multilineParsers); err != nil {
146120
return ctrl.Result{}, err
147121
}
148122

@@ -292,6 +266,32 @@ func (r *FluentBitConfigReconciler) processNamespacedFluentBitCfgs(
292266
return filters, outputs, parsers, clusterParsers, multilineParsers, clusterMultilineParsers, rewriteTagConfigs, nil
293267
}
294268

269+
func listClusterResources[T client.ObjectList](
270+
ctx context.Context, cli client.Client, selector *metav1.LabelSelector, list T,
271+
) error {
272+
sel, err := metav1.LabelSelectorAsSelector(selector)
273+
if err != nil {
274+
return err
275+
}
276+
if err := cli.List(ctx, list, client.MatchingLabelsSelector{Selector: sel}); err != nil {
277+
return err
278+
}
279+
return nil
280+
}
281+
282+
func listNamespacedResources[T client.ObjectList](
283+
ctx context.Context, cli client.Client, list T, namespace string, selector *metav1.LabelSelector,
284+
) error {
285+
sel, err := metav1.LabelSelectorAsSelector(selector)
286+
if err != nil {
287+
return err
288+
}
289+
if err := cli.List(ctx, list, client.InNamespace(namespace), client.MatchingLabelsSelector{Selector: sel}); err != nil {
290+
return err
291+
}
292+
return nil
293+
}
294+
295295
func (r *FluentBitConfigReconciler) ListNamespacedResources(
296296
ctx context.Context, cfg fluentbitv1alpha2.FluentBitConfig,
297297
) (
@@ -306,62 +306,26 @@ func (r *FluentBitConfigReconciler) ListNamespacedResources(
306306
var multipleParsers fluentbitv1alpha2.MultilineParserList
307307
var clusterMultipleParsers fluentbitv1alpha2.ClusterMultilineParserList
308308

309-
selector, err := metav1.LabelSelectorAsSelector(&cfg.Spec.FilterSelector)
310-
if err != nil {
311-
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
312-
}
313-
if err := r.List(
314-
ctx, &filters, client.InNamespace(cfg.Namespace), client.MatchingLabelsSelector{Selector: selector},
315-
); err != nil {
316-
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
317-
}
318-
319-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.OutputSelector)
320-
if err != nil {
321-
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
322-
}
323-
if err := r.List(
324-
ctx, &outputs, client.InNamespace(cfg.Namespace), client.MatchingLabelsSelector{Selector: selector},
325-
); err != nil {
309+
if err := listNamespacedResources(ctx, r.Client, &filters, cfg.Namespace, &cfg.Spec.FilterSelector); err != nil {
326310
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
327311
}
328312

329-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.ParserSelector)
330-
if err != nil {
313+
if err := listNamespacedResources(ctx, r.Client, &outputs, cfg.Namespace, &cfg.Spec.OutputSelector); err != nil {
331314
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
332315
}
333-
if err := r.List(
334-
ctx, &parsers, client.InNamespace(cfg.Namespace), client.MatchingLabelsSelector{Selector: selector},
335-
); err != nil {
316+
if err := listNamespacedResources(ctx, r.Client, &parsers, cfg.Namespace, &cfg.Spec.ParserSelector); err != nil {
336317
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
337318
}
338319

339-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.ClusterParserSelector)
340-
if err != nil {
341-
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
342-
}
343-
if err := r.List(ctx, &clusterParsers, client.MatchingLabelsSelector{Selector: selector}); err != nil {
320+
if err := listNamespacedResources(ctx, r.Client, &clusterParsers, cfg.Namespace, &cfg.Spec.ClusterParserSelector); err != nil {
344321
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
345322
}
346323

347-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.MultilineParserSelector)
348-
if err != nil {
349-
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
350-
}
351-
if err := r.List(
352-
ctx, &multipleParsers, client.InNamespace(cfg.Namespace), client.MatchingLabelsSelector{Selector: selector},
353-
); err != nil {
324+
if err := listNamespacedResources(ctx, r.Client, &multipleParsers, cfg.Namespace, &cfg.Spec.MultilineParserSelector); err != nil {
354325
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
355326
}
356327

357-
selector, err = metav1.LabelSelectorAsSelector(&cfg.Spec.ClusterMultilineParserSelector)
358-
if err != nil {
359-
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
360-
}
361-
if err := r.List(
362-
ctx, &clusterMultipleParsers, client.InNamespace(cfg.Namespace),
363-
client.MatchingLabelsSelector{Selector: selector},
364-
); err != nil {
328+
if err := listNamespacedResources(ctx, r.Client, &clusterMultipleParsers, cfg.Namespace, &cfg.Spec.ClusterMultilineParserSelector); err != nil {
365329
return filters, outputs, parsers, clusterParsers, multipleParsers, clusterMultipleParsers, err
366330
}
367331

0 commit comments

Comments
 (0)