@@ -82,7 +82,7 @@ func TestCalculate(t *testing.T) {
82
82
SetNodeReadyState (node , true , time.Time {})
83
83
nodeInfo := framework .NewTestNodeInfo (node , pod , pod , pod2 )
84
84
85
- gpuConfig := getGpuConfigFromNode (nodeInfo .Node ())
85
+ gpuConfig := getGpuConfigFromNode (nodeInfo .Node (), false )
86
86
utilInfo , err := Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
87
87
assert .NoError (t , err )
88
88
assert .InEpsilon (t , 2.0 / 10 , utilInfo .Utilization , 0.01 )
@@ -91,15 +91,15 @@ func TestCalculate(t *testing.T) {
91
91
node2 := BuildTestNode ("node2" , 2000 , - 1 )
92
92
nodeInfo = framework .NewTestNodeInfo (node2 , pod , pod , pod2 )
93
93
94
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
94
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
95
95
_ , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
96
96
assert .Error (t , err )
97
97
98
98
node3 := BuildTestNode ("node3" , 2000 , 2000000 )
99
99
SetNodeReadyState (node3 , true , time.Time {})
100
100
nodeInfo = framework .NewTestNodeInfo (node3 , pod , podWithInitContainers , podWithLargeNonRestartableInitContainers )
101
101
102
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
102
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
103
103
utilInfo , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
104
104
assert .NoError (t , err )
105
105
assert .InEpsilon (t , 50.25 , utilInfo .Utilization , 0.01 )
@@ -113,21 +113,21 @@ func TestCalculate(t *testing.T) {
113
113
daemonSetPod4 .Annotations = map [string ]string {"cluster-autoscaler.kubernetes.io/daemonset-pod" : "true" }
114
114
115
115
nodeInfo = framework .NewTestNodeInfo (node , pod , pod , pod2 , daemonSetPod3 , daemonSetPod4 )
116
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
116
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
117
117
utilInfo , err = Calculate (nodeInfo , true , false , false , gpuConfig , testTime )
118
118
assert .NoError (t , err )
119
119
assert .InEpsilon (t , 2.5 / 10 , utilInfo .Utilization , 0.01 )
120
120
121
121
nodeInfo = framework .NewTestNodeInfo (node , pod , pod2 , daemonSetPod3 )
122
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
122
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
123
123
utilInfo , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
124
124
assert .NoError (t , err )
125
125
assert .InEpsilon (t , 2.0 / 10 , utilInfo .Utilization , 0.01 )
126
126
127
127
terminatedPod := BuildTestPod ("podTerminated" , 100 , 200000 )
128
128
terminatedPod .DeletionTimestamp = & metav1.Time {Time : testTime .Add (- 10 * time .Minute )}
129
129
nodeInfo = framework .NewTestNodeInfo (node , pod , pod , pod2 , terminatedPod )
130
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
130
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
131
131
utilInfo , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
132
132
assert .NoError (t , err )
133
133
assert .InEpsilon (t , 2.0 / 10 , utilInfo .Utilization , 0.01 )
@@ -138,19 +138,19 @@ func TestCalculate(t *testing.T) {
138
138
}
139
139
140
140
nodeInfo = framework .NewTestNodeInfo (node , pod , pod , pod2 , mirrorPod )
141
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
141
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
142
142
utilInfo , err = Calculate (nodeInfo , false , true , false , gpuConfig , testTime )
143
143
assert .NoError (t , err )
144
144
assert .InEpsilon (t , 2.0 / 9.0 , utilInfo .Utilization , 0.01 )
145
145
146
146
nodeInfo = framework .NewTestNodeInfo (node , pod , pod2 , mirrorPod )
147
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
147
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
148
148
utilInfo , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
149
149
assert .NoError (t , err )
150
150
assert .InEpsilon (t , 2.0 / 10 , utilInfo .Utilization , 0.01 )
151
151
152
152
nodeInfo = framework .NewTestNodeInfo (node , pod , mirrorPod , daemonSetPod3 )
153
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
153
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
154
154
utilInfo , err = Calculate (nodeInfo , true , true , false , gpuConfig , testTime )
155
155
assert .NoError (t , err )
156
156
assert .InEpsilon (t , 1.0 / 8.0 , utilInfo .Utilization , 0.01 )
@@ -161,7 +161,7 @@ func TestCalculate(t *testing.T) {
161
161
RequestGpuForPod (gpuPod , 1 )
162
162
TolerateGpuForPod (gpuPod )
163
163
nodeInfo = framework .NewTestNodeInfo (gpuNode , pod , pod , gpuPod )
164
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
164
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
165
165
utilInfo , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
166
166
assert .NoError (t , err )
167
167
assert .InEpsilon (t , 1 / 1 , utilInfo .Utilization , 0.01 )
@@ -170,7 +170,7 @@ func TestCalculate(t *testing.T) {
170
170
gpuNode = BuildTestNode ("gpu_node" , 2000 , 2000000 )
171
171
AddGpuLabelToNode (gpuNode )
172
172
nodeInfo = framework .NewTestNodeInfo (gpuNode , pod , pod )
173
- gpuConfig = getGpuConfigFromNode (nodeInfo .Node ())
173
+ gpuConfig = getGpuConfigFromNode (nodeInfo .Node (), false )
174
174
utilInfo , err = Calculate (nodeInfo , false , false , false , gpuConfig , testTime )
175
175
assert .NoError (t , err )
176
176
assert .Zero (t , utilInfo .Utilization )
@@ -182,7 +182,8 @@ func TestCalculateWithDynamicResources(t *testing.T) {
182
182
gpuNode := BuildTestNode ("gpuNode" , 1000 , 1000 )
183
183
AddGpusToNode (gpuNode , 1 )
184
184
AddGpuLabelToNode (gpuNode )
185
- gpuConfig := getGpuConfigFromNode (gpuNode )
185
+ gpuConfig := getGpuConfigFromNode (gpuNode , false )
186
+ gpuConfigDra := getGpuConfigFromNode (gpuNode , true )
186
187
pod1 := BuildTestPod ("pod1" , 250 , 0 , WithNodeName ("node" ))
187
188
pod2 := BuildTestPod ("pod2" , 250 , 0 , WithNodeName ("node" ))
188
189
resourceSlice1 := & resourceapi.ResourceSlice {
@@ -343,7 +344,14 @@ func TestCalculateWithDynamicResources(t *testing.T) {
343
344
nodeInfo : nodeInfoGpuAndDra ,
344
345
gpuConfig : gpuConfig ,
345
346
draEnabled : true ,
346
- wantUtilInfo : Info {Utilization : 0 , ResourceName : gpuConfig .ResourceName },
347
+ wantUtilInfo : Info {Utilization : 0 , ResourceName : gpuConfig .ExtendedResourceName },
348
+ },
349
+ {
350
+ testName : "DRA slices and claims present, DRA enabled, DRA GPU config passed -> DRA util returned" ,
351
+ nodeInfo : nodeInfoGpuAndDra ,
352
+ gpuConfig : gpuConfigDra ,
353
+ draEnabled : true ,
354
+ wantUtilInfo : Info {DynamicResourceUtil : 0.8 , Utilization : 0.8 , ResourceName : apiv1 .ResourceName ("driver.foo.com/node-pool1" )},
347
355
},
348
356
{
349
357
testName : "DRA slices and claims present, DRA enabled, error while calculating DRA util -> error returned" ,
@@ -365,15 +373,23 @@ func TestCalculateWithDynamicResources(t *testing.T) {
365
373
}
366
374
}
367
375
368
- func getGpuConfigFromNode (node * apiv1.Node ) * cloudprovider.GpuConfig {
376
+ func getGpuConfigFromNode (node * apiv1.Node , dra bool ) * cloudprovider.GpuConfig {
369
377
gpuLabel := "cloud.google.com/gke-accelerator"
370
378
gpuType , hasGpuLabel := node .Labels [gpuLabel ]
371
379
gpuAllocatable , hasGpuAllocatable := node .Status .Allocatable [gpu .ResourceNvidiaGPU ]
372
380
if hasGpuLabel || (hasGpuAllocatable && ! gpuAllocatable .IsZero ()) {
381
+ if ! dra {
382
+ return & cloudprovider.GpuConfig {
383
+ Label : gpuLabel ,
384
+ Type : gpuType ,
385
+ ExtendedResourceName : gpu .ResourceNvidiaGPU ,
386
+ }
387
+ }
388
+
373
389
return & cloudprovider.GpuConfig {
374
- Label : gpuLabel ,
375
- Type : gpuType ,
376
- ResourceName : gpu .ResourceNvidiaGPU ,
390
+ Label : gpuLabel ,
391
+ Type : gpuType ,
392
+ DraDriverName : " gpu.nvidia.com" ,
377
393
}
378
394
}
379
395
return nil
0 commit comments