Skip to content

Commit 4b88afa

Browse files
event-reporter: changes after pr review
1 parent 9f4fa6b commit 4b88afa

File tree

6 files changed

+316
-18
lines changed

6 files changed

+316
-18
lines changed

event_reporter/reporter/application_event_reporter_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010

1111
"github.com/argoproj/argo-cd/v2/util/db"
1212
"github.com/argoproj/argo-cd/v2/util/settings"
13+
1314
"k8s.io/client-go/kubernetes/fake"
1415

1516
"github.com/aws/smithy-go/ptr"

event_reporter/reporter/event_payload.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -165,10 +165,14 @@ func getResourceSourceRepoUrl(
165165
specCopy.Source = reportedEntityParentApp.app.Status.Sync.ComparedTo.Source.DeepCopy()
166166

167167
if specCopy.HasMultipleSources() {
168-
if rr.appSourceIdx == -1 {
168+
if !rr.appSourceIdxDetected() {
169169
return ""
170170
}
171-
return specCopy.GetSourcePtrByIndex(int(rr.appSourceIdx)).RepoURL
171+
source := specCopy.GetSourcePtrByIndex(int(rr.appSourceIdx))
172+
if source == nil {
173+
return ""
174+
}
175+
return source.RepoURL
172176
}
173177

174178
return specCopy.Source.RepoURL

event_reporter/reporter/types.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,3 +43,7 @@ func (rr *ReportedResource) GetApiVersion() string {
4343

4444
return apiVersion
4545
}
46+
47+
func (rr *ReportedResource) appSourceIdxDetected() bool {
48+
return rr.appSourceIdx >= 0
49+
}

event_reporter/utils/app.go

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package utils
2+
3+
import appv1 "github.com/argoproj/argo-cd/v2/pkg/apis/application/v1alpha1"
4+
5+
type AppRevisionsFieldNames string
6+
7+
var AppRevisionFieldName AppRevisionsFieldNames = "Revision"
8+
var AppRevisionsFieldName AppRevisionsFieldNames = "Revisions"
9+
10+
type AppUtils struct {
11+
App *appv1.Application
12+
}
13+
14+
func (au *AppUtils) operationStateSyncExists(fieldToCheck *AppRevisionsFieldNames) bool {
15+
result := au.App != nil && au.App.Status.OperationState != nil && au.App.Status.OperationState.Operation.Sync != nil
16+
if !result {
17+
return false
18+
}
19+
20+
return revisionsToCheck(RevisionsData{
21+
Revision: au.App.Status.OperationState.Operation.Sync.Revision,
22+
Revisions: au.App.Status.OperationState.Operation.Sync.Revisions,
23+
}, fieldToCheck)
24+
}
25+
26+
func (au *AppUtils) operationSyncExists(fieldToCheck *AppRevisionsFieldNames) bool {
27+
result := au.App != nil && au.App.Operation != nil && au.App.Operation.Sync != nil
28+
if !result {
29+
return false
30+
}
31+
32+
return revisionsToCheck(RevisionsData{
33+
Revision: au.App.Operation.Sync.Revision,
34+
Revisions: au.App.Operation.Sync.Revisions,
35+
}, fieldToCheck)
36+
}
37+
38+
func (au *AppUtils) operationSyncResultExists(fieldToCheck *AppRevisionsFieldNames) bool {
39+
result := au.App != nil && au.App.Status.OperationState != nil && au.App.Status.OperationState.SyncResult != nil
40+
if !result {
41+
return false
42+
}
43+
44+
return revisionsToCheck(RevisionsData{
45+
Revision: au.App.Status.OperationState.SyncResult.Revision,
46+
Revisions: au.App.Status.OperationState.SyncResult.Revisions,
47+
}, fieldToCheck)
48+
}
49+
50+
// expected to return true if fieldToCheck == nil
51+
func revisionsToCheck(obj RevisionsData, fieldToCheck *AppRevisionsFieldNames) bool {
52+
if fieldToCheck == nil {
53+
return true
54+
}
55+
if *fieldToCheck == AppRevisionFieldName {
56+
return obj.Revision != ""
57+
}
58+
59+
if *fieldToCheck == AppRevisionsFieldName {
60+
return obj.Revisions != nil && len(obj.Revisions) > 0
61+
}
62+
return true
63+
}

event_reporter/utils/app_revision.go

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ type RevisionsData struct {
2626
const annotationRevisionKey = "app.meta.revisions-metadata"
2727

2828
func (asrm *AppSyncRevisionsMetadata) GetSyncRevisionAt(idx int) *RevisionWithMetadata {
29-
if asrm == nil || asrm.SyncRevisions == nil {
29+
if asrm == nil || asrm.SyncRevisions == nil || idx < 0 || idx >= len(asrm.SyncRevisions) {
3030
return nil
3131
}
3232
return asrm.SyncRevisions[idx]
@@ -60,12 +60,12 @@ func GetOperationRevision(a *appv1.Application) string {
6060
if a == nil {
6161
return ""
6262
}
63-
63+
au := &AppUtils{App: a}
6464
// this value will be used in case if application hasn't resources , like gitsource
6565
revision := a.Status.Sync.Revision
66-
if a.Status.OperationState != nil && a.Status.OperationState.Operation.Sync != nil && a.Status.OperationState.Operation.Sync.Revision != "" {
66+
if au.operationStateSyncExists(&AppRevisionFieldName) {
6767
revision = a.Status.OperationState.Operation.Sync.Revision
68-
} else if a.Operation != nil && a.Operation.Sync != nil && a.Operation.Sync.Revision != "" {
68+
} else if au.operationSyncExists(&AppRevisionFieldName) {
6969
revision = a.Operation.Sync.Revision
7070
}
7171

@@ -76,51 +76,55 @@ func GetOperationRevisions(a *appv1.Application) []string {
7676
if a == nil {
7777
return nil
7878
}
79+
au := &AppUtils{App: a}
7980

8081
// this value will be used in case if application hasn't resources , like gitsource
8182
revisions := a.Status.Sync.Revisions
82-
if a.Status.OperationState != nil && a.Status.OperationState.Operation.Sync != nil && a.Status.OperationState.Operation.Sync.Revisions != nil && len(a.Status.OperationState.Operation.Sync.Revisions) > 0 {
83+
if au.operationStateSyncExists(&AppRevisionsFieldName) {
8384
revisions = a.Status.OperationState.Operation.Sync.Revisions
84-
} else if a.Operation != nil && a.Operation.Sync != nil && a.Operation.Sync.Revisions != nil && len(a.Operation.Sync.Revisions) > 0 {
85+
} else if au.operationSyncExists(&AppRevisionsFieldName) {
8586
revisions = a.Operation.Sync.Revisions
8687
}
8788

8889
return revisions
8990
}
9091

9192
func GetOperationSyncResultRevision(a *appv1.Application) *string {
92-
if a == nil || a.Status.OperationState == nil || a.Status.OperationState.SyncResult == nil {
93-
return nil
93+
au := &AppUtils{App: a}
94+
if au.operationSyncResultExists(nil) {
95+
return &a.Status.OperationState.SyncResult.Revision
9496
}
9597

96-
return &a.Status.OperationState.SyncResult.Revision
98+
return nil
9799
}
98100

99101
func GetOperationSyncResultRevisions(a *appv1.Application) *[]string {
100-
if a == nil || a.Status.OperationState == nil || a.Status.OperationState.SyncResult == nil {
101-
return nil
102+
au := &AppUtils{App: a}
103+
if au.operationSyncResultExists(nil) {
104+
return &a.Status.OperationState.SyncResult.Revisions
102105
}
103106

104-
return &a.Status.OperationState.SyncResult.Revisions
107+
return nil
105108
}
106109

107110
func GetOperationSyncRevisions(a *appv1.Application) []string {
108111
if a == nil {
109112
return []string{}
110113
}
114+
au := &AppUtils{App: a}
111115

112116
// this value will be used in case if application hasn't resources, like empty gitsource
113117
revisions := getRevisions(RevisionsData{
114118
Revision: a.Status.Sync.Revision,
115119
Revisions: a.Status.Sync.Revisions,
116120
})
117121

118-
if a.Status.OperationState != nil && a.Status.OperationState.Operation.Sync != nil {
122+
if au.operationStateSyncExists(nil) {
119123
revisions = getRevisions(RevisionsData{
120124
Revision: a.Status.OperationState.Operation.Sync.Revision,
121125
Revisions: a.Status.OperationState.Operation.Sync.Revisions,
122126
})
123-
} else if a.Operation != nil && a.Operation.Sync != nil {
127+
} else if au.operationSyncExists(nil) {
124128
revisions = getRevisions(RevisionsData{
125129
Revision: a.Operation.Sync.Revision,
126130
Revisions: a.Operation.Sync.Revisions,
@@ -137,16 +141,17 @@ func GetOperationChangeRevisions(a *appv1.Application) []string {
137141
if a == nil {
138142
return revisions
139143
}
144+
au := &AppUtils{App: a}
140145

141146
// this value will be used in case if application hasn't resources, like empty gitsource
142-
if a.Status.OperationState != nil && a.Status.OperationState.Operation.Sync != nil {
147+
if au.operationStateSyncExists(nil) {
143148
if a.Status.OperationState.Operation.Sync.ChangeRevision != "" || a.Status.OperationState.Operation.Sync.ChangeRevisions != nil {
144149
revisions = getRevisions(RevisionsData{
145150
Revision: a.Status.OperationState.Operation.Sync.ChangeRevision,
146151
Revisions: a.Status.OperationState.Operation.Sync.ChangeRevisions,
147152
})
148153
}
149-
} else if a.Operation != nil && a.Operation.Sync != nil {
154+
} else if au.operationSyncExists(nil) {
150155
if a.Operation.Sync.ChangeRevision != "" || a.Operation.Sync.ChangeRevisions != nil {
151156
revisions = getRevisions(RevisionsData{
152157
Revision: a.Operation.Sync.ChangeRevision,

0 commit comments

Comments
 (0)