* Move utils packages that are required for gitops engine under engine/pkg/utils package.
Following changes were implemented:
* util/health package is split into two parts: resource health assessement & resource health assessement and moved into engine/pkg/utils
* utils packages moved: Closer and Close method of util package moved into engine/pkg/utils/io package
* packages diff, errors, exec, json, kube and tracing moved into engine/pkg/utils
* Move single cluster caching into engine/kube/cache package
* move sync functionality to engine/kube/sync package
* remove dependency on metrics package from engine/pkg/utils/kube/cache
* move annotation label definitions into engine/pkg/utils/kube/sync
* make sure engine/pkg has no dependencies on other argo-cd packages
* allow importing engine as a go module
* implement a high-level interface that might be consumed by flux
* fix deadlock caused by cluster cache event handler
* ClusterCache should return error if requested group kind not found
* remove obsolete tests
* apply reviewer notes
* extending metrics with syncpolicies and clustername
* extending metrics with syncpolicies and clustername: fixing tests
* extending metrics with syncpolicies and clustername: fixing order in labels
* extending metrics with syncpolicies and clustername: fixing lint issues
For anyone installing an Operator Lifecycle Manager operator, the ArgoCD
UI would show your OperatorGroup and Subscription, but would not detect
the resulting ClusterServiceVersion, and subsequent pods etc, limiting
the value of the UI in viewing overall status of your operator.
The CSV should not technically have an owner reference, so we add a fake
one in similar fashion to the pre-existing code above for endpoints. The
CSV then is linked to it's OperatorGroup via the olm.operatorGroup
annotation. The CSV has no link to it's Subscription or InstallPlan that
I can see. Adding an annotation to this might be something we could
pursue with OLM folks.
* the argocd_app_sync_status and argocd_app_health_status are deprecated in place of additional labels to argocd_app_info
* argocd_app_created_time is deprecated
* deprecated labels can be re-enabled using ARGOCD_LEGACY_CONTROLLER_METRICS
* operation label was added to argocd_app_info to support a guauge of in-progress operations.
* dest_server label was added to k8s related counters to support filtering by cluster
* Only delete resources during app delete if we're permitted to
* Permission checks need to move to a different place
* Add unit tests
* Return map of actually deleted object, so we can test against it
* Better error handling
* Move logic into shouldBeDeleted()