Skip to content

Commit f40a421

Browse files
committed
Conditionally remove artifact from source status
We only want to remove it if it is no longer in storage, otherwise we still want to keep it around till we have a new artifact.
1 parent 0f9a6ff commit f40a421

File tree

7 files changed

+49
-12
lines changed

7 files changed

+49
-12
lines changed

api/v1alpha1/gitrepository_types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,6 @@ const (
133133
func GitRepositoryProgressing(repository GitRepository) GitRepository {
134134
repository.Status.ObservedGeneration = repository.Generation
135135
repository.Status.URL = ""
136-
repository.Status.Artifact = nil
137136
repository.Status.Conditions = []SourceCondition{}
138137
SetGitRepositoryCondition(&repository, ReadyCondition, corev1.ConditionUnknown, ProgressingReason, "reconciliation in progress")
139138
return repository

api/v1alpha1/helmchart_types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,6 @@ const (
102102
func HelmChartProgressing(chart HelmChart) HelmChart {
103103
chart.Status.ObservedGeneration = chart.Generation
104104
chart.Status.URL = ""
105-
chart.Status.Artifact = nil
106105
chart.Status.Conditions = []SourceCondition{}
107106
SetHelmChartCondition(&chart, ReadyCondition, corev1.ConditionUnknown, ProgressingReason, "reconciliation in progress")
108107
return chart

api/v1alpha1/helmrepository_types.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ const (
8787
func HelmRepositoryProgressing(repository HelmRepository) HelmRepository {
8888
repository.Status.ObservedGeneration = repository.Generation
8989
repository.Status.URL = ""
90-
repository.Status.Artifact = nil
9190
repository.Status.Conditions = []SourceCondition{}
9291
SetHelmRepositoryCondition(&repository, ReadyCondition, corev1.ConditionUnknown, ProgressingReason, "reconciliation in progress")
9392
return repository

controllers/gitrepository_controller.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,9 +100,8 @@ func (r *GitRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, erro
100100
}
101101

102102
// set initial status
103-
if repository.Generation != repository.Status.ObservedGeneration ||
104-
repository.GetArtifact() != nil && !r.Storage.ArtifactExist(*repository.GetArtifact()) {
105-
repository = sourcev1.GitRepositoryProgressing(repository)
103+
if resetRepository, ok := r.resetStatus(repository); ok {
104+
repository = resetRepository
106105
if err := r.Status().Update(ctx, &repository); err != nil {
107106
log.Error(err, "unable to update status")
108107
return ctrl.Result{Requeue: true}, err
@@ -274,6 +273,20 @@ func (r *GitRepositoryReconciler) verify(ctx context.Context, publicKeySecret ty
274273
return nil
275274
}
276275

276+
// resetStatus returns a modified v1alpha1.GitRepository and a boolean indicating
277+
// if the status field has been reset.
278+
func (r *GitRepositoryReconciler) resetStatus(repository sourcev1.GitRepository) (sourcev1.GitRepository, bool) {
279+
if repository.GetArtifact() != nil && !r.Storage.ArtifactExist(*repository.GetArtifact()) {
280+
repository = sourcev1.GitRepositoryProgressing(repository)
281+
repository.Status.Artifact = nil
282+
return repository, true
283+
}
284+
if repository.Generation != repository.Status.ObservedGeneration {
285+
return sourcev1.GitRepositoryProgressing(repository), true
286+
}
287+
return repository, false
288+
}
289+
277290
// gc performs a garbage collection on all but current artifacts of
278291
// the given repository.
279292
func (r *GitRepositoryReconciler) gc(repository sourcev1.GitRepository, all bool) error {

controllers/helmchart_controller.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,8 @@ func (r *HelmChartReconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
105105
}
106106

107107
// set initial status
108-
if chart.Generation != chart.Status.ObservedGeneration ||
109-
chart.GetArtifact() != nil && !r.Storage.ArtifactExist(*chart.GetArtifact()) {
110-
chart = sourcev1.HelmChartProgressing(chart)
108+
if resetChart, ok := r.resetStatus(chart); ok {
109+
chart = resetChart
111110
if err := r.Status().Update(ctx, &chart); err != nil {
112111
log.Error(err, "unable to update status")
113112
return ctrl.Result{Requeue: true}, err
@@ -447,6 +446,20 @@ func (r *HelmChartReconciler) getGitRepositoryWithArtifact(ctx context.Context,
447446
return repository, err
448447
}
449448

449+
// resetStatus returns a modified v1alpha1.HelmChart and a boolean indicating
450+
// if the status field has been reset.
451+
func (r *HelmChartReconciler) resetStatus(chart sourcev1.HelmChart) (sourcev1.HelmChart, bool) {
452+
if chart.GetArtifact() != nil && !r.Storage.ArtifactExist(*chart.GetArtifact()) {
453+
chart = sourcev1.HelmChartProgressing(chart)
454+
chart.Status.Artifact = nil
455+
return chart, true
456+
}
457+
if chart.Generation != chart.Status.ObservedGeneration {
458+
return sourcev1.HelmChartProgressing(chart), true
459+
}
460+
return chart, false
461+
}
462+
450463
// gc performs a garbage collection on all but current artifacts of
451464
// the given chart.
452465
func (r *HelmChartReconciler) gc(chart sourcev1.HelmChart, all bool) error {

controllers/helmchart_controller_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,7 @@ var _ = Describe("HelmChartReconciler", func() {
260260
}
261261
return false
262262
}, timeout, interval).Should(BeTrue())
263+
Expect(chart.GetArtifact()).NotTo(BeNil())
263264
Expect(chart.Status.Artifact.Revision).Should(Equal("0.1.1"))
264265
})
265266

controllers/helmrepository_controller.go

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,9 +105,8 @@ func (r *HelmRepositoryReconciler) Reconcile(req ctrl.Request) (ctrl.Result, err
105105
}
106106

107107
// set initial status
108-
if repository.Generation != repository.Status.ObservedGeneration ||
109-
repository.GetArtifact() != nil && !r.Storage.ArtifactExist(*repository.GetArtifact()) {
110-
repository = sourcev1.HelmRepositoryProgressing(repository)
108+
if resetRepository, ok := r.resetStatus(repository); ok {
109+
repository = resetRepository
111110
if err := r.Status().Update(ctx, &repository); err != nil {
112111
log.Error(err, "unable to update status")
113112
return ctrl.Result{Requeue: true}, err
@@ -266,6 +265,20 @@ func (r *HelmRepositoryReconciler) reconcile(ctx context.Context, repository sou
266265
return sourcev1.HelmRepositoryReady(repository, artifact, indexURL, sourcev1.IndexationSucceededReason, message), nil
267266
}
268267

268+
// resetStatus returns a modified v1alpha1.HelmRepository and a boolean indicating
269+
// if the status field has been reset.
270+
func (r *HelmRepositoryReconciler) resetStatus(repository sourcev1.HelmRepository) (sourcev1.HelmRepository, bool) {
271+
if repository.GetArtifact() != nil && !r.Storage.ArtifactExist(*repository.GetArtifact()) {
272+
repository = sourcev1.HelmRepositoryProgressing(repository)
273+
repository.Status.Artifact = nil
274+
return repository, true
275+
}
276+
if repository.Generation != repository.Status.ObservedGeneration {
277+
return sourcev1.HelmRepositoryProgressing(repository), true
278+
}
279+
return repository, false
280+
}
281+
269282
// gc performs a garbage collection on all but current artifacts of
270283
// the given repository.
271284
func (r *HelmRepositoryReconciler) gc(repository sourcev1.HelmRepository, all bool) error {

0 commit comments

Comments
 (0)