From a865c85d05fd98d4c08045c34085d0bb7ffeed7f Mon Sep 17 00:00:00 2001 From: "Jian.Li" <74582607+leejanee@users.noreply.github.com> Date: Thu, 30 Sep 2021 14:24:09 +0800 Subject: [PATCH] Fix: Applied Resources Statistics Error (#2398) * Fix: isSameObjReference * Fix: healthScope --- .../v1alpha2/application/apply.go | 2 ++ .../healthscope/healthscope_controller.go | 27 +++++++++++++------ 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/pkg/controller/core.oam.dev/v1alpha2/application/apply.go b/pkg/controller/core.oam.dev/v1alpha2/application/apply.go index 99da3b858..5ee75aacd 100644 --- a/pkg/controller/core.oam.dev/v1alpha2/application/apply.go +++ b/pkg/controller/core.oam.dev/v1alpha2/application/apply.go @@ -102,6 +102,8 @@ func (h *AppHandler) addAppliedResource(refs ...common.ClusterObjectReference) { func isSameObjReference(ref1, ref2 common.ClusterObjectReference) bool { return ref1.Cluster == ref2.Cluster && ref1.Namespace == ref2.Namespace && + ref1.APIVersion == ref2.APIVersion && + ref1.Kind == ref2.Kind && ref1.Name == ref2.Name } diff --git a/pkg/controller/core.oam.dev/v1alpha2/core/scopes/healthscope/healthscope_controller.go b/pkg/controller/core.oam.dev/v1alpha2/core/scopes/healthscope/healthscope_controller.go index 637eaf165..605056024 100644 --- a/pkg/controller/core.oam.dev/v1alpha2/core/scopes/healthscope/healthscope_controller.go +++ b/pkg/controller/core.oam.dev/v1alpha2/core/scopes/healthscope/healthscope_controller.go @@ -603,14 +603,25 @@ func (r *Reconciler) createWorkloadRefs(ctx context.Context, appRef v1alpha2.App } if application.Status.AppliedResources != nil { - workloads := application.Status.AppliedResources - for _, wl := range workloads { - if wl.Creator == commonapis.WorkflowResourceCreator { - wlRefs = append(wlRefs, WorkloadReference{ - ObjectReference: wl.ObjectReference, - clusterName: wl.Cluster, - envName: decisionsMap[wl.Cluster], - }) + resources := application.Status.AppliedResources + for _, rs := range resources { + if rs.Creator == commonapis.WorkflowResourceCreator { + o := new(unstructured.Unstructured) + o.SetKind(rs.Kind) + o.SetAPIVersion(rs.APIVersion) + if err := r.client.Get(multicluster.ContextWithClusterName(ctx, rs.Cluster), client.ObjectKey{ + Name: rs.Name, + Namespace: rs.Namespace, + }, o); err != nil { + continue + } + if labels := o.GetLabels(); labels != nil && labels[oam.WorkloadTypeLabel] != "" { + wlRefs = append(wlRefs, WorkloadReference{ + ObjectReference: rs.ObjectReference, + clusterName: rs.Cluster, + envName: decisionsMap[rs.Cluster], + }) + } } } }