Merge 16cfe50486 into a9292351c3
This commit is contained in:
commit
3aedfc9929
|
|
@ -204,17 +204,17 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch bool
|
||||
}{{
|
||||
name: "no clustername, namespace, or label selector specified should match any MachineSet",
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, false, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{labelSelector: labels.NewSelector()},
|
||||
shouldMatch: true,
|
||||
}, {
|
||||
name: "no clustername, namespace, or label selector specified should match any MachineDeployment",
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, true, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{labelSelector: labels.NewSelector()},
|
||||
shouldMatch: true,
|
||||
}, {
|
||||
name: "clustername specified does not match MachineSet, namespace matches, no labels specified",
|
||||
testSpec: createTestSpec("default", RandomString(6), RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec("default", RandomString(6), RandomString(6), 1, false, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -223,7 +223,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "clustername specified does not match MachineDeployment, namespace matches, no labels specified",
|
||||
testSpec: createTestSpec("default", RandomString(6), RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec("default", RandomString(6), RandomString(6), 1, true, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -232,7 +232,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "namespace specified does not match MachineSet, clusterName matches, no labels specified",
|
||||
testSpec: createTestSpec(RandomString(6), "foo", RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec(RandomString(6), "foo", RandomString(6), 1, false, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -241,7 +241,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "clustername specified does not match MachineDeployment, namespace matches, no labels specified",
|
||||
testSpec: createTestSpec(RandomString(6), "foo", RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec(RandomString(6), "foo", RandomString(6), 1, true, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -250,7 +250,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "namespace and clusterName matches MachineSet, no labels specified",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -259,7 +259,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "namespace and clusterName matches MachineDeployment, no labels specified",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -268,7 +268,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "namespace and clusterName matches MachineSet, does not match label selector",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -277,7 +277,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "namespace and clusterName matches MachineDeployment, does not match label selector",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil, nil),
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
namespace: "default",
|
||||
|
|
@ -286,7 +286,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "namespace, clusterName, and label selector matches MachineSet",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil, nil),
|
||||
additionalLabels: map[string]string{"color": "green"},
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
|
|
@ -296,7 +296,7 @@ func Test_allowedByAutoDiscoverySpec(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "namespace, clusterName, and label selector matches MachineDeployment",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil, nil),
|
||||
additionalLabels: map[string]string{"color": "green"},
|
||||
autoDiscoveryConfig: &clusterAPIAutoDiscoveryConfig{
|
||||
clusterName: "foo",
|
||||
|
|
|
|||
|
|
@ -73,6 +73,7 @@ type testSpec struct {
|
|||
namespace string
|
||||
nodeCount int
|
||||
rootIsMachineDeployment bool
|
||||
nodeInfo map[string]string
|
||||
}
|
||||
|
||||
const customCAPIGroup = "custom.x-k8s.io"
|
||||
|
|
@ -307,33 +308,33 @@ func mustCreateTestController(t testing.TB, testConfigs ...*testConfig) (*machin
|
|||
}
|
||||
}
|
||||
|
||||
func createMachineSetTestConfig(namespace, clusterName, namePrefix string, nodeCount int, annotations map[string]string, capacity map[string]string) *testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, 1, nodeCount, false, annotations, capacity)...)[0]
|
||||
func createMachineSetTestConfig(namespace, clusterName, namePrefix string, nodeCount int, annotations map[string]string, capacity map[string]string, nodeInfo map[string]string) *testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, 1, nodeCount, false, annotations, capacity, nodeInfo)...)[0]
|
||||
}
|
||||
|
||||
func createMachineSetTestConfigs(namespace, clusterName, namePrefix string, configCount, nodeCount int, annotations map[string]string, capacity map[string]string) []*testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, configCount, nodeCount, false, annotations, capacity)...)
|
||||
func createMachineSetTestConfigs(namespace, clusterName, namePrefix string, configCount, nodeCount int, annotations map[string]string, capacity map[string]string, nodeInfo map[string]string) []*testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, configCount, nodeCount, false, annotations, capacity, nodeInfo)...)
|
||||
}
|
||||
|
||||
func createMachineDeploymentTestConfig(namespace, clusterName, namePrefix string, nodeCount int, annotations map[string]string, capacity map[string]string) *testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, 1, nodeCount, true, annotations, capacity)...)[0]
|
||||
func createMachineDeploymentTestConfig(namespace, clusterName, namePrefix string, nodeCount int, annotations map[string]string, capacity map[string]string, nodeInfo map[string]string) *testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, 1, nodeCount, true, annotations, capacity, nodeInfo)...)[0]
|
||||
}
|
||||
|
||||
func createMachineDeploymentTestConfigs(namespace, clusterName, namePrefix string, configCount, nodeCount int, annotations map[string]string, capacity map[string]string) []*testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, configCount, nodeCount, true, annotations, capacity)...)
|
||||
func createMachineDeploymentTestConfigs(namespace, clusterName, namePrefix string, configCount, nodeCount int, annotations map[string]string, capacity map[string]string, nodeInfo map[string]string) []*testConfig {
|
||||
return createTestConfigs(createTestSpecs(namespace, clusterName, namePrefix, configCount, nodeCount, true, annotations, capacity, nodeInfo)...)
|
||||
}
|
||||
|
||||
func createTestSpecs(namespace, clusterName, namePrefix string, scalableResourceCount, nodeCount int, isMachineDeployment bool, annotations map[string]string, capacity map[string]string) []testSpec {
|
||||
func createTestSpecs(namespace, clusterName, namePrefix string, scalableResourceCount, nodeCount int, isMachineDeployment bool, annotations map[string]string, capacity map[string]string, nodeInfo map[string]string) []testSpec {
|
||||
var specs []testSpec
|
||||
|
||||
for i := 0; i < scalableResourceCount; i++ {
|
||||
specs = append(specs, createTestSpec(namespace, clusterName, fmt.Sprintf("%s-%d", namePrefix, i), nodeCount, isMachineDeployment, annotations, capacity))
|
||||
specs = append(specs, createTestSpec(namespace, clusterName, fmt.Sprintf("%s-%d", namePrefix, i), nodeCount, isMachineDeployment, annotations, capacity, nodeInfo))
|
||||
}
|
||||
|
||||
return specs
|
||||
}
|
||||
|
||||
func createTestSpec(namespace, clusterName, name string, nodeCount int, isMachineDeployment bool, annotations map[string]string, capacity map[string]string) testSpec {
|
||||
func createTestSpec(namespace, clusterName, name string, nodeCount int, isMachineDeployment bool, annotations map[string]string, capacity map[string]string, nodeInfo map[string]string) testSpec {
|
||||
return testSpec{
|
||||
annotations: annotations,
|
||||
capacity: capacity,
|
||||
|
|
@ -343,6 +344,7 @@ func createTestSpec(namespace, clusterName, name string, nodeCount int, isMachin
|
|||
namespace: namespace,
|
||||
nodeCount: nodeCount,
|
||||
rootIsMachineDeployment: isMachineDeployment,
|
||||
nodeInfo: nodeInfo,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -451,9 +453,7 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
|
|||
Kind: config.machineSet.GetKind(),
|
||||
UID: config.machineSet.GetUID(),
|
||||
}
|
||||
|
||||
if spec.capacity != nil {
|
||||
klog.V(4).Infof("adding capacity to machine template")
|
||||
if spec.capacity != nil || spec.nodeInfo != nil {
|
||||
config.machineTemplate = &unstructured.Unstructured{
|
||||
Object: map[string]interface{}{
|
||||
"apiVersion": "infrastructure.cluster.x-k8s.io/v1beta1",
|
||||
|
|
@ -465,6 +465,10 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
|
|||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
if spec.capacity != nil {
|
||||
klog.V(4).Infof("adding capacity to machine template")
|
||||
|
||||
if err := unstructured.SetNestedStringMap(config.machineTemplate.Object, spec.capacity, "status", "capacity"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
|
@ -472,6 +476,16 @@ func createTestConfigs(specs ...testSpec) []*testConfig {
|
|||
klog.V(4).Infof("not adding capacity")
|
||||
}
|
||||
|
||||
if spec.nodeInfo != nil {
|
||||
klog.V(4).Infof("adding nodeInfo to machine template")
|
||||
|
||||
if err := unstructured.SetNestedStringMap(config.machineTemplate.Object, spec.nodeInfo, "status", "nodeInfo"); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
} else {
|
||||
klog.V(4).Infof("not adding nodeInfo")
|
||||
}
|
||||
|
||||
for j := 0; j < spec.nodeCount; j++ {
|
||||
config.nodes[j], config.machines[j] = makeLinkedNodeAndMachine(j, spec.namespace, spec.clusterName, machineOwner, machineSetLabels)
|
||||
}
|
||||
|
|
@ -694,7 +708,7 @@ func TestControllerFindMachine(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
if tc.name == "" {
|
||||
tc.name = testConfig.machines[0].GetName()
|
||||
}
|
||||
|
|
@ -722,7 +736,7 @@ func TestControllerFindMachineOwner(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -771,7 +785,7 @@ func TestControllerFindMachineByProviderID(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -833,7 +847,7 @@ func TestControllerFindNodeByNodeName(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -933,7 +947,7 @@ func TestControllerListMachinesForScalableResource(t *testing.T) {
|
|||
testConfig1 := createMachineSetTestConfig(namespace, clusterName, RandomString(6), 5, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
// Construct a second set of objects and add the machines,
|
||||
// nodes and the additional machineset to the existing set of
|
||||
|
|
@ -942,7 +956,7 @@ func TestControllerListMachinesForScalableResource(t *testing.T) {
|
|||
testConfig2 := createMachineSetTestConfig(namespace, clusterName, RandomString(6), 5, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
test(t, testConfig1, testConfig2)
|
||||
})
|
||||
|
|
@ -953,7 +967,7 @@ func TestControllerListMachinesForScalableResource(t *testing.T) {
|
|||
testConfig1 := createMachineDeploymentTestConfig(namespace, clusterName, RandomString(6), 5, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
// Construct a second set of objects and add the machines,
|
||||
// nodes, machineset, and the additional machineset to the existing set of
|
||||
|
|
@ -962,7 +976,7 @@ func TestControllerListMachinesForScalableResource(t *testing.T) {
|
|||
testConfig2 := createMachineDeploymentTestConfig(namespace, clusterName, RandomString(6), 5, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
test(t, testConfig1, testConfig2)
|
||||
})
|
||||
|
|
@ -993,7 +1007,7 @@ func TestControllerLookupNodeGroupForNonExistentNode(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
test(t, testConfig)
|
||||
})
|
||||
|
||||
|
|
@ -1001,7 +1015,7 @@ func TestControllerLookupNodeGroupForNonExistentNode(t *testing.T) {
|
|||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
test(t, testConfig)
|
||||
})
|
||||
}
|
||||
|
|
@ -1032,7 +1046,7 @@ func TestControllerNodeGroupForNodeWithMissingMachineOwner(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
test(t, testConfig)
|
||||
})
|
||||
|
||||
|
|
@ -1040,7 +1054,7 @@ func TestControllerNodeGroupForNodeWithMissingMachineOwner(t *testing.T) {
|
|||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
test(t, testConfig)
|
||||
})
|
||||
}
|
||||
|
|
@ -1049,7 +1063,7 @@ func TestControllerNodeGroupForNodeWithMissingSetMachineOwner(t *testing.T) {
|
|||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -1090,7 +1104,7 @@ func TestControllerNodeGroupForNodeWithPositiveScalingBounds(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "1",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
test(t, testConfig)
|
||||
})
|
||||
|
||||
|
|
@ -1098,7 +1112,7 @@ func TestControllerNodeGroupForNodeWithPositiveScalingBounds(t *testing.T) {
|
|||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "1",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
test(t, testConfig)
|
||||
})
|
||||
}
|
||||
|
|
@ -1130,14 +1144,14 @@ func TestControllerNodeGroups(t *testing.T) {
|
|||
assertNodegroupLen(t, controller, 0)
|
||||
|
||||
// Test #2: add 5 machineset-based nodegroups
|
||||
machineSetConfigs := createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 5, 1, annotations, nil)
|
||||
machineSetConfigs := createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 5, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(t, controller, machineSetConfigs...); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
assertNodegroupLen(t, controller, 5)
|
||||
|
||||
// Test #2: add 2 machinedeployment-based nodegroups
|
||||
machineDeploymentConfigs := createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 2, 1, annotations, nil)
|
||||
machineDeploymentConfigs := createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 2, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(t, controller, machineDeploymentConfigs...); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
|
@ -1161,14 +1175,14 @@ func TestControllerNodeGroups(t *testing.T) {
|
|||
}
|
||||
|
||||
// Test #5: 5 machineset with minSize=maxSize results in a five nodegroup
|
||||
machineSetConfigs = createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 5, 1, annotations, nil)
|
||||
machineSetConfigs = createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 5, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(t, controller, machineSetConfigs...); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
assertNodegroupLen(t, controller, 5)
|
||||
|
||||
// Test #6: add 2 machinedeployment with minSize=maxSize
|
||||
machineDeploymentConfigs = createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 2, 1, annotations, nil)
|
||||
machineDeploymentConfigs = createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 2, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(t, controller, machineDeploymentConfigs...); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
|
@ -1180,7 +1194,7 @@ func TestControllerNodeGroups(t *testing.T) {
|
|||
}
|
||||
|
||||
// Test #7: machineset with bad scaling bounds results in an error and no nodegroups
|
||||
machineSetConfigs = createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 5, 1, annotations, nil)
|
||||
machineSetConfigs = createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 5, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(t, controller, machineSetConfigs...); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
|
@ -1189,7 +1203,7 @@ func TestControllerNodeGroups(t *testing.T) {
|
|||
}
|
||||
|
||||
// Test #8: machinedeployment with bad scaling bounds results in an error and no nodegroups
|
||||
machineDeploymentConfigs = createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 2, 1, annotations, nil)
|
||||
machineDeploymentConfigs = createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 2, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(t, controller, machineDeploymentConfigs...); err != nil {
|
||||
t.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
|
@ -1253,13 +1267,13 @@ func TestControllerNodeGroupsNodeCount(t *testing.T) {
|
|||
|
||||
t.Run("MachineSet", func(t *testing.T) {
|
||||
for _, tc := range testCases {
|
||||
test(t, tc, createMachineSetTestConfigs(RandomString(6), RandomString(6), RandomString(6), tc.nodeGroups, tc.nodesPerGroup, annotations, nil))
|
||||
test(t, tc, createMachineSetTestConfigs(RandomString(6), RandomString(6), RandomString(6), tc.nodeGroups, tc.nodesPerGroup, annotations, nil, nil))
|
||||
}
|
||||
})
|
||||
|
||||
t.Run("MachineDeployment", func(t *testing.T) {
|
||||
for _, tc := range testCases {
|
||||
test(t, tc, createMachineDeploymentTestConfigs(RandomString(6), RandomString(6), RandomString(6), tc.nodeGroups, tc.nodesPerGroup, annotations, nil))
|
||||
test(t, tc, createMachineDeploymentTestConfigs(RandomString(6), RandomString(6), RandomString(6), tc.nodeGroups, tc.nodesPerGroup, annotations, nil, nil))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
@ -1268,7 +1282,7 @@ func TestControllerFindMachineFromNodeAnnotation(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -1316,7 +1330,7 @@ func TestControllerMachineSetNodeNamesWithoutLinkage(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 3, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -1365,7 +1379,7 @@ func TestControllerMachineSetNodeNamesUsingProviderID(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 3, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -1404,7 +1418,7 @@ func TestControllerMachineSetNodeNamesUsingStatusNodeRefName(t *testing.T) {
|
|||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 3, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
controller, stop := mustCreateTestController(t, testConfig)
|
||||
defer stop()
|
||||
|
|
@ -1494,7 +1508,7 @@ func TestControllerGetAPIVersionGroupWithMachineDeployments(t *testing.T) {
|
|||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "1",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
t.Setenv(CAPIGroupEnvVar, customCAPIGroup)
|
||||
|
||||
testConfig.machineDeployment.SetAPIVersion(fmt.Sprintf("%s/v1beta1", customCAPIGroup))
|
||||
|
|
@ -1756,7 +1770,7 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
shouldMatch bool
|
||||
}{{
|
||||
name: "autodiscovery specs includes permissive spec that should match any MachineSet",
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, false, nil, nil, nil),
|
||||
autoDiscoverySpecs: []*clusterAPIAutoDiscoveryConfig{
|
||||
{labelSelector: labels.NewSelector()},
|
||||
{clusterName: "foo", namespace: "bar", labelSelector: labels.Nothing()},
|
||||
|
|
@ -1764,7 +1778,7 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "autodiscovery specs includes permissive spec that should match any MachineDeployment",
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec(RandomString(6), RandomString(6), RandomString(6), 1, true, nil, nil, nil),
|
||||
autoDiscoverySpecs: []*clusterAPIAutoDiscoveryConfig{
|
||||
{labelSelector: labels.NewSelector()},
|
||||
{clusterName: "foo", namespace: "bar", labelSelector: labels.Nothing()},
|
||||
|
|
@ -1772,7 +1786,7 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "autodiscovery specs includes a restrictive spec that should match specific MachineSet",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil, nil),
|
||||
additionalLabels: map[string]string{"color": "green"},
|
||||
autoDiscoverySpecs: []*clusterAPIAutoDiscoveryConfig{
|
||||
{clusterName: "foo", namespace: "default", labelSelector: labels.SelectorFromSet(labels.Set{"color": "green"})},
|
||||
|
|
@ -1781,7 +1795,7 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "autodiscovery specs includes a restrictive spec that should match specific MachineDeployment",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil, nil),
|
||||
additionalLabels: map[string]string{"color": "green"},
|
||||
autoDiscoverySpecs: []*clusterAPIAutoDiscoveryConfig{
|
||||
{clusterName: "foo", namespace: "default", labelSelector: labels.SelectorFromSet(labels.Set{"color": "green"})},
|
||||
|
|
@ -1790,7 +1804,7 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
shouldMatch: true,
|
||||
}, {
|
||||
name: "autodiscovery specs does not include any specs that should match specific MachineSet",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, false, nil, nil, nil),
|
||||
additionalLabels: map[string]string{"color": "green"},
|
||||
autoDiscoverySpecs: []*clusterAPIAutoDiscoveryConfig{
|
||||
{clusterName: "test", namespace: "default", labelSelector: labels.SelectorFromSet(labels.Set{"color": "blue"})},
|
||||
|
|
@ -1799,7 +1813,7 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
shouldMatch: false,
|
||||
}, {
|
||||
name: "autodiscovery specs does not include any specs that should match specific MachineDeployment",
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil),
|
||||
testSpec: createTestSpec("default", "foo", RandomString(6), 1, true, nil, nil, nil),
|
||||
additionalLabels: map[string]string{"color": "green"},
|
||||
autoDiscoverySpecs: []*clusterAPIAutoDiscoveryConfig{
|
||||
{clusterName: "test", namespace: "default", labelSelector: labels.SelectorFromSet(labels.Set{"color": "blue"})},
|
||||
|
|
@ -1829,9 +1843,9 @@ func Test_machineController_allowedByAutoDiscoverySpecs(t *testing.T) {
|
|||
}
|
||||
|
||||
func Test_machineController_listScalableResources(t *testing.T) {
|
||||
uniqueMDConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, nil, nil)
|
||||
uniqueMDConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, nil, nil, nil)
|
||||
|
||||
mdTestConfigs := createMachineDeploymentTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, nil, nil)
|
||||
mdTestConfigs := createMachineDeploymentTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, nil, nil, nil)
|
||||
mdTestConfigs = append(mdTestConfigs, uniqueMDConfig)
|
||||
|
||||
allMachineDeployments := make([]*unstructured.Unstructured, 0, len(mdTestConfigs))
|
||||
|
|
@ -1839,9 +1853,9 @@ func Test_machineController_listScalableResources(t *testing.T) {
|
|||
allMachineDeployments = append(allMachineDeployments, mdTestConfigs[i].machineDeployment)
|
||||
}
|
||||
|
||||
uniqueMSConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, nil, nil)
|
||||
uniqueMSConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, nil, nil, nil)
|
||||
|
||||
msTestConfigs := createMachineSetTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, nil, nil)
|
||||
msTestConfigs := createMachineSetTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, nil, nil, nil)
|
||||
msTestConfigs = append(msTestConfigs, uniqueMSConfig)
|
||||
|
||||
allMachineSets := make([]*unstructured.Unstructured, 0, len(msTestConfigs))
|
||||
|
|
@ -1944,23 +1958,23 @@ func Test_machineController_nodeGroupForNode(t *testing.T) {
|
|||
uniqueMDConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
mdTestConfigs := createMachineDeploymentTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
mdTestConfigs = append(mdTestConfigs, uniqueMDConfig)
|
||||
|
||||
uniqueMSConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
msTestConfigs := createMachineSetTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
msTestConfigs = append(msTestConfigs, uniqueMSConfig)
|
||||
|
||||
allTestConfigs := append(mdTestConfigs, msTestConfigs...)
|
||||
|
|
@ -2040,12 +2054,12 @@ func Test_machineController_nodeGroups(t *testing.T) {
|
|||
uniqueMDConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
mdTestConfigs := createMachineDeploymentTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
mdTestConfigs = append(mdTestConfigs, uniqueMDConfig)
|
||||
|
||||
allMachineDeployments := make([]*unstructured.Unstructured, 0, len(mdTestConfigs))
|
||||
|
|
@ -2056,12 +2070,12 @@ func Test_machineController_nodeGroups(t *testing.T) {
|
|||
uniqueMSConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
|
||||
msTestConfigs := createMachineSetTestConfigs(RandomString(6), RandomString(6), RandomString(6), 5, 1, map[string]string{
|
||||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}, nil)
|
||||
}, nil, nil)
|
||||
msTestConfigs = append(msTestConfigs, uniqueMSConfig)
|
||||
|
||||
allMachineSets := make([]*unstructured.Unstructured, 0, len(msTestConfigs))
|
||||
|
|
|
|||
|
|
@ -361,12 +361,17 @@ func (ng *nodegroup) TemplateNodeInfo() (*framework.NodeInfo, error) {
|
|||
},
|
||||
}
|
||||
|
||||
nsi := ng.scalableResource.InstanceSystemInfo()
|
||||
if nsi != nil {
|
||||
node.Status.NodeInfo = *nsi
|
||||
}
|
||||
|
||||
node.Status.Capacity = capacity
|
||||
node.Status.Allocatable = capacity
|
||||
node.Status.Conditions = cloudprovider.BuildReadyConditions()
|
||||
node.Spec.Taints = ng.scalableResource.Taints()
|
||||
|
||||
node.Labels, err = ng.buildTemplateLabels(nodeName)
|
||||
node.Labels, err = ng.buildTemplateLabels(nodeName, nsi)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -380,8 +385,19 @@ func (ng *nodegroup) TemplateNodeInfo() (*framework.NodeInfo, error) {
|
|||
return nodeInfo, nil
|
||||
}
|
||||
|
||||
func (ng *nodegroup) buildTemplateLabels(nodeName string) (map[string]string, error) {
|
||||
labels := cloudprovider.JoinStringMaps(buildGenericLabels(nodeName), ng.scalableResource.Labels())
|
||||
func (ng *nodegroup) buildTemplateLabels(nodeName string, nsi *corev1.NodeSystemInfo) (map[string]string, error) {
|
||||
nsiLabels := make(map[string]string)
|
||||
if nsi != nil {
|
||||
nsiLabels[corev1.LabelArchStable] = nsi.Architecture
|
||||
nsiLabels[corev1.LabelOSStable] = nsi.OperatingSystem
|
||||
}
|
||||
|
||||
// The order of priority is:
|
||||
// - Labels set in existing nodes for not-autoscale-from-zero cases
|
||||
// - Labels set in the labels capacity annotation of machine template, machine set, and machine deployment.
|
||||
// - Values in the status.nodeSystemInfo of MachineTemplates
|
||||
// - Generic/default labels set in the environment of the cluster autoscaler
|
||||
labels := cloudprovider.JoinStringMaps(buildGenericLabels(nodeName), nsiLabels, ng.scalableResource.Labels())
|
||||
|
||||
nodes, err := ng.Nodes()
|
||||
if err != nil {
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ func TestNodeGroupNewNodeGroupConstructor(t *testing.T) {
|
|||
t.Run("MachineSet", func(t *testing.T) {
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
test(t, tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), tc.nodeCount, tc.annotations, nil))
|
||||
test(t, tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), tc.nodeCount, tc.annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -222,7 +222,7 @@ func TestNodeGroupNewNodeGroupConstructor(t *testing.T) {
|
|||
t.Run("MachineDeployment", func(t *testing.T) {
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
test(t, tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), tc.nodeCount, tc.annotations, nil))
|
||||
test(t, tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), tc.nodeCount, tc.annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -309,7 +309,7 @@ func TestNodeGroupIncreaseSizeErrors(t *testing.T) {
|
|||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -321,7 +321,7 @@ func TestNodeGroupIncreaseSizeErrors(t *testing.T) {
|
|||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -390,7 +390,7 @@ func TestNodeGroupIncreaseSize(t *testing.T) {
|
|||
expected: 4,
|
||||
delta: 1,
|
||||
}
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
|
||||
t.Run("MachineDeployment", func(t *testing.T) {
|
||||
|
|
@ -400,7 +400,7 @@ func TestNodeGroupIncreaseSize(t *testing.T) {
|
|||
expected: 4,
|
||||
delta: 1,
|
||||
}
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -689,13 +689,13 @@ func TestNodeGroupDecreaseTargetSize(t *testing.T) {
|
|||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
|
||||
for _, tc := range testCases {
|
||||
t.Run(tc.description, func(t *testing.T) {
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
@ -781,7 +781,7 @@ func TestNodeGroupDecreaseSizeErrors(t *testing.T) {
|
|||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -793,7 +793,7 @@ func TestNodeGroupDecreaseSizeErrors(t *testing.T) {
|
|||
nodeGroupMinSizeAnnotationKey: "1",
|
||||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
}
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil))
|
||||
test(t, &tc, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), int(tc.initial), annotations, nil, nil))
|
||||
})
|
||||
}
|
||||
})
|
||||
|
|
@ -883,6 +883,7 @@ func TestNodeGroupDeleteNodes(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -900,6 +901,7 @@ func TestNodeGroupDeleteNodes(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -972,16 +974,16 @@ func TestNodeGroupMachineSetDeleteNodesWithMismatchedNodes(t *testing.T) {
|
|||
t.Run("MachineSet", func(t *testing.T) {
|
||||
namespace := RandomString(6)
|
||||
clusterName := RandomString(6)
|
||||
testConfig0 := createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil)
|
||||
testConfig1 := createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil)
|
||||
testConfig0 := createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil, nil)
|
||||
testConfig1 := createMachineSetTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil, nil)
|
||||
test(t, 2, append(testConfig0, testConfig1...))
|
||||
})
|
||||
|
||||
t.Run("MachineDeployment", func(t *testing.T) {
|
||||
namespace := RandomString(6)
|
||||
clusterName := RandomString(6)
|
||||
testConfig0 := createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil)
|
||||
testConfig1 := createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil)
|
||||
testConfig0 := createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil, nil)
|
||||
testConfig1 := createMachineDeploymentTestConfigs(namespace, clusterName, RandomString(6), 1, 2, annotations, nil, nil)
|
||||
test(t, 2, append(testConfig0, testConfig1...))
|
||||
})
|
||||
}
|
||||
|
|
@ -1163,6 +1165,7 @@ func TestNodeGroupDeleteNodesTwice(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -1180,6 +1183,7 @@ func TestNodeGroupDeleteNodesTwice(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -1315,6 +1319,7 @@ func TestNodeGroupDeleteNodesSequential(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -1332,6 +1337,7 @@ func TestNodeGroupDeleteNodesSequential(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -1418,6 +1424,7 @@ func TestNodeGroupWithFailedMachine(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -1435,6 +1442,7 @@ func TestNodeGroupWithFailedMachine(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -1667,6 +1675,7 @@ func TestNodeGroupTemplateNodeInfo(t *testing.T) {
|
|||
10,
|
||||
cloudprovider.JoinStringMaps(enableScaleAnnotations, tc.nodeGroupAnnotations),
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
tc.config,
|
||||
)
|
||||
|
|
@ -1682,6 +1691,7 @@ func TestNodeGroupTemplateNodeInfo(t *testing.T) {
|
|||
10,
|
||||
cloudprovider.JoinStringMaps(enableScaleAnnotations, tc.nodeGroupAnnotations),
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
tc.config,
|
||||
)
|
||||
|
|
@ -1792,6 +1802,7 @@ func TestNodeGroupGetOptions(t *testing.T) {
|
|||
10,
|
||||
cloudprovider.JoinStringMaps(enableScaleAnnotations, annotations),
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
c.expected,
|
||||
)
|
||||
|
|
@ -1807,6 +1818,7 @@ func TestNodeGroupGetOptions(t *testing.T) {
|
|||
10,
|
||||
cloudprovider.JoinStringMaps(enableScaleAnnotations, annotations),
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
c.expected,
|
||||
)
|
||||
|
|
@ -2009,6 +2021,7 @@ func TestNodeGroupNodesInstancesStatus(t *testing.T) {
|
|||
tc.nodeCount,
|
||||
annotations,
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
@ -2028,6 +2041,7 @@ func TestNodeGroupNodesInstancesStatus(t *testing.T) {
|
|||
tc.nodeCount,
|
||||
annotations,
|
||||
nil,
|
||||
nil,
|
||||
),
|
||||
)
|
||||
})
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ func BenchmarkNodeGroups(b *testing.B) {
|
|||
|
||||
controller, stop := mustCreateTestController(b)
|
||||
defer stop()
|
||||
machineSetConfigs := createMachineSetTestConfigs("namespace", "", RandomString(6), 100, 1, annotations, nil)
|
||||
machineSetConfigs := createMachineSetTestConfigs("namespace", "", RandomString(6), 100, 1, annotations, nil, nil)
|
||||
if err := addTestConfigs(b, controller, machineSetConfigs...); err != nil {
|
||||
b.Fatalf("unexpected error: %v", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,6 +23,7 @@ import (
|
|||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/pkg/errors"
|
||||
|
|
@ -42,6 +43,8 @@ import (
|
|||
type unstructuredScalableResource struct {
|
||||
controller *machineController
|
||||
unstructured *unstructured.Unstructured
|
||||
infraObj *unstructured.Unstructured
|
||||
infraMutex sync.RWMutex
|
||||
maxSize int
|
||||
minSize int
|
||||
autoscalingOptions map[string]string
|
||||
|
|
@ -321,6 +324,17 @@ func (r unstructuredScalableResource) InstanceCapacity() (map[corev1.ResourceNam
|
|||
return capacity, nil
|
||||
}
|
||||
|
||||
// InstanceSystemInfo sets the nodeSystemInfo from the infrastructure reference resource.
|
||||
// If the infrastructure reference resource is not found, returns nil.
|
||||
func (r unstructuredScalableResource) InstanceSystemInfo() *apiv1.NodeSystemInfo {
|
||||
infraObj, err := r.readInfrastructureReferenceResource()
|
||||
if err != nil || infraObj == nil {
|
||||
return nil
|
||||
}
|
||||
nsiObj := systemInfoFromInfrastructureObject(infraObj)
|
||||
return &nsiObj
|
||||
}
|
||||
|
||||
func (r unstructuredScalableResource) InstanceResourceSlices(nodeName string) ([]*resourceapi.ResourceSlice, error) {
|
||||
var result []*resourceapi.ResourceSlice
|
||||
driver := r.InstanceDRADriver()
|
||||
|
|
@ -390,6 +404,17 @@ func (r unstructuredScalableResource) InstanceDRADriver() string {
|
|||
}
|
||||
|
||||
func (r unstructuredScalableResource) readInfrastructureReferenceResource() (*unstructured.Unstructured, error) {
|
||||
// Cache w/ lazy loading of the infrastructure reference resource.
|
||||
r.infraMutex.RLock()
|
||||
if r.infraObj != nil {
|
||||
defer r.infraMutex.RUnlock()
|
||||
return r.infraObj, nil
|
||||
}
|
||||
r.infraMutex.RUnlock()
|
||||
|
||||
r.infraMutex.Lock()
|
||||
defer r.infraMutex.Unlock()
|
||||
|
||||
obKind := r.unstructured.GetKind()
|
||||
obName := r.unstructured.GetName()
|
||||
|
||||
|
|
@ -440,6 +465,8 @@ func (r unstructuredScalableResource) readInfrastructureReferenceResource() (*un
|
|||
return nil, err
|
||||
}
|
||||
|
||||
r.infraObj = infra
|
||||
|
||||
return infra, nil
|
||||
}
|
||||
|
||||
|
|
@ -477,6 +504,25 @@ func resourceCapacityFromInfrastructureObject(infraobj *unstructured.Unstructure
|
|||
return capacity
|
||||
}
|
||||
|
||||
func systemInfoFromInfrastructureObject(infraobj *unstructured.Unstructured) apiv1.NodeSystemInfo {
|
||||
nsi := apiv1.NodeSystemInfo{}
|
||||
infransi, found, err := unstructured.NestedStringMap(infraobj.Object, "status", "nodeInfo")
|
||||
if !found || err != nil {
|
||||
return nsi
|
||||
}
|
||||
|
||||
for k, v := range infransi {
|
||||
switch k {
|
||||
case "architecture":
|
||||
nsi.Architecture = v
|
||||
case "operatingSystem":
|
||||
nsi.OperatingSystem = v
|
||||
}
|
||||
}
|
||||
|
||||
return nsi
|
||||
}
|
||||
|
||||
// adapted from https://github.com/kubernetes/kubernetes/blob/release-1.25/pkg/util/taints/taints.go#L39
|
||||
func parseTaint(st string) (apiv1.Taint, error) {
|
||||
var taint apiv1.Taint
|
||||
|
|
|
|||
|
|
@ -33,9 +33,14 @@ import (
|
|||
)
|
||||
|
||||
const (
|
||||
cpuStatusKey = "cpu"
|
||||
memoryStatusKey = "memory"
|
||||
nvidiaGpuStatusKey = "nvidia.com/gpu"
|
||||
cpuStatusKey = "cpu"
|
||||
memoryStatusKey = "memory"
|
||||
nvidiaGpuStatusKey = "nvidia.com/gpu"
|
||||
architectureStatusKey = "architecture"
|
||||
operatingSystemStatusKey = "operatingSystem"
|
||||
|
||||
arm64 = "arm64"
|
||||
linux = "linux"
|
||||
)
|
||||
|
||||
func TestSetSize(t *testing.T) {
|
||||
|
|
@ -127,6 +132,7 @@ func TestSetSize(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
))
|
||||
})
|
||||
|
||||
|
|
@ -140,6 +146,7 @@ func TestSetSize(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
))
|
||||
})
|
||||
}
|
||||
|
|
@ -244,11 +251,11 @@ func TestReplicas(t *testing.T) {
|
|||
}
|
||||
|
||||
t.Run("MachineSet", func(t *testing.T) {
|
||||
test(t, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), initialReplicas, nil, nil))
|
||||
test(t, createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), initialReplicas, nil, nil, nil))
|
||||
})
|
||||
|
||||
t.Run("MachineDeployment", func(t *testing.T) {
|
||||
test(t, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), initialReplicas, nil, nil))
|
||||
test(t, createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), initialReplicas, nil, nil, nil))
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -304,6 +311,7 @@ func TestSetSizeAndReplicas(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
))
|
||||
})
|
||||
|
||||
|
|
@ -317,6 +325,7 @@ func TestSetSizeAndReplicas(t *testing.T) {
|
|||
nodeGroupMaxSizeAnnotationKey: "10",
|
||||
},
|
||||
nil,
|
||||
nil,
|
||||
))
|
||||
})
|
||||
}
|
||||
|
|
@ -421,12 +430,12 @@ func TestAnnotations(t *testing.T) {
|
|||
}
|
||||
|
||||
t.Run("MachineSet", func(t *testing.T) {
|
||||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, annotations, nil)
|
||||
testConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, annotations, nil, nil)
|
||||
test(t, testConfig, testConfig.machineSet)
|
||||
})
|
||||
|
||||
t.Run("MachineDeployment", func(t *testing.T) {
|
||||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, annotations, nil)
|
||||
testConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, annotations, nil, nil)
|
||||
test(t, testConfig, testConfig.machineDeployment)
|
||||
})
|
||||
}
|
||||
|
|
@ -531,7 +540,7 @@ func TestCanScaleFromZero(t *testing.T) {
|
|||
for _, tc := range testConfigs {
|
||||
testname := fmt.Sprintf("MachineSet %s", tc.name)
|
||||
t.Run(testname, func(t *testing.T) {
|
||||
msTestConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, tc.annotations, tc.capacity)
|
||||
msTestConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, tc.annotations, tc.capacity, nil)
|
||||
controller, stop := mustCreateTestController(t, msTestConfig)
|
||||
defer stop()
|
||||
|
||||
|
|
@ -552,7 +561,7 @@ func TestCanScaleFromZero(t *testing.T) {
|
|||
for _, tc := range testConfigs {
|
||||
testname := fmt.Sprintf("MachineDeployment %s", tc.name)
|
||||
t.Run(testname, func(t *testing.T) {
|
||||
msTestConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, tc.annotations, tc.capacity)
|
||||
msTestConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, tc.annotations, tc.capacity, nil)
|
||||
controller, stop := mustCreateTestController(t, msTestConfig)
|
||||
defer stop()
|
||||
|
||||
|
|
@ -570,3 +579,98 @@ func TestCanScaleFromZero(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestInstanceSystemInfo(t *testing.T) {
|
||||
// use a constant capacity as that's necessary for the business logic to consider the resource scalable
|
||||
capacity := map[string]string{
|
||||
cpuStatusKey: "1",
|
||||
memoryStatusKey: "4G",
|
||||
}
|
||||
testConfigs := []struct {
|
||||
name string
|
||||
nodeInfo map[string]string
|
||||
expectedArch string
|
||||
expectedOS string
|
||||
}{
|
||||
{
|
||||
"with no architecture or operating system in machine template's status' nodeInfo, the system info is empty",
|
||||
map[string]string{},
|
||||
"",
|
||||
"",
|
||||
},
|
||||
{
|
||||
"with architecture in machine template's status' nodeInfo, the system info is filled in the scalable resource",
|
||||
map[string]string{
|
||||
architectureStatusKey: arm64,
|
||||
},
|
||||
arm64,
|
||||
"",
|
||||
},
|
||||
{
|
||||
"with operating system in machine template's status' nodeInfo, the system info is filled in the scalable resource",
|
||||
map[string]string{
|
||||
operatingSystemStatusKey: linux,
|
||||
},
|
||||
"",
|
||||
linux,
|
||||
},
|
||||
{
|
||||
"with architecture and operating system in machine template's status' nodeInfo, the system info is filled in the scalable resource",
|
||||
map[string]string{
|
||||
architectureStatusKey: arm64,
|
||||
operatingSystemStatusKey: linux,
|
||||
},
|
||||
arm64,
|
||||
linux,
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range testConfigs {
|
||||
testname := fmt.Sprintf("MachineSet %s", tc.name)
|
||||
t.Run(testname, func(t *testing.T) {
|
||||
msTestConfig := createMachineSetTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, nil, capacity, tc.nodeInfo)
|
||||
controller, stop := mustCreateTestController(t, msTestConfig)
|
||||
defer stop()
|
||||
|
||||
testResource := msTestConfig.machineSet
|
||||
|
||||
sr, err := newUnstructuredScalableResource(controller, testResource)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
sysInfo := sr.InstanceSystemInfo()
|
||||
if sysInfo.Architecture != tc.expectedArch {
|
||||
t.Errorf("expected architecture %s, got %s", tc.nodeInfo[architectureStatusKey], sysInfo.Architecture)
|
||||
}
|
||||
if sysInfo.OperatingSystem != tc.expectedOS {
|
||||
t.Errorf("expected operating system %s, got %s", tc.nodeInfo[operatingSystemStatusKey], sysInfo.OperatingSystem)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
for _, tc := range testConfigs {
|
||||
testname := fmt.Sprintf("MachineDeployment %s", tc.name)
|
||||
t.Run(testname, func(t *testing.T) {
|
||||
msTestConfig := createMachineDeploymentTestConfig(RandomString(6), RandomString(6), RandomString(6), 1, nil, capacity, tc.nodeInfo)
|
||||
controller, stop := mustCreateTestController(t, msTestConfig)
|
||||
defer stop()
|
||||
|
||||
testResource := msTestConfig.machineDeployment
|
||||
|
||||
sr, err := newUnstructuredScalableResource(controller, testResource)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
sysInfo := sr.InstanceSystemInfo()
|
||||
if sysInfo.Architecture != tc.expectedArch {
|
||||
t.Errorf("expected architecture %s, got %s", tc.nodeInfo[architectureStatusKey], sysInfo.Architecture)
|
||||
}
|
||||
|
||||
if sysInfo.OperatingSystem != tc.expectedOS {
|
||||
t.Errorf("expected operating system %s, got %s", tc.nodeInfo[operatingSystemStatusKey], sysInfo.OperatingSystem)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue