Skip to content

Commit 6d1d0ad

Browse files
author
Antti Myyrä
committed
fix(server): Prefer IPv4 when IP family is not explicit
1 parent 27b2f29 commit 6d1d0ad

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

upcloud_api/server.py

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -514,15 +514,21 @@ def get_ip(self, access='public', addr_family=None):
514514

515515
ip_addrs = []
516516
for iface in self.networking['interfaces']['interface']:
517-
ip_addresses = iface['ip_addresses']['ip_address']
518-
if len(ip_addresses) == 0:
517+
iface_ip_addrs = iface['ip_addresses']['ip_address']
518+
if len(iface_ip_addrs) == 0:
519519
continue
520520

521-
for ip in ip_addresses:
521+
for ip in iface_ip_addrs:
522522
if iface['type'] == access and (not addr_family or ip['family'] == addr_family):
523523
ip_addrs.append(ip)
524524

525-
# any IP (of the right access) will do if available and addr_family is None
525+
# If IP address family has not been defined, we'll prefer v4 when it's available
526+
if not addr_family:
527+
for addr in ip_addrs:
528+
if addr['family'] == 'IPv4':
529+
return addr['address']
530+
531+
# Any remaining IP should be good
526532
return ip_addrs[0]['address'] if ip_addrs else None
527533

528534
def get_public_ip(self, addr_family=None, *args, **kwargs):

0 commit comments

Comments
 (0)