Skip to content

Commit db1b82c

Browse files
authored
fix/making tofu controller optional (#126)
* fix: making tofu-controller optional * Reducing log spam
1 parent 9e3ad3e commit db1b82c

File tree

2 files changed

+61
-31
lines changed

2 files changed

+61
-31
lines changed

deploy/k8s/rbac.yaml

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ rules:
3030
- source.toolkit.fluxcd.io
3131
- kustomize.toolkit.fluxcd.io
3232
- helm.toolkit.fluxcd.io
33+
- infra.contrib.fluxcd.io
3334
resources:
3435
- gitrepositories
3536
- ocirepositories
@@ -38,6 +39,7 @@ rules:
3839
- helmcharts
3940
- kustomizations
4041
- helmreleases
42+
- terraforms
4143
verbs:
4244
- get
4345
- watch

pkg/flux/flux.go

+59-31
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ var (
6363
}
6464

6565
helmReleaseGVR = schema.GroupVersionResource{
66+
Group: "helm.toolkit.fluxcd.io",
67+
Version: "v2",
68+
Resource: "helmreleases",
69+
}
70+
71+
helmReleaseGVRV2beta2 = schema.GroupVersionResource{
6672
Group: "helm.toolkit.fluxcd.io",
6773
Version: "v2beta2",
6874
Resource: "helmreleases",
@@ -75,12 +81,24 @@ var (
7581
}
7682

7783
helmRepositoryGVR = schema.GroupVersionResource{
84+
Group: "source.toolkit.fluxcd.io",
85+
Version: "v1",
86+
Resource: "helmrepositories",
87+
}
88+
89+
helmRepositoryGVRv1beta2 = schema.GroupVersionResource{
7890
Group: "source.toolkit.fluxcd.io",
7991
Version: "v1beta2",
8092
Resource: "helmrepositories",
8193
}
8294

8395
helmChartGVR = schema.GroupVersionResource{
96+
Group: "source.toolkit.fluxcd.io",
97+
Version: "v1",
98+
Resource: "helmcharts",
99+
}
100+
101+
helmChartGVRv1beta2 = schema.GroupVersionResource{
84102
Group: "source.toolkit.fluxcd.io",
85103
Version: "v1beta2",
86104
Resource: "helmcharts",
@@ -284,14 +302,24 @@ func helmReleases(dc *dynamic.DynamicClient) ([]helmv2beta2.HelmRelease, error)
284302
List(context.TODO(), metav1.ListOptions{})
285303
if err != nil {
286304
if strings.Contains(err.Error(), "the server could not find the requested resource") {
287-
// let's try the deprecated v2beta1
288-
helmReleases, err = dc.Resource(helmReleaseGVRV2beta1).
305+
// let's try the deprecated v2beta2
306+
helmReleases, err = dc.Resource(helmReleaseGVRV2beta2).
289307
Namespace("").
290308
List(context.TODO(), metav1.ListOptions{})
291309
if err != nil {
292310
if strings.Contains(err.Error(), "the server could not find the requested resource") {
293-
// helm-controller is not mandatory, ignore error
294-
return releases, nil
311+
// let's try the deprecated v2beta1
312+
helmReleases, err = dc.Resource(helmReleaseGVRV2beta1).
313+
Namespace("").
314+
List(context.TODO(), metav1.ListOptions{})
315+
if err != nil {
316+
if strings.Contains(err.Error(), "the server could not find the requested resource") {
317+
// helm-controller is not mandatory, ignore error
318+
return releases, nil
319+
} else {
320+
return nil, err
321+
}
322+
}
295323
} else {
296324
return nil, err
297325
}
@@ -405,7 +433,12 @@ func State(c *kubernetes.Clientset, dc *dynamic.DynamicClient) (*FluxState, erro
405433
Namespace("").
406434
List(context.TODO(), metav1.ListOptions{})
407435
if err != nil {
408-
return nil, err
436+
if strings.Contains(err.Error(), "the server could not find the requested resource") {
437+
// tofu-controller is not mandatory, ignore error
438+
tfResources = &unstructured.UnstructuredList{}
439+
} else {
440+
return nil, err
441+
}
409442
}
410443
for _, t := range tfResources.Items {
411444
unstructured := t.UnstructuredContent()
@@ -449,43 +482,28 @@ func State(c *kubernetes.Clientset, dc *dynamic.DynamicClient) (*FluxState, erro
449482
fluxState.Kustomizations = append(fluxState.Kustomizations, kustomization)
450483
}
451484

452-
helmReleases, err := dc.Resource(helmReleaseGVR).
485+
helmReleases, err := helmReleases(dc)
486+
if err != nil {
487+
return nil, err
488+
}
489+
fluxState.HelmReleases = helmReleases
490+
491+
helmRepositories, err := dc.Resource(helmRepositoryGVR).
453492
Namespace("").
454493
List(context.TODO(), metav1.ListOptions{})
455494
if err != nil {
456495
if strings.Contains(err.Error(), "the server could not find the requested resource") {
457-
// let's try the deprecated v2beta1
458-
helmReleases, err = dc.Resource(helmReleaseGVRV2beta1).
496+
// let's try the deprecated v1beta2
497+
helmRepositories, err = dc.Resource(helmRepositoryGVRv1beta2).
459498
Namespace("").
460499
List(context.TODO(), metav1.ListOptions{})
461500
if err != nil {
462-
if !strings.Contains(err.Error(), "the server could not find the requested resource") {
463-
return nil, err
464-
} else {
465-
// helm-controller is not mandatory, ignore error
466-
helmReleases = &unstructured.UnstructuredList{}
467-
}
501+
return nil, err
468502
}
469503
} else {
470504
return nil, err
471505
}
472506
}
473-
for _, h := range helmReleases.Items {
474-
unstructured := h.UnstructuredContent()
475-
var helmRelease helmv2beta2.HelmRelease
476-
err = runtime.DefaultUnstructuredConverter.FromUnstructured(unstructured, &helmRelease)
477-
if err != nil {
478-
return nil, err
479-
}
480-
fluxState.HelmReleases = append(fluxState.HelmReleases, helmRelease)
481-
}
482-
483-
helmRepositories, err := dc.Resource(helmRepositoryGVR).
484-
Namespace("").
485-
List(context.TODO(), metav1.ListOptions{})
486-
if err != nil {
487-
return nil, err
488-
}
489507
for _, h := range helmRepositories.Items {
490508
unstructured := h.UnstructuredContent()
491509
var helmRepository sourcev1beta2.HelmRepository
@@ -500,7 +518,17 @@ func State(c *kubernetes.Clientset, dc *dynamic.DynamicClient) (*FluxState, erro
500518
Namespace("").
501519
List(context.TODO(), metav1.ListOptions{})
502520
if err != nil {
503-
return nil, err
521+
if strings.Contains(err.Error(), "the server could not find the requested resource") {
522+
// let's try the deprecated v1beta2
523+
helmCharts, err = dc.Resource(helmChartGVRv1beta2).
524+
Namespace("").
525+
List(context.TODO(), metav1.ListOptions{})
526+
if err != nil {
527+
return nil, err
528+
}
529+
} else {
530+
return nil, err
531+
}
504532
}
505533
for _, h := range helmCharts.Items {
506534
unstructured := h.UnstructuredContent()

0 commit comments

Comments
 (0)