Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 6 additions & 2 deletions cloudinit/sources/DataSourceOpenNebula.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,11 @@ def get_gateway(self, dev):
return self.get_field(dev, "gateway")

def get_gateway6(self, dev):
return self.get_field(dev, "gateway6")
# OpenNebula 6.1.80 introduced new context parameter ETHx_IP6_GATEWAY
# to replace old ETHx_GATEWAY6. Old ETHx_GATEWAY6 will be removed in
# OpenNebula 6.4.0 (https://github.com/OpenNebula/one/issues/5536).
return self.get_field(dev, "ip6_gateway",
self.get_field(dev, "gateway6"))

def get_mask(self, dev):
return self.get_field(dev, "mask", "255.255.255.0")
Expand Down Expand Up @@ -440,7 +444,7 @@ def read_context_disk_dir(source_dir, distro, asuser=None):

# custom hostname -- try hostname or leave cloud-init
# itself create hostname from IP address later
for k in ('HOSTNAME', 'PUBLIC_IP', 'IP_PUBLIC', 'ETH0_IP'):
for k in ('SET_HOSTNAME', 'HOSTNAME', 'PUBLIC_IP', 'IP_PUBLIC', 'ETH0_IP'):
if k in context:
results['metadata']['local-hostname'] = context[k]
break
Expand Down
8 changes: 8 additions & 0 deletions doc/rtd/topics/datasources/opennebula.rst
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,21 @@ Datasource mode configuration override. Values: local, net, disabled.
ETH<x>_NETWORK
ETH<x>_MASK
ETH<x>_GATEWAY
ETH<x>_GATEWAY6
ETH<x>_DOMAIN
ETH<x>_DNS
ETH<x>_SEARCH_DOMAIN
ETH<x>_MTU
ETH<x>_IP6
ETH<x>_IP6_ULA
ETH<x>_IP6_PREFIX_LENGTH
ETH<x>_IP6_GATEWAY

Static `network configuration`_.

::

SET_HOSTNAME
HOSTNAME

Instance hostname.
Expand Down
12 changes: 7 additions & 5 deletions tests/unittests/test_datasource/test_opennebula.py
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,8 @@ def test_user_data_base64_encoding(self):
def test_hostname(self, m_get_phys_by_mac):
for dev in ('eth0', 'ens3'):
m_get_phys_by_mac.return_value = {MACADDR: dev}
for k in ('HOSTNAME', 'PUBLIC_IP', 'IP_PUBLIC', 'ETH0_IP'):
for k in ('SET_HOSTNAME', 'HOSTNAME', 'PUBLIC_IP', 'IP_PUBLIC',
'ETH0_IP'):
my_d = os.path.join(self.tmp, k)
populate_context_dir(my_d, {k: PUBLIC_IP})
results = ds.read_context_disk_dir(my_d, mock.Mock())
Expand Down Expand Up @@ -488,10 +489,11 @@ def test_get_gateway6(self):
Verify get_gateway6('device') correctly returns IPv6 default gateway
address.
"""
context = {'ETH0_GATEWAY6': IP6_GW}
net = ds.OpenNebulaNetwork(context, mock.Mock())
val = net.get_gateway6('eth0')
self.assertEqual(IP6_GW, val)
for k in ('GATEWAY6', 'IP6_GATEWAY'):
context = {'ETH0_' + k: IP6_GW}
net = ds.OpenNebulaNetwork(context, mock.Mock())
val = net.get_gateway6('eth0')
self.assertEqual(IP6_GW, val)

def test_get_mask(self):
"""
Expand Down