Skip to content

Commit 37ef4c7

Browse files
committed
Rewrite HelmRepositoryReconciler to new standards
Signed-off-by: Hidde Beydals <hello@hidde.co>
1 parent 19d7f83 commit 37ef4c7

File tree

12 files changed

+911
-681
lines changed

12 files changed

+911
-681
lines changed

api/v1beta1/helmrepository_types.go

Lines changed: 0 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ import (
2020
"time"
2121

2222
"github.com/fluxcd/pkg/apis/meta"
23-
"github.com/fluxcd/pkg/runtime/conditions"
24-
apimeta "k8s.io/apimachinery/pkg/api/meta"
2523
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2624
)
2725

@@ -102,47 +100,6 @@ const (
102100
IndexationSucceededReason string = "IndexationSucceed"
103101
)
104102

105-
// HelmRepositoryProgressing resets the conditions of the HelmRepository to
106-
// metav1.Condition of type meta.ReadyCondition with status 'Unknown' and
107-
// meta.ProgressingReason reason and message. It returns the modified
108-
// HelmRepository.
109-
func HelmRepositoryProgressing(repository HelmRepository) HelmRepository {
110-
repository.Status.ObservedGeneration = repository.Generation
111-
repository.Status.URL = ""
112-
repository.Status.Conditions = []metav1.Condition{}
113-
conditions.MarkUnknown(&repository, meta.ReadyCondition, meta.ProgressingReason, "reconciliation in progress")
114-
return repository
115-
}
116-
117-
// HelmRepositoryReady sets the given Artifact and URL on the HelmRepository and
118-
// sets the meta.ReadyCondition to 'True', with the given reason and message. It
119-
// returns the modified HelmRepository.
120-
func HelmRepositoryReady(repository HelmRepository, artifact Artifact, url, reason, message string) HelmRepository {
121-
repository.Status.Artifact = &artifact
122-
repository.Status.URL = url
123-
conditions.MarkTrue(&repository, meta.ReadyCondition, reason, message)
124-
return repository
125-
}
126-
127-
// HelmRepositoryNotReady sets the meta.ReadyCondition on the given
128-
// HelmRepository to 'False', with the given reason and message. It returns the
129-
// modified HelmRepository.
130-
func HelmRepositoryNotReady(repository HelmRepository, reason, message string) HelmRepository {
131-
conditions.MarkFalse(&repository, meta.ReadyCondition, reason, message)
132-
return repository
133-
}
134-
135-
// HelmRepositoryReadyMessage returns the message of the metav1.Condition of type
136-
// meta.ReadyCondition with status 'True' if present, or an empty string.
137-
func HelmRepositoryReadyMessage(repository HelmRepository) string {
138-
if c := apimeta.FindStatusCondition(repository.Status.Conditions, meta.ReadyCondition); c != nil {
139-
if c.Status == metav1.ConditionTrue {
140-
return c.Message
141-
}
142-
}
143-
return ""
144-
}
145-
146103
// GetConditions returns the status conditions of the object.
147104
func (in HelmRepository) GetConditions() []metav1.Condition {
148105
return in.Status.Conditions

controllers/helmchart_controller.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -307,12 +307,17 @@ func (r *HelmChartReconciler) reconcileFromHelmRepository(ctx context.Context,
307307
if secret, err := r.getHelmRepositorySecret(ctx, &repository); err != nil {
308308
return sourcev1.HelmChartNotReady(chart, sourcev1.AuthenticationFailedReason, err.Error()), err
309309
} else if secret != nil {
310-
opts, cleanup, err := helm.ClientOptionsFromSecret(*secret)
310+
tmpDir, err := os.MkdirTemp("", fmt.Sprintf("%s-%s-source-", chart.Name, chart.Namespace))
311+
if err != nil {
312+
err = fmt.Errorf("failed to create temporary directory for auth: %w", err)
313+
return sourcev1.HelmChartNotReady(chart, sourcev1.AuthenticationFailedReason, err.Error()), err
314+
}
315+
defer os.RemoveAll(tmpDir)
316+
opts, err := helm.ClientOptionsFromSecret(*secret, tmpDir)
311317
if err != nil {
312318
err = fmt.Errorf("auth options error: %w", err)
313319
return sourcev1.HelmChartNotReady(chart, sourcev1.AuthenticationFailedReason, err.Error()), err
314320
}
315-
defer cleanup()
316321
clientOpts = append(clientOpts, opts...)
317322
}
318323

@@ -634,12 +639,17 @@ func (r *HelmChartReconciler) reconcileFromTarballArtifact(ctx context.Context,
634639
if secret, err := r.getHelmRepositorySecret(ctx, repository); err != nil {
635640
return sourcev1.HelmChartNotReady(chart, sourcev1.AuthenticationFailedReason, err.Error()), err
636641
} else if secret != nil {
637-
opts, cleanup, err := helm.ClientOptionsFromSecret(*secret)
642+
tmpDir, err := os.MkdirTemp("", fmt.Sprintf("%s-%s-source-", chart.Name, chart.Namespace))
643+
if err != nil {
644+
err = fmt.Errorf("failed to create temporary directory for auth: %w", err)
645+
return sourcev1.HelmChartNotReady(chart, sourcev1.AuthenticationFailedReason, err.Error()), err
646+
}
647+
defer os.RemoveAll(tmpDir)
648+
opts, err := helm.ClientOptionsFromSecret(*secret, tmpDir)
638649
if err != nil {
639650
err = fmt.Errorf("auth options error: %w", err)
640651
return sourcev1.HelmChartNotReady(chart, sourcev1.AuthenticationFailedReason, err.Error()), err
641652
}
642-
defer cleanup()
643653
clientOpts = append(clientOpts, opts...)
644654
}
645655

0 commit comments

Comments
 (0)