Skip to content

Commit a7bf911

Browse files
committed
fix(affinity): supplement affinity and toleration spec
1 parent 241a330 commit a7bf911

File tree

3 files changed

+72
-11
lines changed

3 files changed

+72
-11
lines changed

internal/dashboard/business/oceanbase/obcluster.go

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -205,10 +205,27 @@ func buildOBClusterTopologyResp(ctx context.Context, obcluster *v1alpha1.OBClust
205205
zoneAffinity := obzone.Spec.Topology.Affinity
206206
switch {
207207
case zoneAffinity.NodeAffinity != nil:
208-
for _, term := range zoneAffinity.NodeAffinity.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms {
209-
for _, req := range term.MatchExpressions {
208+
zn := zoneAffinity.NodeAffinity
209+
if zn.RequiredDuringSchedulingIgnoredDuringExecution != nil {
210+
for _, term := range zn.RequiredDuringSchedulingIgnoredDuringExecution.NodeSelectorTerms {
211+
for _, req := range term.MatchExpressions {
212+
affinities = append(affinities, modelcommon.AffinitySpec{
213+
Type: modelcommon.NodeAffinityType,
214+
SelectorExpression: modelcommon.SelectorExpression{
215+
Key: req.Key,
216+
Operator: string(req.Operator),
217+
Values: req.Values,
218+
},
219+
})
220+
}
221+
}
222+
}
223+
for _, term := range zn.PreferredDuringSchedulingIgnoredDuringExecution {
224+
for _, req := range term.Preference.MatchExpressions {
210225
affinities = append(affinities, modelcommon.AffinitySpec{
211-
Type: modelcommon.NodeAffinityType,
226+
Type: modelcommon.NodeAffinityType,
227+
Weight: term.Weight,
228+
Preferred: true,
212229
SelectorExpression: modelcommon.SelectorExpression{
213230
Key: req.Key,
214231
Operator: string(req.Operator),
@@ -218,7 +235,8 @@ func buildOBClusterTopologyResp(ctx context.Context, obcluster *v1alpha1.OBClust
218235
}
219236
}
220237
case zoneAffinity.PodAffinity != nil:
221-
for _, term := range zoneAffinity.PodAffinity.RequiredDuringSchedulingIgnoredDuringExecution {
238+
zp := zoneAffinity.PodAffinity
239+
for _, term := range zp.RequiredDuringSchedulingIgnoredDuringExecution {
222240
for _, req := range term.LabelSelector.MatchExpressions {
223241
affinities = append(affinities, modelcommon.AffinitySpec{
224242
Type: modelcommon.PodAffinityType,
@@ -230,8 +248,23 @@ func buildOBClusterTopologyResp(ctx context.Context, obcluster *v1alpha1.OBClust
230248
})
231249
}
232250
}
251+
for _, term := range zp.PreferredDuringSchedulingIgnoredDuringExecution {
252+
for _, req := range term.PodAffinityTerm.LabelSelector.MatchExpressions {
253+
affinities = append(affinities, modelcommon.AffinitySpec{
254+
Type: modelcommon.PodAffinityType,
255+
Weight: term.Weight,
256+
Preferred: true,
257+
SelectorExpression: modelcommon.SelectorExpression{
258+
Key: req.Key,
259+
Operator: string(req.Operator),
260+
Values: req.Values,
261+
},
262+
})
263+
}
264+
}
233265
case zoneAffinity.PodAntiAffinity != nil:
234-
for _, term := range zoneAffinity.PodAntiAffinity.RequiredDuringSchedulingIgnoredDuringExecution {
266+
zpa := zoneAffinity.PodAntiAffinity
267+
for _, term := range zpa.RequiredDuringSchedulingIgnoredDuringExecution {
235268
for _, req := range term.LabelSelector.MatchExpressions {
236269
affinities = append(affinities, modelcommon.AffinitySpec{
237270
Type: modelcommon.PodAntiAffinityType,
@@ -243,14 +276,33 @@ func buildOBClusterTopologyResp(ctx context.Context, obcluster *v1alpha1.OBClust
243276
})
244277
}
245278
}
279+
for _, term := range zpa.PreferredDuringSchedulingIgnoredDuringExecution {
280+
for _, req := range term.PodAffinityTerm.LabelSelector.MatchExpressions {
281+
affinities = append(affinities, modelcommon.AffinitySpec{
282+
Type: modelcommon.PodAntiAffinityType,
283+
Weight: term.Weight,
284+
Preferred: true,
285+
SelectorExpression: modelcommon.SelectorExpression{
286+
Key: req.Key,
287+
Operator: string(req.Operator),
288+
Values: req.Values,
289+
},
290+
})
291+
}
292+
}
246293
}
247294
}
248295

249-
tolerations := make([]modelcommon.KVPair, 0)
296+
tolerations := make([]modelcommon.TolerationSpec, 0)
250297
for _, toleration := range obzone.Spec.Topology.Tolerations {
251-
tolerations = append(tolerations, modelcommon.KVPair{
252-
Key: toleration.Key,
253-
Value: toleration.Value,
298+
tolerations = append(tolerations, modelcommon.TolerationSpec{
299+
KVPair: modelcommon.KVPair{
300+
Key: toleration.Key,
301+
Value: toleration.Value,
302+
},
303+
Operator: string(toleration.Operator),
304+
Effect: string(toleration.Effect),
305+
TolerationSeconds: toleration.TolerationSeconds,
254306
})
255307
}
256308
respZone := response.OBZone{

internal/dashboard/model/common/common.go

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@ type AffinityType string
3838
type AffinitySpec struct {
3939
SelectorExpression `json:",inline"`
4040
Type AffinityType `json:"type"`
41+
Weight int32 `json:"weight,omitempty"`
42+
Preferred bool `json:"preferred,omitempty"`
43+
}
44+
45+
type TolerationSpec struct {
46+
KVPair `json:",inline"`
47+
Operator string `json:"operator"`
48+
Effect string `json:"effect"`
49+
TolerationSeconds *int64 `json:"tolerationSeconds,omitempty"`
4150
}
4251

4352
type ClusterMode string

internal/dashboard/model/response/obcluster.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ type OBZone struct {
4141
OBServers []OBServer `json:"observers,omitempty"`
4242
NodeSelector []common.KVPair `json:"nodeSelector,omitempty"`
4343

44-
Tolerations []common.KVPair `json:"tolerations,omitempty"`
45-
Affinities []common.AffinitySpec `json:"affinities,omitempty"`
44+
Tolerations []common.TolerationSpec `json:"tolerations,omitempty"`
45+
Affinities []common.AffinitySpec `json:"affinities,omitempty"`
4646
}
4747

4848
type OBMetrics struct {

0 commit comments

Comments
 (0)