Skip to content

Commit fa37eea

Browse files
authored
Merge pull request #141 from fluxcd/status-artifact-reset
2 parents b75a1bb + f40a421 commit fa37eea

File tree

8 files changed

+55
-15
lines changed

8 files changed

+55
-15
lines changed

Makefile

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ all: manager
1414

1515
# Run tests
1616
test: generate fmt vet manifests api-docs
17-
find . -maxdepth 2 -type f -name 'go.mod' -execdir go test ./... -coverprofile cover.out \;
17+
go test ./... -coverprofile cover.out
18+
cd api; go test ./... -coverprofile cover.out
1819

1920
# Build manager binary
2021
manager: generate fmt vet
@@ -55,11 +56,13 @@ api-docs: gen-crd-api-reference-docs
5556

5657
# Run go fmt against code
5758
fmt:
58-
find . -maxdepth 2 -type f -name 'go.mod' -execdir go fmt ./... \;
59+
go fmt ./...
60+
cd api; go fmt ./...
5961

6062
# Run go vet against code
6163
vet:
62-
find . -maxdepth 2 -type f -name 'go.mod' -execdir go vet ./... \;
64+
go vet ./...
65+
cd api; go vet ./...
6366

6467
# Generate code
6568
generate: controller-gen

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)