Skip to content

Commit 9c8b2aa

Browse files
committed
init
1 parent 1cd2f9c commit 9c8b2aa

File tree

2 files changed

+34
-25
lines changed

2 files changed

+34
-25
lines changed

pkg/controller/scheduling/scheduling_utils.go

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,18 @@ func ApplySchedulingPolicyToPodSpec(podSpec *corev1.PodSpec, schedulingPolicy *a
4444
}
4545

4646
func BuildSchedulingPolicy(cluster *appsv1.Cluster, compSpec *appsv1.ClusterComponentSpec) (*appsv1.SchedulingPolicy, error) {
47-
if cluster.Spec.SchedulingPolicy != nil || (compSpec != nil && compSpec.SchedulingPolicy != nil) {
47+
if cluster.Spec.SchedulingPolicy != nil ||
48+
(compSpec != nil && compSpec.SchedulingPolicy != nil) || hasClusterAffinityOrTolerations() {
4849
return buildSchedulingPolicy(cluster, compSpec)
4950
}
5051
return nil, nil
5152
}
5253

5354
func buildSchedulingPolicy(cluster *appsv1.Cluster, compSpec *appsv1.ClusterComponentSpec) (*appsv1.SchedulingPolicy, error) {
54-
schedulingPolicy := cluster.Spec.SchedulingPolicy.DeepCopy()
55+
schedulingPolicy := &appsv1.SchedulingPolicy{}
56+
if cluster.Spec.SchedulingPolicy != nil {
57+
schedulingPolicy = cluster.Spec.SchedulingPolicy.DeepCopy()
58+
}
5559
if compSpec != nil && compSpec.SchedulingPolicy != nil {
5660
schedulingPolicy = compSpec.SchedulingPolicy.DeepCopy()
5761
}
@@ -61,7 +65,7 @@ func buildSchedulingPolicy(cluster *appsv1.Cluster, compSpec *appsv1.ClusterComp
6165
if err != nil {
6266
return err
6367
}
64-
schedulingPolicy.Affinity = MergeAffinity(schedulingPolicy.Affinity, affinity)
68+
schedulingPolicy.Affinity = mergeAffinity(schedulingPolicy.Affinity, affinity)
6569
return nil
6670
}
6771

@@ -70,7 +74,7 @@ func buildSchedulingPolicy(cluster *appsv1.Cluster, compSpec *appsv1.ClusterComp
7074
if err != nil {
7175
return err
7276
}
73-
intctrlutil.MergeList(&schedulingPolicy.Tolerations, &tolerations, makeCmp[corev1.Toleration]())
77+
intctrlutil.MergeList(&tolerations, &schedulingPolicy.Tolerations, makeCmp[corev1.Toleration]())
7478
return nil
7579
}
7680

@@ -83,25 +87,31 @@ func buildSchedulingPolicy(cluster *appsv1.Cluster, compSpec *appsv1.ClusterComp
8387
return schedulingPolicy, nil
8488
}
8589

86-
// buildClusterWideAffinity builds data plane affinity from global config
90+
func hasClusterAffinityOrTolerations() bool {
91+
return viper.GetString(constant.CfgKeyDataPlaneAffinity) != "" ||
92+
viper.GetString(constant.CfgKeyDataPlaneTolerations) != ""
93+
}
94+
8795
func buildClusterWideAffinity() (*corev1.Affinity, error) {
96+
val := viper.GetString(constant.CfgKeyDataPlaneAffinity)
97+
if val == "" {
98+
return nil, nil
99+
}
88100
affinity := new(corev1.Affinity)
89-
if val := viper.GetString(constant.CfgKeyDataPlaneAffinity); val != "" {
90-
if err := json.Unmarshal([]byte(val), &affinity); err != nil {
91-
return nil, err
92-
}
101+
if err := json.Unmarshal([]byte(val), &affinity); err != nil {
102+
return nil, err
93103
}
94104
return affinity, nil
95105
}
96106

97-
// buildClusterWideTolerations builds data plane tolerations from global config
98107
func buildClusterWideTolerations() ([]corev1.Toleration, error) {
99-
// build data plane tolerations from config
108+
val := viper.GetString(constant.CfgKeyDataPlaneTolerations)
109+
if val == "" {
110+
return nil, nil
111+
}
100112
var tolerations []corev1.Toleration
101-
if val := viper.GetString(constant.CfgKeyDataPlaneTolerations); val != "" {
102-
if err := json.Unmarshal([]byte(val), &tolerations); err != nil {
103-
return nil, err
104-
}
113+
if err := json.Unmarshal([]byte(val), &tolerations); err != nil {
114+
return nil, err
105115
}
106116
return tolerations, nil
107117
}
@@ -114,9 +124,7 @@ func makeCmp[E any]() func(E) func(E) bool {
114124
}
115125
}
116126

117-
// MergeAffinity merges src to dst, return value is deepcopied
118-
// Items in src will overwrite items in dst, if possible.
119-
func MergeAffinity(src, dst *corev1.Affinity) *corev1.Affinity {
127+
func mergeAffinity(src, dst *corev1.Affinity) *corev1.Affinity {
120128
if src == nil {
121129
return dst.DeepCopy()
122130
}
@@ -127,7 +135,7 @@ func MergeAffinity(src, dst *corev1.Affinity) *corev1.Affinity {
127135

128136
rtn := dst.DeepCopy()
129137

130-
// Merge PodAffinity
138+
// merge PodAffinity
131139
if src.PodAffinity != nil {
132140
if rtn.PodAffinity == nil {
133141
rtn.PodAffinity = &corev1.PodAffinity{}
@@ -136,7 +144,7 @@ func MergeAffinity(src, dst *corev1.Affinity) *corev1.Affinity {
136144
intctrlutil.MergeList(&src.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution, &rtn.PodAffinity.PreferredDuringSchedulingIgnoredDuringExecution, makeCmp[corev1.WeightedPodAffinityTerm]())
137145
}
138146

139-
// Merge PodAntiAffinity
147+
// merge PodAntiAffinity
140148
if src.PodAntiAffinity != nil {
141149
if rtn.PodAntiAffinity == nil {
142150
rtn.PodAntiAffinity = &corev1.PodAntiAffinity{}
@@ -145,7 +153,7 @@ func MergeAffinity(src, dst *corev1.Affinity) *corev1.Affinity {
145153
intctrlutil.MergeList(&src.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution, &rtn.PodAntiAffinity.PreferredDuringSchedulingIgnoredDuringExecution, makeCmp[corev1.WeightedPodAffinityTerm]())
146154
}
147155

148-
// Merge NodeAffinity
156+
// merge NodeAffinity
149157
if src.NodeAffinity != nil {
150158
if rtn.NodeAffinity == nil {
151159
rtn.NodeAffinity = &corev1.NodeAffinity{}

pkg/controller/scheduling/scheduling_utils_test.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ package scheduling
2222
import (
2323
. "github.com/onsi/ginkgo/v2"
2424
. "github.com/onsi/gomega"
25+
2526
corev1 "k8s.io/api/core/v1"
2627
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
2728

2829
appsv1 "github.com/apecloud/kubeblocks/apis/apps/v1"
2930
)
3031

31-
var _ = Describe("Scheduling util test", func() {
32+
var _ = Describe("scheduling util test", func() {
3233
Context("mergeAffinity", func() {
3334
It("merge all configs", func() {
3435
affinity1 := &corev1.Affinity{
@@ -189,7 +190,7 @@ var _ = Describe("Scheduling util test", func() {
189190
},
190191
}
191192

192-
rtn := MergeAffinity(affinity1, affinity2)
193+
rtn := mergeAffinity(affinity1, affinity2)
193194

194195
expectMergedAffinity := &corev1.Affinity{
195196
NodeAffinity: &corev1.NodeAffinity{
@@ -362,7 +363,7 @@ var _ = Describe("Scheduling util test", func() {
362363
},
363364
}
364365

365-
rtn := MergeAffinity(affinity1, affinity2)
366+
rtn := mergeAffinity(affinity1, affinity2)
366367

367368
expectMergedAffinity := &corev1.Affinity{
368369
NodeAffinity: &corev1.NodeAffinity{
@@ -501,7 +502,7 @@ var _ = Describe("Scheduling util test", func() {
501502
}
502503
var affinity2 *corev1.Affinity = nil
503504

504-
rtn := MergeAffinity(affinity1, affinity2)
505+
rtn := mergeAffinity(affinity1, affinity2)
505506

506507
expectMergedAffinity := &corev1.Affinity{
507508
NodeAffinity: &corev1.NodeAffinity{

0 commit comments

Comments
 (0)