@@ -379,8 +379,8 @@ func (n *nutanixManager) isNodeAddressesSet(node *v1.Node) bool {
379379}
380380
381381func (n * nutanixManager ) getNodeAddresses (_ context.Context , vm * vmmModels.Vm ) ([]v1.NodeAddress , error ) {
382- var addressSet * set.Set [v1.NodeAddress ]
383382 var addresses []v1.NodeAddress
383+ uniqueIPs := set.New [string ](0 )
384384
385385 if vm == nil {
386386 return nil , fmt .Errorf ("vm cannot be nil when getting node addresses" )
@@ -390,37 +390,45 @@ func (n *nutanixManager) getNodeAddresses(_ context.Context, vm *vmmModels.Vm) (
390390 return nil , fmt .Errorf ("unable to determine network interfaces from VM with UUID %s: vm has no nics" , * vm .ExtId )
391391 }
392392
393- addressSet = set .From ([]v1.NodeAddress {}) //nolint:typecheck
394393 for _ , nic := range vm .Nics {
395394 if nic .NicNetworkInfo == nil {
396395 continue
397396 }
398397
398+ var vmAddresses []v1.NodeAddress
399+ var err error
399400 switch nic .NicNetworkInfo .GetValue ().(type ) {
400401 case vmmModels.VirtualEthernetNicNetworkInfo :
401402 netInfo := nic .NicNetworkInfo .GetValue ().(vmmModels.VirtualEthernetNicNetworkInfo )
402- vmAddressSet , err := n .getNodeAddressesFromNicNetworkInfo (netInfo .Ipv4Config , netInfo .Ipv4Info )
403+
404+ vmAddresses , err = n .getNodeAddressesFromNicNetworkInfo (netInfo .Ipv4Config , netInfo .Ipv4Info )
403405 if err != nil {
404406 return nil , err
405407 }
406- addressSet .InsertSlice (vmAddressSet )
407408
408409 case vmmModels.DpOffloadNicNetworkInfo :
409410 netInfo := nic .NicNetworkInfo .GetValue ().(vmmModels.DpOffloadNicNetworkInfo )
410- vmAddressSet , err : = n .getNodeAddressesFromNicNetworkInfo (netInfo .Ipv4Config , netInfo .Ipv4Info )
411+ vmAddresses , err = n .getNodeAddressesFromNicNetworkInfo (netInfo .Ipv4Config , netInfo .Ipv4Info )
411412 if err != nil {
412413 return nil , err
413414 }
414- addressSet .InsertSlice (vmAddressSet )
415415
416416 default :
417417 klog .V (1 ).Infof ("unsupported NIC network info type: %T" , nic .NicNetworkInfo .GetValue ()) //nolint:typecheck
418418 continue
419419 }
420+ for _ , addr := range vmAddresses {
421+ if addr .Type != v1 .NodeInternalIP {
422+ addresses = append (addresses , addr )
423+ continue
424+ }
425+ if ! uniqueIPs .Contains (addr .Address ) {
426+ uniqueIPs .Insert (addr .Address )
427+ addresses = append (addresses , addr )
428+ }
429+ }
420430 }
421431
422- addresses = append (addresses , addressSet .Slice ()... )
423-
424432 if len (addresses ) == 0 {
425433 return addresses , fmt .Errorf ("unable to determine network interfaces from VM with UUID %s" , * vm .ExtId )
426434 }
0 commit comments