Skip to content

Commit 36fb3f0

Browse files
feat: merge self heal logic with oss (#345)
* merge self heal logic with oss * merge self heal logic with oss * merge self heal logic with oss * merge self heal logic with oss
1 parent 55633e5 commit 36fb3f0

File tree

11 files changed

+58
-60
lines changed

11 files changed

+58
-60
lines changed

controller/appcontroller_test.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"context"
55
"encoding/json"
66
"errors"
7-
"os"
87
"testing"
98
"time"
109

@@ -553,7 +552,7 @@ func TestAutoSync(t *testing.T) {
553552
Status: v1alpha1.SyncStatusCodeOutOfSync,
554553
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
555554
}
556-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}})
555+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}}, true)
557556
assert.Nil(t, cond)
558557
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
559558
require.NoError(t, err)
@@ -570,7 +569,7 @@ func TestAutoSyncNotAllowEmpty(t *testing.T) {
570569
Status: v1alpha1.SyncStatusCodeOutOfSync,
571570
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
572571
}
573-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{})
572+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{}, true)
574573
assert.NotNil(t, cond)
575574
}
576575

@@ -583,7 +582,7 @@ func TestAutoSyncAllowEmpty(t *testing.T) {
583582
Status: v1alpha1.SyncStatusCodeOutOfSync,
584583
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
585584
}
586-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{})
585+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{}, false)
587586
assert.Nil(t, cond)
588587
}
589588

@@ -597,7 +596,7 @@ func TestSkipAutoSync(t *testing.T) {
597596
Status: v1alpha1.SyncStatusCodeOutOfSync,
598597
Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
599598
}
600-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{})
599+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{}, false)
601600
assert.Nil(t, cond)
602601
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
603602
require.NoError(t, err)
@@ -612,7 +611,7 @@ func TestSkipAutoSync(t *testing.T) {
612611
Status: v1alpha1.SyncStatusCodeSynced,
613612
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
614613
}
615-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{})
614+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{}, false)
616615
assert.Nil(t, cond)
617616
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
618617
require.NoError(t, err)
@@ -628,7 +627,7 @@ func TestSkipAutoSync(t *testing.T) {
628627
Status: v1alpha1.SyncStatusCodeOutOfSync,
629628
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
630629
}
631-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{})
630+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{}, false)
632631
assert.Nil(t, cond)
633632
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
634633
require.NoError(t, err)
@@ -645,7 +644,7 @@ func TestSkipAutoSync(t *testing.T) {
645644
Status: v1alpha1.SyncStatusCodeOutOfSync,
646645
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
647646
}
648-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{})
647+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{}, false)
649648
assert.Nil(t, cond)
650649
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
651650
require.NoError(t, err)
@@ -671,7 +670,7 @@ func TestSkipAutoSync(t *testing.T) {
671670
Status: v1alpha1.SyncStatusCodeOutOfSync,
672671
Revision: "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
673672
}
674-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}})
673+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}}, false)
675674
assert.NotNil(t, cond)
676675
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
677676
require.NoError(t, err)
@@ -687,7 +686,7 @@ func TestSkipAutoSync(t *testing.T) {
687686
}
688687
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{
689688
{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync, RequiresPruning: true},
690-
})
689+
}, false)
691690
assert.Nil(t, cond)
692691
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
693692
require.NoError(t, err)
@@ -723,7 +722,7 @@ func TestAutoSyncIndicateError(t *testing.T) {
723722
Source: *app.Spec.Source.DeepCopy(),
724723
},
725724
}
726-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}})
725+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}}, false)
727726
assert.NotNil(t, cond)
728727
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
729728
require.NoError(t, err)
@@ -766,7 +765,7 @@ func TestAutoSyncParameterOverrides(t *testing.T) {
766765
Revision: "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
767766
},
768767
}
769-
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}})
768+
cond, _ := ctrl.autoSync(app, &syncStatus, []v1alpha1.ResourceStatus{{Name: "guestbook", Kind: kube.DeploymentKind, Status: v1alpha1.SyncStatusCodeOutOfSync}}, false)
770769
assert.Nil(t, cond)
771770
app, err := ctrl.applicationClientset.ArgoprojV1alpha1().Applications(test.FakeArgoCDNamespace).Get(context.Background(), "my-app", metav1.GetOptions{})
772771
require.NoError(t, err)
@@ -2169,4 +2168,4 @@ func TestAlreadyAttemptSync(t *testing.T) {
21692168
attempted, _ := alreadyAttemptedSync(app, "sha", []string{}, false, true)
21702169
assert.False(t, attempted)
21712170
})
2172-
}
2171+
}

