@@ -438,22 +438,47 @@ func extractExtendedResourcesFromKubeEnv(kubeEnv KubeEnv) (apiv1.ResourceList, e
438438 klog .Warningf ("error while obtaining extended_resources from AUTOSCALER_ENV_VARS; %v" , err )
439439 return nil , err
440440 }
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 )
444449 }
445-
446- extendedResourcesMap , err := parseKeyValueListToMap (extendedResourcesAsString )
450+ nodeLabelsAsString , found , err := extractAutoscalerVarFromKubeEnv (kubeEnv , "node_labels" )
447451 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
449474 }
450475
451476 extendedResources := apiv1.ResourceList {}
452477 for name , quantity := range extendedResourcesMap {
453478 if q , err := resource .ParseQuantity (quantity ); err == nil && q .Sign () >= 0 {
454479 extendedResources [apiv1 .ResourceName (name )] = q
455480 } 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 )
457482 }
458483 }
459484 return extendedResources , nil
0 commit comments