From 470ba504554d1f3db0eb1256b782a4dd649d1900 Mon Sep 17 00:00:00 2001 From: Garrybest Date: Sat, 26 Nov 2022 10:55:16 +0800 Subject: [PATCH] get max weight for a cluster when construct weight list Signed-off-by: Garrybest --- pkg/scheduler/core/assignment_test.go | 41 ++++++++++++++++++++++++ pkg/scheduler/core/division_algorithm.go | 2 +- 2 files changed, 42 insertions(+), 1 deletion(-) diff --git a/pkg/scheduler/core/assignment_test.go b/pkg/scheduler/core/assignment_test.go index abef7d692..f313b9724 100644 --- a/pkg/scheduler/core/assignment_test.go +++ b/pkg/scheduler/core/assignment_test.go @@ -194,6 +194,47 @@ func Test_assignByStaticWeightStrategy(t *testing.T) { }, wantErr: false, }, + { + name: "cluster with multiple weights", + clusters: []*clusterv1alpha1.Cluster{ + helper.NewCluster(ClusterMember1), + helper.NewCluster(ClusterMember2), + }, + weightPreference: &policyv1alpha1.ClusterPreferences{ + StaticWeightList: []policyv1alpha1.StaticClusterWeight{ + { + TargetCluster: policyv1alpha1.ClusterAffinity{ + ClusterNames: []string{ClusterMember1}, + }, + Weight: 1, + }, + { + TargetCluster: policyv1alpha1.ClusterAffinity{ + ClusterNames: []string{ClusterMember2}, + }, + Weight: 1, + }, + { + TargetCluster: policyv1alpha1.ClusterAffinity{ + ClusterNames: []string{ClusterMember1}, + }, + Weight: 2, + }, + }, + }, + replicas: 3, + want: []workv1alpha2.TargetCluster{ + { + Name: ClusterMember1, + Replicas: 2, + }, + { + Name: ClusterMember2, + Replicas: 1, + }, + }, + wantErr: false, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/pkg/scheduler/core/division_algorithm.go b/pkg/scheduler/core/division_algorithm.go index 67298424e..66d1e997d 100644 --- a/pkg/scheduler/core/division_algorithm.go +++ b/pkg/scheduler/core/division_algorithm.go @@ -75,7 +75,7 @@ func getStaticWeightInfoList(clusters []*clusterv1alpha1.Cluster, weightList []p var weight int64 for _, staticWeightRule := range weightList { if util.ClusterMatches(cluster, staticWeightRule.TargetCluster) { - weight += staticWeightRule.Weight + weight = util.MaxInt64(weight, staticWeightRule.Weight) } } if weight > 0 {