github.com/argoproj/argo-cd/v3@v3.2.1/applicationset/status/resource_status.go (about) 1 package status 2 3 import ( 4 argov1alpha1 "github.com/argoproj/argo-cd/v3/pkg/apis/application/v1alpha1" 5 ) 6 7 func BuildResourceStatus(statusMap map[string]argov1alpha1.ResourceStatus, apps []argov1alpha1.Application) map[string]argov1alpha1.ResourceStatus { 8 appMap := map[string]argov1alpha1.Application{} 9 for _, app := range apps { 10 appMap[app.Name] = app 11 12 gvk := app.GroupVersionKind() 13 var status argov1alpha1.ResourceStatus 14 status.Group = gvk.Group 15 status.Version = gvk.Version 16 status.Kind = gvk.Kind 17 status.Name = app.Name 18 status.Namespace = app.Namespace 19 status.Status = app.Status.Sync.Status 20 status.Health = &argov1alpha1.HealthStatus{Status: app.Status.Health.Status} 21 22 statusMap[app.Name] = status 23 } 24 cleanupDeletedApplicationStatuses(statusMap, appMap) 25 26 return statusMap 27 } 28 29 func GetResourceStatusMap(appset *argov1alpha1.ApplicationSet) map[string]argov1alpha1.ResourceStatus { 30 statusMap := map[string]argov1alpha1.ResourceStatus{} 31 for _, status := range appset.Status.Resources { 32 statusMap[status.Name] = status 33 } 34 return statusMap 35 } 36 37 func cleanupDeletedApplicationStatuses(statusMap map[string]argov1alpha1.ResourceStatus, apps map[string]argov1alpha1.Application) { 38 for name := range statusMap { 39 if _, ok := apps[name]; !ok { 40 delete(statusMap, name) 41 } 42 } 43 }