Skip to content

Commit

Permalink
address first feedback
Browse files Browse the repository at this point in the history
Signed-off-by: Manuel Kieweg <mail@manuelkieweg.de>
  • Loading branch information
mkieweg committed Jun 19, 2024
1 parent 6d65cda commit 719dcd2
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 17 deletions.
24 changes: 7 additions & 17 deletions controller/health.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,27 +16,17 @@ import (
"github.com/argoproj/argo-cd/v2/util/lua"
)

func getLastTransitionTime(statuses []appv1.ResourceStatus, i int) metav1.Time {
if len(statuses) == 0 {
return metav1.Now()
}

lastTransitionTime := statuses[i].Health.LastTransitionTime

if lastTransitionTime.IsZero() {
lastTransitionTime = metav1.Now()
}

return lastTransitionTime
}

// setApplicationHealth updates the health statuses of all resources performed in the comparison
func setApplicationHealth(resources []managedResource, statuses []appv1.ResourceStatus, resourceOverrides map[string]appv1.ResourceOverride, app *appv1.Application, persistResourceHealth bool) (*appv1.HealthStatus, error) {
var savedErr error
var errCount uint

// All statuses have the same timestamp, so we can safely get the first one
lastTransitionTime := getLastTransitionTime(statuses, 0)
lastTransitionTime := app.Status.Health.LastTransitionTime
if lastTransitionTime.IsZero() {
lastTransitionTime = metav1.Now()
log.WithField("application", app.QualifiedName()).Warn("no last transition time for health state set, setting it now")
}

appHealth := appv1.HealthStatus{Status: health.HealthStatusHealthy}
for i, res := range resources {
now := metav1.Now()
Expand Down Expand Up @@ -75,7 +65,7 @@ func setApplicationHealth(resources []managedResource, statuses []appv1.Resource
if persistResourceHealth {
// If the status didn't change, we don't want to update the timestamp
if healthStatus.Status == statuses[i].Health.Status {
now = getLastTransitionTime(statuses, i)
now = lastTransitionTime
}

resHealth := appv1.HealthStatus{Status: healthStatus.Status, Message: healthStatus.Message, LastTransitionTime: now}
Expand Down
1 change: 1 addition & 0 deletions controller/health_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ func TestSetApplicationHealth(t *testing.T) {
resourceStatuses := initStatuses(resources)
// Populate health status
resourceStatuses[0].Health.Status = health.HealthStatusHealthy
app.Status.Health.LastTransitionTime = testTimestamp

healthStatus, err := setApplicationHealth(resources, resourceStatuses, lua.ResourceHealthOverrides{}, app, true)
firstHealthStatusTransitionTime := healthStatus.LastTransitionTime
Expand Down

0 comments on commit 719dcd2

Please sign in to comment.