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  }