diff --git a/pkg/resourcetracker/tree.go b/pkg/resourcetracker/tree.go index 2de40c599..87c721616 100644 --- a/pkg/resourcetracker/tree.go +++ b/pkg/resourcetracker/tree.go @@ -85,10 +85,7 @@ func (options *ResourceTreePrintOptions) loadResourceRows(currentRT *v1beta1.Res if mr.Deleted { continue } - rows = append(rows, &resourceRow{ - mr: mr.DeepCopy(), - status: resourceRowStatusUpdated, - }) + rows = append(rows, buildResourceRow(mr, resourceRowStatusUpdated)) } } for _, rt := range historyRT { @@ -100,10 +97,7 @@ func (options *ResourceTreePrintOptions) loadResourceRows(currentRT *v1beta1.Res } } if matchedRow == nil { - rows = append(rows, &resourceRow{ - mr: mr.DeepCopy(), - status: resourceRowStatusOutdated, - }) + rows = append(rows, buildResourceRow(mr, resourceRowStatusOutdated)) } } } @@ -410,3 +404,14 @@ func RetrieveKubeCtlGetMessageGenerator(cfg *rest.Config) (ResourceDetailRetriev return nil }, nil } + +func buildResourceRow(mr v1beta1.ManagedResource, resourceStatus string) *resourceRow { + rr := &resourceRow{ + mr: mr.DeepCopy(), + status: resourceStatus, + } + if rr.mr.Cluster == "" { + rr.mr.Cluster = multicluster.ClusterLocalName + } + return rr +} diff --git a/pkg/resourcetracker/tree_test.go b/pkg/resourcetracker/tree_test.go index ed9cc94ff..d0172e73b 100644 --- a/pkg/resourcetracker/tree_test.go +++ b/pkg/resourcetracker/tree_test.go @@ -22,6 +22,10 @@ import ( "github.com/stretchr/testify/require" "k8s.io/utils/pointer" + + "github.com/oam-dev/kubevela/apis/core.oam.dev/common" + "github.com/oam-dev/kubevela/apis/core.oam.dev/v1beta1" + "github.com/oam-dev/kubevela/pkg/multicluster" ) func TestResourceTreePrintOption_getWidthForDetails(t *testing.T) { @@ -46,3 +50,39 @@ func TestResourceTreePrintOptions_wrapDetails(t *testing.T) { }, options._wrapDetails(detail, 40)) } + +func TestBuildResourceRow(t *testing.T) { + r := require.New(t) + + cases := map[string]struct { + Cluster string + ResourceRowStatus string + ExpectedCluster string + ExpectedResourceRowStatus string + }{ + "localCluster": { + Cluster: "", + ResourceRowStatus: resourceRowStatusUpdated, + ExpectedCluster: multicluster.ClusterLocalName, + ExpectedResourceRowStatus: resourceRowStatusUpdated, + }, + "remoteCluster": { + Cluster: "remoteCluster", + ResourceRowStatus: resourceRowStatusUpdated, + ExpectedCluster: "remoteCluster", + ExpectedResourceRowStatus: resourceRowStatusUpdated, + }, + } + + for name, c := range cases { + mr := v1beta1.ManagedResource{ + ClusterObjectReference: common.ClusterObjectReference{ + Cluster: c.Cluster, + }, + } + rr := buildResourceRow(mr, c.ResourceRowStatus) + r.Equal(c.ExpectedCluster, rr.mr.Cluster, name) + r.Equal(c.ExpectedResourceRowStatus, rr.status, name) + } + +}