@@ -49,16 +49,13 @@ var (
4949type awsCloudProvider struct {
5050 awsManager * AwsManager
5151 resourceLimiter * cloudprovider.ResourceLimiter
52- // InstanceTypes is a map of ec2 resources
53- instanceTypes map [string ]* InstanceType
5452}
5553
5654// BuildAwsCloudProvider builds CloudProvider implementation for AWS.
57- func BuildAwsCloudProvider (awsManager * AwsManager , instanceTypes map [ string ] * InstanceType , resourceLimiter * cloudprovider.ResourceLimiter ) (cloudprovider.CloudProvider , error ) {
55+ func BuildAwsCloudProvider (awsManager * AwsManager , resourceLimiter * cloudprovider.ResourceLimiter ) (cloudprovider.CloudProvider , error ) {
5856 aws := & awsCloudProvider {
5957 awsManager : awsManager ,
6058 resourceLimiter : resourceLimiter ,
61- instanceTypes : instanceTypes ,
6259 }
6360 return aws , nil
6461}
@@ -347,21 +344,30 @@ func BuildAWS(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscover
347344 }
348345
349346 // Generate EC2 list
350- var instanceTypes map [string ]* InstanceType
351- var lastUpdateTime string
347+ instanceTypes , lastUpdateTime := GetStaticEC2InstanceTypes ()
352348 if opts .AWSUseStaticInstanceList {
353- instanceTypes , lastUpdateTime = GetStaticEC2InstanceTypes ()
354349 klog .Warningf ("Use static EC2 Instance Types and list could be outdated. Last update time: %s" , lastUpdateTime )
355350 } else {
356351 region , err := GetCurrentAwsRegion ()
357352 if err != nil {
358353 klog .Fatalf ("Failed to get AWS Region: %v" , err )
359354 }
360355
361- instanceTypes , err = GenerateEC2InstanceTypes (region )
356+ generatedInstanceTypes , err : = GenerateEC2InstanceTypes (region )
362357 if err != nil {
363358 klog .Fatalf ("Failed to generate AWS EC2 Instance Types: %v" , err )
364359 }
360+ // fallback on the static list if we miss any instance types in the generated output
361+ // credits to: https://github.com/lyft/cni-ipvlan-vpc-k8s/pull/80
362+ for k , v := range instanceTypes {
363+ _ , ok := generatedInstanceTypes [k ]
364+ if ok {
365+ continue
366+ }
367+ klog .Infof ("Using static instance type %s" , k )
368+ generatedInstanceTypes [k ] = v
369+ }
370+ instanceTypes = generatedInstanceTypes
365371
366372 keys := make ([]string , 0 , len (instanceTypes ))
367373 for key := range instanceTypes {
@@ -371,12 +377,12 @@ func BuildAWS(opts config.AutoscalingOptions, do cloudprovider.NodeGroupDiscover
371377 klog .Infof ("Successfully load %d EC2 Instance Types %s" , len (keys ), keys )
372378 }
373379
374- manager , err := CreateAwsManager (config , do )
380+ manager , err := CreateAwsManager (config , do , instanceTypes )
375381 if err != nil {
376382 klog .Fatalf ("Failed to create AWS Manager: %v" , err )
377383 }
378384
379- provider , err := BuildAwsCloudProvider (manager , instanceTypes , rl )
385+ provider , err := BuildAwsCloudProvider (manager , rl )
380386 if err != nil {
381387 klog .Fatalf ("Failed to create AWS cloud provider: %v" , err )
382388 }
0 commit comments