summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRyan Harper <ryan.harper@canonical.com>2019-10-24 20:16:47 +0000
committerServer Team CI Bot <josh.powers+server-team-bot@canonical.com>2019-10-24 20:16:47 +0000
commitf1c788e2bb7c86069d43a015267facfb8aefcdf0 (patch)
tree528ad995c0ee62b4cf5d24080faf1b8f17937256 /tests
parent5bec6b0e2a2ce5fd03bb04f441536fc130e67997 (diff)
downloadvyos-cloud-init-f1c788e2bb7c86069d43a015267facfb8aefcdf0.tar.gz
vyos-cloud-init-f1c788e2bb7c86069d43a015267facfb8aefcdf0.zip
net/netplan: use ipv6-mtu key for specifying ipv6 mtu values
netplan introduced an 'info' subcommand which emits yaml describing implemented features that indicate new or changed fields and values in the yaml that it accepts. Previously, cloud-init emitted the key 'mtu6' for ipv6 MTU values. This is not correct and netplan will fail to parse these values. Netplan as of 0.98 supports both the info subcommand and the ipv6-mtu key. This branch modifies the netplan renderer to collect the netplan info output into a 'features' property which is a list of available feature flags which the renderer can use to modify its output. If the command is not available, no feature flags are set and cloud-init will render IPv6 MTU values just as MTU for the subnet.
Diffstat (limited to 'tests')
-rw-r--r--tests/unittests/test_net.py27
1 files changed, 25 insertions, 2 deletions
diff --git a/tests/unittests/test_net.py b/tests/unittests/test_net.py
index d2201998..21604b12 100644
--- a/tests/unittests/test_net.py
+++ b/tests/unittests/test_net.py
@@ -996,8 +996,8 @@ NETWORK_CONFIGS = {
addresses:
- 192.168.14.2/24
- 2001:1::1/64
+ ipv6-mtu: 1500
mtu: 9000
- mtu6: 1500
""").rstrip(' '),
'yaml': textwrap.dedent("""\
version: 1
@@ -3585,7 +3585,9 @@ class TestNetplanPostcommands(CiTestCase):
@mock.patch.object(netplan.Renderer, '_netplan_generate')
@mock.patch.object(netplan.Renderer, '_net_setup_link')
- def test_netplan_render_calls_postcmds(self, mock_netplan_generate,
+ @mock.patch('cloudinit.util.subp')
+ def test_netplan_render_calls_postcmds(self, mock_subp,
+ mock_netplan_generate,
mock_net_setup_link):
tmp_dir = self.tmp_dir()
ns = network_state.parse_net_config_data(self.mycfg,
@@ -3597,6 +3599,7 @@ class TestNetplanPostcommands(CiTestCase):
render_target = 'netplan.yaml'
renderer = netplan.Renderer(
{'netplan_path': render_target, 'postcmds': True})
+ mock_subp.side_effect = iter([util.ProcessExecutionError])
renderer.render_network_state(ns, target=render_dir)
mock_netplan_generate.assert_called_with(run=True)
@@ -3619,7 +3622,13 @@ class TestNetplanPostcommands(CiTestCase):
render_target = 'netplan.yaml'
renderer = netplan.Renderer(
{'netplan_path': render_target, 'postcmds': True})
+ mock_subp.side_effect = iter([
+ util.ProcessExecutionError,
+ ('', ''),
+ ('', ''),
+ ])
expected = [
+ mock.call(['netplan', 'info'], capture=True),
mock.call(['netplan', 'generate'], capture=True),
mock.call(['udevadm', 'test-builtin', 'net_setup_link',
'/sys/class/net/lo'], capture=True),
@@ -3875,6 +3884,20 @@ class TestReadInitramfsConfig(CiTestCase):
class TestNetplanRoundTrip(CiTestCase):
+
+ NETPLAN_INFO_OUT = textwrap.dedent("""
+ netplan.io:
+ features:
+ - dhcp-use-domains
+ - ipv6-mtu
+ website: https://netplan.io/
+ """)
+
+ def setUp(self):
+ super(TestNetplanRoundTrip, self).setUp()
+ self.add_patch('cloudinit.net.netplan.util.subp', 'm_subp')
+ self.m_subp.return_value = (self.NETPLAN_INFO_OUT, '')
+
def _render_and_read(self, network_config=None, state=None,
netplan_path=None, target=None):
if target is None: