Skip to content

Commit a366e62

Browse files
committed
Fix unit-tests
1 parent 3e0578b commit a366e62

File tree

14 files changed

+141
-121
lines changed

14 files changed

+141
-121
lines changed

cluster-autoscaler/cloudprovider/brightbox/brightbox_node_group_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -316,7 +316,7 @@ func TestTemplateNodeInfo(t *testing.T) {
316316
Return(fakeServerTypezx45f(), nil)
317317
obj, err := makeFakeNodeGroup(t, testclient).TemplateNodeInfo()
318318
require.NoError(t, err)
319-
assert.Equal(t, fakeResource(), obj.ToScheduler().Allocatable)
319+
assert.Equal(t, fakeResource(), obj.ToScheduler().GetAllocatable())
320320
}
321321

322322
func TestNodeGroupErrors(t *testing.T) {

cluster-autoscaler/cloudprovider/clusterapi/clusterapi_nodegroup_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1648,8 +1648,8 @@ func TestNodeGroupTemplateNodeInfo(t *testing.T) {
16481648
t.Errorf("Expected the number of DRA devices in ResourceSlice to have: %d, but got: %d", config.expectedResourceSlice.gpuCount, len(resourceslice.Spec.Devices))
16491649
}
16501650
for _, device := range resourceslice.Spec.Devices {
1651-
if *device.Basic.Attributes["type"].StringValue != config.expectedResourceSlice.deviceType {
1652-
t.Errorf("Expected device type to have: %s, but got: %s", config.expectedResourceSlice.deviceType, *device.Basic.Attributes["type"].StringValue)
1651+
if *device.Attributes["type"].StringValue != config.expectedResourceSlice.deviceType {
1652+
t.Errorf("Expected device type to have: %s, but got: %s", config.expectedResourceSlice.deviceType, *device.Attributes["type"].StringValue)
16531653
}
16541654
}
16551655
}

cluster-autoscaler/cloudprovider/clusterapi/clusterapi_unstructured_test.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -336,18 +336,16 @@ func TestAnnotations(t *testing.T) {
336336
},
337337
Spec: resourceapi.ResourceSliceSpec{
338338
Driver: draDriver,
339-
NodeName: testNodeName,
339+
NodeName: &testNodeName,
340340
Pool: resourceapi.ResourcePool{
341341
Name: testNodeName,
342342
},
343343
Devices: []resourceapi.Device{
344344
{
345345
Name: "gpu-0",
346-
Basic: &resourceapi.BasicDevice{
347-
Attributes: map[resourceapi.QualifiedName]resourceapi.DeviceAttribute{
348-
"type": {
349-
StringValue: ptr.To(GpuDeviceType),
350-
},
346+
Attributes: map[resourceapi.QualifiedName]resourceapi.DeviceAttribute{
347+
"type": {
348+
StringValue: ptr.To(GpuDeviceType),
351349
},
352350
},
353351
},

cluster-autoscaler/cloudprovider/rancher/rancher_nodegroup_test.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -396,19 +396,19 @@ func TestTemplateNodeInfo(t *testing.T) {
396396
t.Fatal(err)
397397
}
398398

399-
if nodeInfo.ToScheduler().Allocatable.MilliCPU != ng.resources.Cpu().MilliValue() {
399+
if nodeInfo.ToScheduler().GetAllocatable().GetMilliCPU() != ng.resources.Cpu().MilliValue() {
400400
t.Fatalf("expected nodeInfo to have %v MilliCPU, got %v",
401-
ng.resources.Cpu().MilliValue(), nodeInfo.ToScheduler().Allocatable.MilliCPU)
401+
ng.resources.Cpu().MilliValue(), nodeInfo.ToScheduler().GetAllocatable().GetMilliCPU())
402402
}
403403

404-
if nodeInfo.ToScheduler().Allocatable.Memory != ng.resources.Memory().Value() {
404+
if nodeInfo.ToScheduler().GetAllocatable().GetMemory() != ng.resources.Memory().Value() {
405405
t.Fatalf("expected nodeInfo to have %v Memory, got %v",
406-
ng.resources.Memory().Value(), nodeInfo.ToScheduler().Allocatable.Memory)
406+
ng.resources.Memory().Value(), nodeInfo.ToScheduler().GetAllocatable().GetMemory())
407407
}
408408

409-
if nodeInfo.ToScheduler().Allocatable.EphemeralStorage != ng.resources.StorageEphemeral().Value() {
409+
if nodeInfo.ToScheduler().GetAllocatable().GetEphemeralStorage() != ng.resources.StorageEphemeral().Value() {
410410
t.Fatalf("expected nodeInfo to have %v ephemeral storage, got %v",
411-
ng.resources.StorageEphemeral().Value(), nodeInfo.ToScheduler().Allocatable.EphemeralStorage)
411+
ng.resources.StorageEphemeral().Value(), nodeInfo.ToScheduler().GetAllocatable().GetEphemeralStorage())
412412
}
413413
}
414414

cluster-autoscaler/core/static_autoscaler_dra_test.go

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -603,15 +603,17 @@ func testResourceClaim(claimName string, owningPod *apiv1.Pod, nodeName string,
603603
selectors = append(selectors, resourceapi.DeviceSelector{CEL: &resourceapi.CELDeviceSelector{Expression: selector}})
604604
}
605605
deviceRequest := resourceapi.DeviceRequest{
606-
Name: request.name,
607-
DeviceClassName: "default-class",
608-
Selectors: selectors,
606+
Name: request.name,
607+
Exactly: &resourceapi.ExactDeviceRequest{
608+
DeviceClassName: "default-class",
609+
Selectors: selectors,
610+
},
609611
}
610612
if request.all {
611-
deviceRequest.AllocationMode = resourceapi.DeviceAllocationModeAll
613+
deviceRequest.Exactly.AllocationMode = resourceapi.DeviceAllocationModeAll
612614
} else {
613-
deviceRequest.AllocationMode = resourceapi.DeviceAllocationModeExactCount
614-
deviceRequest.Count = request.count
615+
deviceRequest.Exactly.AllocationMode = resourceapi.DeviceAllocationModeExactCount
616+
deviceRequest.Exactly.Count = request.count
615617
}
616618
deviceRequests = append(deviceRequests, deviceRequest)
617619
}
@@ -711,9 +713,10 @@ func testResourceSlices(driver, poolName string, poolSliceCount, poolGen int64,
711713
}
712714

713715
if avail.node != "" {
714-
slice.Spec.NodeName = avail.node
716+
slice.Spec.NodeName = &avail.node
715717
} else if avail.all {
716-
slice.Spec.AllNodes = true
718+
v := true
719+
slice.Spec.AllNodes = &v
717720
} else if len(avail.nodes) > 0 {
718721
slice.Spec.NodeSelector = &apiv1.NodeSelector{
719722
NodeSelectorTerms: []apiv1.NodeSelectorTerm{
@@ -728,18 +731,16 @@ func testResourceSlices(driver, poolName string, poolSliceCount, poolGen int64,
728731
var devices []resourceapi.Device
729732
for _, deviceDef := range deviceDefs {
730733
device := resourceapi.Device{
731-
Name: deviceDef.name,
732-
Basic: &resourceapi.BasicDevice{
733-
Attributes: map[resourceapi.QualifiedName]resourceapi.DeviceAttribute{},
734-
Capacity: map[resourceapi.QualifiedName]resourceapi.DeviceCapacity{},
735-
},
734+
Name: deviceDef.name,
735+
Attributes: map[resourceapi.QualifiedName]resourceapi.DeviceAttribute{},
736+
Capacity: map[resourceapi.QualifiedName]resourceapi.DeviceCapacity{},
736737
}
737738
for name, val := range deviceDef.attributes {
738739
val := val
739-
device.Basic.Attributes[resourceapi.QualifiedName(driver+"/"+name)] = resourceapi.DeviceAttribute{StringValue: &val}
740+
device.Attributes[resourceapi.QualifiedName(driver+"/"+name)] = resourceapi.DeviceAttribute{StringValue: &val}
740741
}
741742
for name, quantity := range deviceDef.capacity {
742-
device.Basic.Capacity[resourceapi.QualifiedName(name)] = resourceapi.DeviceCapacity{Value: resource.MustParse(quantity)}
743+
device.Capacity[resourceapi.QualifiedName(name)] = resourceapi.DeviceCapacity{Value: resource.MustParse(quantity)}
743744
}
744745
devices = append(devices, device)
745746
}

cluster-autoscaler/simulator/clustersnapshot/predicate/predicate_snapshot_dra_benchmark_test.go

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -35,21 +35,20 @@ import (
3535
. "k8s.io/autoscaler/cluster-autoscaler/utils/test"
3636
)
3737

38-
func createTestResourceSlice(nodeName string, devicesPerSlice int, slicesPerNode int, driver string, device resourceapi.BasicDevice) *resourceapi.ResourceSlice {
38+
func createTestResourceSlice(nodeName string, devicesPerSlice int, slicesPerNode int, driver string) *resourceapi.ResourceSlice {
3939
sliceId := uuid.New().String()
4040
name := fmt.Sprintf("rs-%s", sliceId)
4141
uid := types.UID(fmt.Sprintf("rs-%s-uid", sliceId))
4242
devices := make([]resourceapi.Device, devicesPerSlice)
4343
for deviceIndex := 0; deviceIndex < devicesPerSlice; deviceIndex++ {
4444
deviceName := fmt.Sprintf("rs-dev-%s-%d", sliceId, deviceIndex)
45-
deviceCopy := device
46-
devices[deviceIndex] = resourceapi.Device{Name: deviceName, Basic: &deviceCopy}
45+
devices[deviceIndex] = resourceapi.Device{Name: deviceName}
4746
}
4847

4948
return &resourceapi.ResourceSlice{
5049
ObjectMeta: metav1.ObjectMeta{Name: name, UID: uid},
5150
Spec: resourceapi.ResourceSliceSpec{
52-
NodeName: nodeName,
51+
NodeName: &nodeName,
5352
Driver: driver,
5453
Pool: resourceapi.ResourcePool{
5554
Name: nodeName,
@@ -69,11 +68,13 @@ func createTestResourceClaim(requestsPerClaim int, devicesPerRequest int, driver
6968
requests := make([]resourceapi.DeviceRequest, requestsPerClaim)
7069
for requestIndex := 0; requestIndex < requestsPerClaim; requestIndex++ {
7170
requests[requestIndex] = resourceapi.DeviceRequest{
72-
Name: fmt.Sprintf("deviceRequest-%d", requestIndex),
73-
DeviceClassName: deviceClass,
74-
Selectors: []resourceapi.DeviceSelector{{CEL: &resourceapi.CELDeviceSelector{Expression: expression}}},
75-
AllocationMode: resourceapi.DeviceAllocationModeExactCount,
76-
Count: int64(devicesPerRequest),
71+
Name: fmt.Sprintf("deviceRequest-%d", requestIndex),
72+
Exactly: &resourceapi.ExactDeviceRequest{
73+
DeviceClassName: deviceClass,
74+
Selectors: []resourceapi.DeviceSelector{{CEL: &resourceapi.CELDeviceSelector{Expression: expression}}},
75+
AllocationMode: resourceapi.DeviceAllocationModeExactCount,
76+
Count: int64(devicesPerRequest),
77+
},
7778
}
7879
}
7980

@@ -102,7 +103,7 @@ func allocateResourceSlicesForClaim(claim *resourceapi.ResourceClaim, nodeName s
102103

103104
allocationLoop:
104105
for _, request := range claim.Spec.Devices.Requests {
105-
for devicesRequired := request.Count; devicesRequired > 0; devicesRequired-- {
106+
for devicesRequired := request.Exactly.Count; devicesRequired > 0; devicesRequired-- {
106107
// Skipping resource slices until we find one with at least a single device available
107108
for sliceIndex < len(slices) && deviceIndex >= len(slices[sliceIndex].Spec.Devices) {
108109
sliceIndex++
@@ -272,7 +273,7 @@ func BenchmarkScheduleRevert(b *testing.B) {
272273
for nodeIndex := 0; nodeIndex < maxNodesCount; nodeIndex++ {
273274
nodeName := fmt.Sprintf("node-%d", nodeIndex)
274275
node := BuildTestNode(nodeName, 10000, 10000)
275-
nodeSlice := createTestResourceSlice(node.Name, devicesPerSlice, 1, driverName, resourceapi.BasicDevice{})
276+
nodeSlice := createTestResourceSlice(node.Name, devicesPerSlice, 1, driverName)
276277
nodeInfo := framework.NewNodeInfo(node, []*resourceapi.ResourceSlice{nodeSlice})
277278

278279
sharedClaim := createTestResourceClaim(devicesPerSlice, 1, driverName, deviceClassName)

cluster-autoscaler/simulator/clustersnapshot/predicate/predicate_snapshot_test.go

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -204,32 +204,32 @@ func validTestCases(t *testing.T, snapshotName string) []modificationTestCase {
204204
{
205205
ObjectMeta: metav1.ObjectMeta{Name: "slice1", UID: "slice1Uid"},
206206
Spec: resourceapi.ResourceSliceSpec{
207-
NodeName: node.Name,
207+
NodeName: &node.Name,
208208
Driver: "driver.foo.com",
209209
Pool: resourceapi.ResourcePool{
210210
Name: "pool1",
211211
ResourceSliceCount: 1,
212212
},
213213
Devices: []resourceapi.Device{
214-
{Name: "dev1", Basic: &resourceapi.BasicDevice{}},
215-
{Name: "dev2", Basic: &resourceapi.BasicDevice{}},
216-
{Name: "dev3", Basic: &resourceapi.BasicDevice{}},
214+
{Name: "dev1"},
215+
{Name: "dev2"},
216+
{Name: "dev3"},
217217
},
218218
},
219219
},
220220
{
221221
ObjectMeta: metav1.ObjectMeta{Name: "slice2", UID: "slice2Uid"},
222222
Spec: resourceapi.ResourceSliceSpec{
223-
NodeName: node.Name,
223+
NodeName: &node.Name,
224224
Driver: "driver.bar.com",
225225
Pool: resourceapi.ResourcePool{
226226
Name: "pool2",
227227
ResourceSliceCount: 1,
228228
},
229229
Devices: []resourceapi.Device{
230-
{Name: "dev1", Basic: &resourceapi.BasicDevice{}},
231-
{Name: "dev2", Basic: &resourceapi.BasicDevice{}},
232-
{Name: "dev3", Basic: &resourceapi.BasicDevice{}},
230+
{Name: "dev1"},
231+
{Name: "dev2"},
232+
{Name: "dev3"},
233233
},
234234
},
235235
},
@@ -247,11 +247,13 @@ func validTestCases(t *testing.T, snapshotName string) []modificationTestCase {
247247
Devices: resourceapi.DeviceClaim{
248248
Requests: []resourceapi.DeviceRequest{
249249
{
250-
Name: "req1",
251-
DeviceClassName: "defaultClass",
252-
Selectors: []resourceapi.DeviceSelector{{CEL: &resourceapi.CELDeviceSelector{Expression: `device.driver == "driver.foo.com"`}}},
253-
AllocationMode: resourceapi.DeviceAllocationModeExactCount,
254-
Count: 3,
250+
Name: "req1",
251+
Exactly: &resourceapi.ExactDeviceRequest{
252+
DeviceClassName: "defaultClass",
253+
Selectors: []resourceapi.DeviceSelector{{CEL: &resourceapi.CELDeviceSelector{Expression: `device.driver == "driver.foo.com"`}}},
254+
AllocationMode: resourceapi.DeviceAllocationModeExactCount,
255+
Count: 3,
256+
},
255257
},
256258
},
257259
},
@@ -284,10 +286,12 @@ func validTestCases(t *testing.T, snapshotName string) []modificationTestCase {
284286
Devices: resourceapi.DeviceClaim{
285287
Requests: []resourceapi.DeviceRequest{
286288
{
287-
Name: "req1",
288-
DeviceClassName: "defaultClass",
289-
Selectors: []resourceapi.DeviceSelector{{CEL: &resourceapi.CELDeviceSelector{Expression: `device.driver == "driver.bar.com"`}}},
290-
AllocationMode: resourceapi.DeviceAllocationModeAll,
289+
Name: "req1",
290+
Exactly: &resourceapi.ExactDeviceRequest{
291+
DeviceClassName: "defaultClass",
292+
Selectors: []resourceapi.DeviceSelector{{CEL: &resourceapi.CELDeviceSelector{Expression: `device.driver == "driver.bar.com"`}}},
293+
AllocationMode: resourceapi.DeviceAllocationModeAll,
294+
},
291295
},
292296
},
293297
},

cluster-autoscaler/simulator/dynamicresources/provider/provider_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,16 @@ var (
3939
claim2 = &resourceapi.ResourceClaim{ObjectMeta: metav1.ObjectMeta{Name: "claim-2", UID: "claim-2"}}
4040
claim3 = &resourceapi.ResourceClaim{ObjectMeta: metav1.ObjectMeta{Name: "claim-3", UID: "claim-3"}}
4141

42-
localSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-1", UID: "local-slice-1"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n1"}}
43-
localSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-2", UID: "local-slice-2"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n1"}}
44-
localSlice3 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-3", UID: "local-slice-3"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n2"}}
45-
localSlice4 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-4", UID: "local-slice-4"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n2"}}
46-
globalSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-1", UID: "global-slice-1"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: true}}
47-
globalSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-2", UID: "global-slice-2"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: true}}
42+
n1Name = "n1"
43+
n2Name = "n2"
44+
trueValue = true
45+
46+
localSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-1", UID: "local-slice-1"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n1Name}}
47+
localSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-2", UID: "local-slice-2"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n1Name}}
48+
localSlice3 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-3", UID: "local-slice-3"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n2Name}}
49+
localSlice4 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-4", UID: "local-slice-4"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n2Name}}
50+
globalSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-1", UID: "global-slice-1"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: &trueValue}}
51+
globalSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-2", UID: "global-slice-2"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: &trueValue}}
4852
globalSlice3 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-3", UID: "global-slice-3"}, Spec: resourceapi.ResourceSliceSpec{NodeSelector: &apiv1.NodeSelector{}}}
4953

5054
class1 = &resourceapi.DeviceClass{ObjectMeta: metav1.ObjectMeta{Name: "class-1", UID: "class-1"}}

cluster-autoscaler/simulator/dynamicresources/snapshot/snapshot_slice_lister_test.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,15 @@ import (
3131

3232
func TestSnapshotSliceListerList(t *testing.T) {
3333
var (
34-
localSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-1", UID: "local-slice-1"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n1"}}
35-
localSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-2", UID: "local-slice-2"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n1"}}
36-
localSlice3 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-3", UID: "local-slice-3"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n2"}}
37-
localSlice4 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-4", UID: "local-slice-4"}, Spec: resourceapi.ResourceSliceSpec{NodeName: "n2"}}
38-
globalSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-1", UID: "global-slice-1"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: true}}
39-
globalSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-2", UID: "global-slice-2"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: true}}
34+
n1Name = "n1"
35+
n2Name = "n2"
36+
trueValue = true
37+
localSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-1", UID: "local-slice-1"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n1Name}}
38+
localSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-2", UID: "local-slice-2"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n1Name}}
39+
localSlice3 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-3", UID: "local-slice-3"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n2Name}}
40+
localSlice4 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "local-slice-4", UID: "local-slice-4"}, Spec: resourceapi.ResourceSliceSpec{NodeName: &n2Name}}
41+
globalSlice1 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-1", UID: "global-slice-1"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: &trueValue}}
42+
globalSlice2 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-2", UID: "global-slice-2"}, Spec: resourceapi.ResourceSliceSpec{AllNodes: &trueValue}}
4043
globalSlice3 = &resourceapi.ResourceSlice{ObjectMeta: metav1.ObjectMeta{Name: "global-slice-3", UID: "global-slice-3"}, Spec: resourceapi.ResourceSliceSpec{NodeSelector: &apiv1.NodeSelector{}}}
4144
)
4245

0 commit comments

Comments
 (0)