Skip to content

Commit

Permalink
fix(nodes): prevent duplicate taint key-effect pair (#152)
Browse files Browse the repository at this point in the history
  • Loading branch information
nox-404 authored Jan 11, 2024
1 parent 048431f commit e6f8769
Showing 1 changed file with 9 additions and 6 deletions.
15 changes: 9 additions & 6 deletions scaleway/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (
"github.com/scaleway/scaleway-sdk-go/api/instance/v1"
"github.com/scaleway/scaleway-sdk-go/api/lb/v1"
"github.com/scaleway/scaleway-sdk-go/scw"
"golang.org/x/exp/maps"
v1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/fields"
"k8s.io/apimachinery/pkg/util/runtime"
Expand Down Expand Up @@ -201,18 +202,19 @@ func (s *syncController) syncNodeTags(node *v1.Node) error {
patcher := NewNodePatcher(s.clientSet, nodeCopied)

nodeLabels := map[string]string{}
nodeTaints := []v1.Taint{}
// Note: taints must be unique by key and effect pair
nodeTaints := map[string]v1.Taint{}
for _, tag := range server.Server.Tags {
if strings.HasPrefix(tag, labelTaintPrefix) {
key, value, effect := tagTaintParser(tag)
if key == "" {
continue
}
nodeTaints = append(nodeTaints, v1.Taint{
nodeTaints[fmt.Sprintf("%s:%s", key, effect)] = v1.Taint{
Key: key,
Value: value,
Effect: effect,
})
}
} else {
var key string
var value string
Expand Down Expand Up @@ -251,12 +253,13 @@ func (s *syncController) syncNodeTags(node *v1.Node) error {
}

for _, taint := range node.Spec.Taints {
if !strings.HasPrefix(taint.Key, taintsPrefix) {
nodeTaints = append(nodeTaints, taint)
taintUniqueKey := fmt.Sprintf("%s:%s", taint.Key, taint.Effect)
if _, ok := nodeTaints[taintUniqueKey]; !ok && !strings.HasPrefix(taint.Key, taintsPrefix) {
nodeTaints[taintUniqueKey] = taint
}
}

nodeCopied.Spec.Taints = nodeTaints
nodeCopied.Spec.Taints = maps.Values(nodeTaints)
err = patcher.Patch()
if err != nil {
klog.Errorf("error patching service: %v", err)
Expand Down

0 comments on commit e6f8769

Please sign in to comment.