Merge pull request #25 from mwielgus/label-fix
Override hostname label when building a template node
This commit is contained in:
commit
6bafa2a940
|
|
@ -18,6 +18,7 @@ package core
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"math/rand"
|
||||
"reflect"
|
||||
"time"
|
||||
|
||||
|
|
@ -26,6 +27,7 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
api "k8s.io/kubernetes/pkg/api"
|
||||
apiv1 "k8s.io/kubernetes/pkg/api/v1"
|
||||
kube_client "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
|
||||
"k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache"
|
||||
|
|
@ -142,7 +144,12 @@ func GetNodeInfosForGroups(nodes []*apiv1.Node, cloudProvider cloudprovider.Clou
|
|||
}
|
||||
id := nodeGroup.Id()
|
||||
if _, found := result[id]; !found {
|
||||
nodeInfo, err := simulator.BuildNodeInfoForNode(node, kubeClient)
|
||||
sanitizedNode, err := sanitizeTemplateNodeLables(node)
|
||||
if err != nil {
|
||||
return map[string]*schedulercache.NodeInfo{}, err
|
||||
}
|
||||
|
||||
nodeInfo, err := simulator.BuildNodeInfoForNode(sanitizedNode, kubeClient)
|
||||
if err != nil {
|
||||
return map[string]*schedulercache.NodeInfo{}, err
|
||||
}
|
||||
|
|
@ -152,6 +159,23 @@ func GetNodeInfosForGroups(nodes []*apiv1.Node, cloudProvider cloudprovider.Clou
|
|||
return result, nil
|
||||
}
|
||||
|
||||
func sanitizeTemplateNodeLables(node *apiv1.Node) (*apiv1.Node, error) {
|
||||
obj, err := api.Scheme.DeepCopy(node)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
newNode := obj.(*apiv1.Node)
|
||||
newNode.Labels = make(map[string]string, len(node.Labels))
|
||||
for k, v := range node.Labels {
|
||||
if k != metav1.LabelHostname {
|
||||
newNode.Labels[k] = v
|
||||
} else {
|
||||
newNode.Labels[k] = fmt.Sprintf("template-node-for-cluster-autoscaler-%d", rand.Int63())
|
||||
}
|
||||
}
|
||||
return newNode, nil
|
||||
}
|
||||
|
||||
// Removes unregisterd nodes if needed. Returns true if anything was removed and error if such occurred.
|
||||
func removeOldUnregisteredNodes(unregisteredNodes []clusterstate.UnregisteredNode, context *AutoscalingContext,
|
||||
currentTime time.Time) (bool, error) {
|
||||
|
|
|
|||
|
|
@ -26,6 +26,7 @@ import (
|
|||
"k8s.io/autoscaler/cluster-autoscaler/simulator"
|
||||
. "k8s.io/autoscaler/cluster-autoscaler/utils/test"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
apiv1 "k8s.io/kubernetes/pkg/api/v1"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
|
@ -104,6 +105,16 @@ func TestRemoveOldUnregisteredNodes(t *testing.T) {
|
|||
assert.Equal(t, "ng1/ng1-2", deletedNode)
|
||||
}
|
||||
|
||||
func testSanitizeLabels(t *testing.T) {
|
||||
node := BuildTestNode("ng1-1", 1000, 1000)
|
||||
node.Labels[metav1.LabelHostname] = "abc"
|
||||
node.Labels["x"] = "y"
|
||||
node, err := sanitizeTemplateNodeLables(node)
|
||||
assert.NoError(t, err)
|
||||
assert.NotEqual(t, node.Labels[metav1.LabelHostname], "abc")
|
||||
assert.Equal(t, node.Labels["x"], "y")
|
||||
}
|
||||
|
||||
func TestRemoveFixNodeTargetSize(t *testing.T) {
|
||||
sizeChanges := make(chan string, 10)
|
||||
now := time.Now()
|
||||
|
|
|
|||
Loading…
Reference in New Issue