@@ -355,16 +355,22 @@ func NormalizeIP(ip net.IP, networkName string) string {
355355 return normalizedIP
356356}
357357
358- // TODO: what's the best way to discover the node name? this should work in both controller pod and whereabouts host process
359- func getNodeName () (string , error ) {
358+ // getNodeName prefers an OS env var of NODENAME, or, uses a file named ./nodename in the whereabouts configuration path.
359+ func getNodeName (ipam * KubernetesIPAM ) (string , error ) {
360+
360361 envName := os .Getenv ("NODENAME" )
361362 if envName != "" {
362363 return strings .TrimSpace (envName ), nil
363364 }
364- file , err := os .Open ("/etc/hostname" )
365+
366+ nodeNamePath := fmt .Sprintf ("%s/%s" , ipam .Config .ConfigurationPath , "nodename" )
367+ file , err := os .Open (nodeNamePath )
365368 if err != nil {
366- logging .Errorf ("Error opening file /etc/hostname: %v" , err )
367- return "" , err
369+ file , err = os .Open ("/etc/hostname" )
370+ if err != nil {
371+ logging .Errorf ("Could not determine nodename and could not open /etc/hostname: %v" , err )
372+ return "" , err
373+ }
368374 }
369375 defer file .Close ()
370376
@@ -395,7 +401,7 @@ func newLeaderElector(ctx context.Context, clientset kubernetes.Interface, names
395401 leaseName := "whereabouts"
396402 if ipamConf .Config .NodeSliceSize != "" {
397403 // we lock per IP Pool so just use the pool name for the lease name
398- hostname , err := getNodeName ()
404+ hostname , err := getNodeName (ipamConf )
399405 if err != nil {
400406 logging .Errorf ("Failed to create leader elector: %v" , err )
401407 return nil , leaderOK , deposed
@@ -580,7 +586,7 @@ func IPManagementKubernetesUpdate(ctx context.Context, mode int, ipam *Kubernete
580586 }
581587 poolIdentifier := PoolIdentifier {IpRange : ipRange .Range , NetworkName : ipamConf .NetworkName }
582588 if ipamConf .NodeSliceSize != "" {
583- hostname , err := getNodeName ()
589+ hostname , err := getNodeName (ipam )
584590 if err != nil {
585591 logging .Errorf ("Failed to get node hostname: %v" , err )
586592 return newips , err
0 commit comments