controller/state.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ type comparisonResult struct {
8888
timings map[string]time.Duration
8989
diffResultList *diff.DiffResultList
9090
hasPostDeleteHooks bool
91-
revisionUpdated bool
91+
revisionUpdated bool
9292
}
9393

9494
func (res *comparisonResult) GetSyncStatus() *v1alpha1.SyncStatus {
@@ -182,13 +182,13 @@ func (m *appStateManager) GetRepoObjs(app *v1alpha1.Application, sources []v1alp
182182
if err != nil {
183183
return nil, nil, false, fmt.Errorf("failed to get ref sources: %w", err)
184184
}
185-
185+
186186
revisionUpdated := false
187187

188188
atLeastOneRevisionIsNotPossibleToBeUpdated := false
189-
189+
190190
keyManifestGenerateAnnotationVal, keyManifestGenerateAnnotationExists := app.Annotations[v1alpha1.AnnotationKeyManifestGeneratePaths]
191-
191+
192192
for i, source := range sources {
193193
if len(revisions) < len(sources) || revisions[i] == "" {
194194
revisions[i] = source.TargetRevision
@@ -232,7 +232,6 @@ func (m *appStateManager) GetRepoObjs(app *v1alpha1.Application, sources []v1alp
232232
RefSources: refSources,
233233
HasMultipleSources: app.Spec.HasMultipleSources(),
234234
})
235-
236235
if err != nil {
237236
return nil, nil, false, fmt.Errorf("failed to compare revisions for source %d of %d: %w", i+1, len(sources), err)
238237
}
@@ -244,7 +243,7 @@ func (m *appStateManager) GetRepoObjs(app *v1alpha1.Application, sources []v1alp
244243
if updateRevisionResult.Revision != "" {
245244
revision = updateRevisionResult.Revision
246245
}
247-
} else {
246+
} else {
248247
// revisionUpdated is set to true if at least one revision is not possible to be updated,
249248
atLeastOneRevisionIsNotPossibleToBeUpdated = true
250249
}
@@ -254,7 +253,7 @@ func (m *appStateManager) GetRepoObjs(app *v1alpha1.Application, sources []v1alp
254253
manifestInfo, err := repoClient.GenerateManifest(context.Background(), &apiclient.ManifestRequest{
255254
Repo: repo,
256255
Repos: permittedHelmRepos,
257-
Revision: revisions[i],
256+
Revision: revision,
258257
NoCache: noCache,
259258
NoRevisionCache: noRevisionCache,
260259
AppLabelKey: appLabelKey,
@@ -468,7 +467,7 @@ func (m *appStateManager) CompareAppState(app *v1alpha1.Application, project *v1
468467
targetNsExists := false
469468

470469
var revisionUpdated bool
471-
470+
472471
if len(localManifests) == 0 {
473472
// If the length of revisions is not same as the length of sources,
474473
// we take the revisions from the sources directly for all the sources.
@@ -850,8 +849,8 @@ func (m *appStateManager) CompareAppState(app *v1alpha1.Application, project *v1
850849
Sources: sources,
851850
IgnoreDifferences: app.Spec.IgnoreDifferences,
852851
},
853-
Status: syncCode,
854-
Revisions: manifestRevisions,
852+
Status: syncCode,
853+
Revisions: manifestRevisions,
855854
}
856855
} else {
857856
syncStatus = v1alpha1.SyncStatus{
@@ -860,8 +859,8 @@ func (m *appStateManager) CompareAppState(app *v1alpha1.Application, project *v1
860859
Source: app.Spec.GetSource(),
861860
IgnoreDifferences: app.Spec.IgnoreDifferences,
862861
},
863-
Status: syncCode,
864-
Revision: revision,
862+
Status: syncCode,
863+
Revision: revision,
865864
}
866865
}
867866

@@ -890,7 +889,7 @@ func (m *appStateManager) CompareAppState(app *v1alpha1.Application, project *v1
890889
diffConfig: diffConfig,
891890
diffResultList: diffResults,
892891
hasPostDeleteHooks: hasPostDeleteHooks,
893-
revisionUpdated: revisionUpdated,
892+
revisionUpdated: revisionUpdated,
894893
}
895894

896895
if hasMultipleSources {

controller/state_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1781,4 +1781,4 @@ func TestCompareAppStateRevisionUpdatedWithHelmSource(t *testing.T) {
17811781
assert.NotNil(t, compRes)
17821782
assert.NotNil(t, compRes.syncStatus)
17831783
assert.True(t, compRes.revisionUpdated)
1784-
}
1784+
}

manifests/base/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ kind: Kustomization
55
images:
66
- name: quay.io/argoproj/argocd
77
newName: quay.io/codefresh/argocd
8-
newTag: v2.12-2024.10.16-ae9bb9622
8+
newTag: latest
99
resources:
1010
- ./application-controller
1111
- ./dex

manifests/core-install.yaml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21543,7 +21543,7 @@ spec:
2154321543
- argocd
2154421544
- admin
2154521545
- redis-initial-password
21546-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
21546+
image: quay.io/codefresh/argocd:latest
2154721547
imagePullPolicy: IfNotPresent
2154821548
name: secret-init
2154921549
securityContext:
@@ -21796,7 +21796,7 @@ spec:
2179621796
value: /helm-working-dir
2179721797
- name: HELM_DATA_HOME
2179821798
value: /helm-working-dir
21799-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
21799+
image: quay.io/codefresh/argocd:latest
2180021800
imagePullPolicy: Always
2180121801
livenessProbe:
2180221802
failureThreshold: 3
@@ -21848,7 +21848,7 @@ spec:
2184821848
- -n
2184921849
- /usr/local/bin/argocd
2185021850
- /var/run/argocd/argocd-cmp-server
21851-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
21851+
image: quay.io/codefresh/argocd:latest
2185221852
name: copyutil
2185321853
securityContext:
2185421854
allowPrivilegeEscalation: false
@@ -22119,7 +22119,7 @@ spec:
2211922119
key: controller.ignore.normalizer.jq.timeout
2212022120
name: argocd-cmd-params-cm
2212122121
optional: true
22122-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
22122+
image: quay.io/codefresh/argocd:latest
2212322123
imagePullPolicy: Always
2212422124
name: argocd-application-controller
2212522125
ports:

manifests/core-install/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ resources:
1212
images:
1313
- name: quay.io/argoproj/argocd
1414
newName: quay.io/codefresh/argocd
15-
newTag: v2.12-2024.10.16-ae9bb9622
15+
newTag: latest

manifests/ha/base/kustomization.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ patches:
1212
images:
1313
- name: quay.io/argoproj/argocd
1414
newName: quay.io/codefresh/argocd
15-
newTag: v2.12-2024.10.16-ae9bb9622
15+
newTag: latest
1616
resources:
1717
- ../../base/application-controller
1818
- ../../base/applicationset-controller

manifests/ha/install.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22785,7 +22785,7 @@ spec:
2278522785
- -n
2278622786
- /usr/local/bin/argocd
2278722787
- /shared/argocd-dex
22788-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
22788+
image: quay.io/codefresh/argocd:latest
2278922789
imagePullPolicy: Always
2279022790
name: copyutil
2279122791
securityContext:
@@ -22900,7 +22900,7 @@ spec:
2290022900
- argocd
2290122901
- admin
2290222902
- redis-initial-password
22903-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
22903+
image: quay.io/codefresh/argocd:latest
2290422904
imagePullPolicy: IfNotPresent
2290522905
name: secret-init
2290622906
securityContext:
@@ -23183,7 +23183,7 @@ spec:
2318323183
value: /helm-working-dir
2318423184
- name: HELM_DATA_HOME
2318523185
value: /helm-working-dir
23186-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
23186+
image: quay.io/codefresh/argocd:latest
2318723187
imagePullPolicy: Always
2318823188
livenessProbe:
2318923189
failureThreshold: 3
@@ -23235,7 +23235,7 @@ spec:
2323523235
- -n
2323623236
- /usr/local/bin/argocd
2323723237
- /var/run/argocd/argocd-cmp-server
23238-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
23238+
image: quay.io/codefresh/argocd:latest
2323923239
name: copyutil
2324023240
securityContext:
2324123241
allowPrivilegeEscalation: false
@@ -23565,7 +23565,7 @@ spec:
2356523565
key: server.api.content.types
2356623566
name: argocd-cmd-params-cm
2356723567
optional: true
23568-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
23568+
image: quay.io/codefresh/argocd:latest
2356923569
imagePullPolicy: Always
2357023570
livenessProbe:
2357123571
httpGet:
@@ -23864,7 +23864,7 @@ spec:
2386423864
key: controller.ignore.normalizer.jq.timeout
2386523865
name: argocd-cmd-params-cm
2386623866
optional: true
23867-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
23867+
image: quay.io/codefresh/argocd:latest
2386823868
imagePullPolicy: Always
2386923869
name: argocd-application-controller
2387023870
ports:

manifests/ha/namespace-install.yaml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1697,7 +1697,7 @@ spec:
16971697
- -n
16981698
- /usr/local/bin/argocd
16991699
- /shared/argocd-dex
1700-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
1700+
image: quay.io/codefresh/argocd:latest
17011701
imagePullPolicy: Always
17021702
name: copyutil
17031703
securityContext:
@@ -1812,7 +1812,7 @@ spec:
18121812
- argocd
18131813
- admin
18141814
- redis-initial-password
1815-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
1815+
image: quay.io/codefresh/argocd:latest
18161816
imagePullPolicy: IfNotPresent
18171817
name: secret-init
18181818
securityContext:
@@ -2095,7 +2095,7 @@ spec:
20952095
value: /helm-working-dir
20962096
- name: HELM_DATA_HOME
20972097
value: /helm-working-dir
2098-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
2098+
image: quay.io/codefresh/argocd:latest
20992099
imagePullPolicy: Always
21002100
livenessProbe:
21012101
failureThreshold: 3
@@ -2147,7 +2147,7 @@ spec:
21472147
- -n
21482148
- /usr/local/bin/argocd
21492149
- /var/run/argocd/argocd-cmp-server
2150-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
2150+
image: quay.io/codefresh/argocd:latest
21512151
name: copyutil
21522152
securityContext:
21532153
allowPrivilegeEscalation: false
@@ -2477,7 +2477,7 @@ spec:
24772477
key: server.api.content.types
24782478
name: argocd-cmd-params-cm
24792479
optional: true
2480-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
2480+
image: quay.io/codefresh/argocd:latest
24812481
imagePullPolicy: Always
24822482
livenessProbe:
24832483
httpGet:
@@ -2776,7 +2776,7 @@ spec:
27762776
key: controller.ignore.normalizer.jq.timeout
27772777
name: argocd-cmd-params-cm
27782778
optional: true
2779-
image: quay.io/codefresh/argocd:v2.12-2024.10.16-ae9bb9622
2779+
image: quay.io/codefresh/argocd:latest
27802780
imagePullPolicy: Always
27812781
name: argocd-application-controller
27822782
ports:

0 commit comments

Comments
 (0)