@@ -40,6 +40,7 @@ import (
4040 "github.com/kubermatic/machine-controller/pkg/providerconfig"
4141 providerconfigtypes "github.com/kubermatic/machine-controller/pkg/providerconfig/types"
4242
43+ v1 "k8s.io/api/core/v1"
4344 "k8s.io/apimachinery/pkg/types"
4445 "k8s.io/klog"
4546 "k8s.io/utils/pointer"
@@ -91,11 +92,11 @@ type config struct {
9192
9293type azureVM struct {
9394 vm * compute.VirtualMachine
94- ipAddresses [] string
95+ ipAddresses map [ string ]v1. NodeAddressType
9596 status instance.Status
9697}
9798
98- func (vm * azureVM ) Addresses () [] string {
99+ func (vm * azureVM ) Addresses () map [ string ]v1. NodeAddressType {
99100 return vm .ipAddresses
100101}
101102
@@ -255,8 +256,11 @@ func (p *provider) getConfig(s v1alpha1.ProviderSpec) (*config, *providerconfigt
255256 return & c , & pconfig , nil
256257}
257258
258- func getVMIPAddresses (ctx context.Context , c * config , vm * compute.VirtualMachine ) ([]string , error ) {
259- var ipAddresses []string
259+ func getVMIPAddresses (ctx context.Context , c * config , vm * compute.VirtualMachine ) (map [string ]v1.NodeAddressType , error ) {
260+ var (
261+ ipAddresses = map [string ]v1.NodeAddressType {}
262+ err error
263+ )
260264
261265 if vm .VirtualMachineProperties == nil {
262266 return nil , fmt .Errorf ("machine is missing properties" )
@@ -277,17 +281,16 @@ func getVMIPAddresses(ctx context.Context, c *config, vm *compute.VirtualMachine
277281
278282 splitIfaceID := strings .Split (* iface .ID , "/" )
279283 ifaceName := splitIfaceID [len (splitIfaceID )- 1 ]
280- addrs , err : = getNICIPAddresses (ctx , c , ifaceName )
284+ ipAddresses , err = getNICIPAddresses (ctx , c , ifaceName )
281285 if vm .NetworkProfile .NetworkInterfaces == nil {
282286 return nil , fmt .Errorf ("failed to get addresses for interface %q: %v" , ifaceName , err )
283287 }
284- ipAddresses = append (ipAddresses , addrs ... )
285288 }
286289
287290 return ipAddresses , nil
288291}
289292
290- func getNICIPAddresses (ctx context.Context , c * config , ifaceName string ) ([] string , error ) {
293+ func getNICIPAddresses (ctx context.Context , c * config , ifaceName string ) (map [ string ]v1. NodeAddressType , error ) {
291294 ifClient , err := getInterfacesClient (c )
292295 if err != nil {
293296 return nil , fmt .Errorf ("failed to create interfaces client: %v" , err )
@@ -298,7 +301,7 @@ func getNICIPAddresses(ctx context.Context, c *config, ifaceName string) ([]stri
298301 return nil , fmt .Errorf ("failed to get interface %q: %v" , ifaceName , err .Error ())
299302 }
300303
301- var ipAddresses [] string
304+ ipAddresses := map [ string ]v1. NodeAddressType {}
302305
303306 if netIf .IPConfigurations != nil {
304307 for _ , conf := range * netIf .IPConfigurations {
@@ -320,15 +323,18 @@ func getNICIPAddresses(ctx context.Context, c *config, ifaceName string) ([]stri
320323 if err != nil {
321324 return nil , fmt .Errorf ("failed to retrieve IP string for IP %q: %v" , name , err )
322325 }
323- ipAddresses = append (ipAddresses , publicIPs ... )
326+ for _ , ip := range publicIPs {
327+ ipAddresses [ip ] = v1 .NodeExternalIP
328+ }
324329 }
325330
326331 internalIPs , err := getInternalIPAddresses (ctx , c , ifaceName , name )
327332 if err != nil {
328333 return nil , fmt .Errorf ("failed to retrieve internal IP string for IP %q: %v" , name , err )
329334 }
330-
331- ipAddresses = append (ipAddresses , internalIPs ... )
335+ for _ , ip := range internalIPs {
336+ ipAddresses [ip ] = v1 .NodeInternalIP
337+ }
332338
333339 }
334340 }
0 commit comments