Skip to content

Commit 7c95db8

Browse files
authored
Merge pull request #413 from fluxcd/helmrepository-reconciler
Rewrite `HelmRepositoryReconciler` to new standards
2 parents 04c125f + 4963963 commit 7c95db8

File tree

12 files changed

+965
-681
lines changed

12 files changed

+965
-681
lines changed

api/v1beta1/helmrepository_types.go

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

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

@@ -107,47 +105,6 @@ const (
107105
IndexationSucceededReason string = "IndexationSucceed"
108106
)
109107

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