@@ -438,22 +438,47 @@ func extractExtendedResourcesFromKubeEnv(kubeEnv KubeEnv) (apiv1.ResourceList, e
438
438
klog .Warningf ("error while obtaining extended_resources from AUTOSCALER_ENV_VARS; %v" , err )
439
439
return nil , err
440
440
}
441
-
442
- if ! found {
443
- return apiv1.ResourceList {}, nil
441
+ var extendedResourcesMap map [string ]string
442
+ if found {
443
+ extendedResourcesMap , err = parseKeyValueListToMap (extendedResourcesAsString )
444
+ if err != nil {
445
+ return apiv1.ResourceList {}, err
446
+ }
447
+ } else {
448
+ extendedResourcesMap = make (map [string ]string )
444
449
}
445
-
446
- extendedResourcesMap , err := parseKeyValueListToMap (extendedResourcesAsString )
450
+ nodeLabelsAsString , found , err := extractAutoscalerVarFromKubeEnv (kubeEnv , "node_labels" )
447
451
if err != nil {
448
- return apiv1.ResourceList {}, err
452
+ klog .Warningf ("error while obtaining node_labels from AUTOSCALER_ENV_VARS; %v" , err )
453
+ return nil , err
454
+ }
455
+ if found {
456
+ nodeLabelsMap , err := parseKeyValueListToMap (nodeLabelsAsString )
457
+ if err != nil {
458
+ return apiv1.ResourceList {}, err
459
+ }
460
+ const extendedResourcesKeyPrefix = "clusterautoscaler-nodetemplate-resources."
461
+ for key , value := range nodeLabelsMap {
462
+ if strings .HasPrefix (key , extendedResourcesKeyPrefix ) {
463
+ key = strings .TrimPrefix (key , extendedResourcesKeyPrefix )
464
+ if _ , existsBefore := extendedResourcesMap [key ]; existsBefore {
465
+ klog .Warningf ("extended resource %s defined twice in template" , key )
466
+ }
467
+ extendedResourcesMap [key ] = value
468
+ }
469
+ }
470
+ }
471
+
472
+ if len (extendedResourcesMap ) == 0 {
473
+ return apiv1.ResourceList {}, nil
449
474
}
450
475
451
476
extendedResources := apiv1.ResourceList {}
452
477
for name , quantity := range extendedResourcesMap {
453
478
if q , err := resource .ParseQuantity (quantity ); err == nil && q .Sign () >= 0 {
454
479
extendedResources [apiv1 .ResourceName (name )] = q
455
480
} else if err != nil {
456
- klog .Warningf ("ignoring invalid value in extended_resources defined in AUTOSCALER_ENV_VARS; %v" , err )
481
+ klog .Warningf ("ignoring invalid value in extended_resources or node_labels defined in AUTOSCALER_ENV_VARS; %v" , err )
457
482
}
458
483
}
459
484
return extendedResources , nil
0 commit comments