@@ -239,7 +239,7 @@ func (cnc *CloudNodeController) updateNodeAddress(ctx context.Context, node *v1.
239
239
return
240
240
}
241
241
242
- nodeAddresses , err := getNodeAddressesByProviderIDOrName (ctx , instances , node )
242
+ nodeAddresses , err := getNodeAddressesByProviderIDOrName (ctx , instances , node . Spec . ProviderID , node . Name )
243
243
if err != nil {
244
244
klog .Errorf ("Error getting node addresses for node %q: %v" , node .Name , err )
245
245
return
@@ -407,10 +407,14 @@ func (cnc *CloudNodeController) initializeNode(ctx context.Context, node *v1.Nod
407
407
// All of the returned functions are idempotent, because they are used in a retry-if-conflict
408
408
// loop, meaning they could get called multiple times.
409
409
func (cnc * CloudNodeController ) getNodeModifiersFromCloudProvider (ctx context.Context , node * v1.Node , instances cloudprovider.Instances ) ([]nodeModifier , error ) {
410
- var nodeModifiers []nodeModifier
410
+ var (
411
+ nodeModifiers []nodeModifier
412
+ providerID string
413
+ err error
414
+ )
411
415
412
416
if node .Spec .ProviderID == "" {
413
- providerID , err : = cloudprovider .GetInstanceProviderID (ctx , cnc .cloud , types .NodeName (node .Name ))
417
+ providerID , err = cloudprovider .GetInstanceProviderID (ctx , cnc .cloud , types .NodeName (node .Name ))
414
418
if err == nil {
415
419
nodeModifiers = append (nodeModifiers , func (n * v1.Node ) {
416
420
if n .Spec .ProviderID == "" {
@@ -428,9 +432,11 @@ func (cnc *CloudNodeController) getNodeModifiersFromCloudProvider(ctx context.Co
428
432
// do not, the taint will be removed, and this will not be retried
429
433
return nil , err
430
434
}
435
+ } else {
436
+ providerID = node .Spec .ProviderID
431
437
}
432
438
433
- nodeAddresses , err := getNodeAddressesByProviderIDOrName (ctx , instances , node )
439
+ nodeAddresses , err := getNodeAddressesByProviderIDOrName (ctx , instances , providerID , node . Name )
434
440
if err != nil {
435
441
return nil , err
436
442
}
@@ -443,7 +449,7 @@ func (cnc *CloudNodeController) getNodeModifiersFromCloudProvider(ctx context.Co
443
449
}
444
450
}
445
451
446
- if instanceType , err := getInstanceTypeByProviderIDOrName (ctx , instances , node ); err != nil {
452
+ if instanceType , err := getInstanceTypeByProviderIDOrName (ctx , instances , providerID , node . Name ); err != nil {
447
453
return nil , err
448
454
} else if instanceType != "" {
449
455
klog .V (2 ).Infof ("Adding node label from cloud provider: %s=%s" , v1 .LabelInstanceType , instanceType )
@@ -458,7 +464,7 @@ func (cnc *CloudNodeController) getNodeModifiersFromCloudProvider(ctx context.Co
458
464
}
459
465
460
466
if zones , ok := cnc .cloud .Zones (); ok {
461
- zone , err := getZoneByProviderIDOrName (ctx , zones , node )
467
+ zone , err := getZoneByProviderIDOrName (ctx , zones , providerID , node . Name )
462
468
if err != nil {
463
469
return nil , fmt .Errorf ("failed to get zone from cloud provider: %v" , err )
464
470
}
@@ -531,11 +537,11 @@ func ensureNodeExistsByProviderID(ctx context.Context, instances cloudprovider.I
531
537
return instances .InstanceExistsByProviderID (ctx , providerID )
532
538
}
533
539
534
- func getNodeAddressesByProviderIDOrName (ctx context.Context , instances cloudprovider.Instances , node * v1. Node ) ([]v1.NodeAddress , error ) {
535
- nodeAddresses , err := instances .NodeAddressesByProviderID (ctx , node . Spec . ProviderID )
540
+ func getNodeAddressesByProviderIDOrName (ctx context.Context , instances cloudprovider.Instances , providerID , nodeName string ) ([]v1.NodeAddress , error ) {
541
+ nodeAddresses , err := instances .NodeAddressesByProviderID (ctx , providerID )
536
542
if err != nil {
537
543
providerIDErr := err
538
- nodeAddresses , err = instances .NodeAddresses (ctx , types .NodeName (node . Name ))
544
+ nodeAddresses , err = instances .NodeAddresses (ctx , types .NodeName (nodeName ))
539
545
if err != nil {
540
546
return nil , fmt .Errorf ("error fetching node by provider ID: %v, and error by node name: %v" , providerIDErr , err )
541
547
}
@@ -576,11 +582,13 @@ func ensureNodeProvidedIPExists(node *v1.Node, nodeAddresses []v1.NodeAddress) (
576
582
return nodeIP , nodeIPExists
577
583
}
578
584
579
- func getInstanceTypeByProviderIDOrName (ctx context.Context , instances cloudprovider.Instances , node * v1.Node ) (string , error ) {
580
- instanceType , err := instances .InstanceTypeByProviderID (ctx , node .Spec .ProviderID )
585
+ // getInstanceTypeByProviderIDOrName will attempt to get the instance type of node using its providerID
586
+ // then it's name. If both attempts fail, an error is returned.
587
+ func getInstanceTypeByProviderIDOrName (ctx context.Context , instances cloudprovider.Instances , providerID , nodeName string ) (string , error ) {
588
+ instanceType , err := instances .InstanceTypeByProviderID (ctx , providerID )
581
589
if err != nil {
582
590
providerIDErr := err
583
- instanceType , err = instances .InstanceType (ctx , types .NodeName (node . Name ))
591
+ instanceType , err = instances .InstanceType (ctx , types .NodeName (nodeName ))
584
592
if err != nil {
585
593
return "" , fmt .Errorf ("InstanceType: Error fetching by providerID: %v Error fetching by NodeName: %v" , providerIDErr , err )
586
594
}
@@ -589,12 +597,12 @@ func getInstanceTypeByProviderIDOrName(ctx context.Context, instances cloudprovi
589
597
}
590
598
591
599
// getZoneByProviderIDorName will attempt to get the zone of node using its providerID
592
- // then it's name. If both attempts fail, an error is returned
593
- func getZoneByProviderIDOrName (ctx context.Context , zones cloudprovider.Zones , node * v1. Node ) (cloudprovider.Zone , error ) {
594
- zone , err := zones .GetZoneByProviderID (ctx , node . Spec . ProviderID )
600
+ // then it's name. If both attempts fail, an error is returned.
601
+ func getZoneByProviderIDOrName (ctx context.Context , zones cloudprovider.Zones , providerID , nodeName string ) (cloudprovider.Zone , error ) {
602
+ zone , err := zones .GetZoneByProviderID (ctx , providerID )
595
603
if err != nil {
596
604
providerIDErr := err
597
- zone , err = zones .GetZoneByNodeName (ctx , types .NodeName (node . Name ))
605
+ zone , err = zones .GetZoneByNodeName (ctx , types .NodeName (nodeName ))
598
606
if err != nil {
599
607
return cloudprovider.Zone {}, fmt .Errorf ("Zone: Error fetching by providerID: %v Error fetching by NodeName: %v" , providerIDErr , err )
600
608
}
0 commit comments