summaryrefslogtreecommitdiff
path: root/tests/unittests/net/test_networkd.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unittests/net/test_networkd.py')
-rw-r--r--tests/unittests/net/test_networkd.py57
1 files changed, 56 insertions, 1 deletions
diff --git a/tests/unittests/net/test_networkd.py b/tests/unittests/net/test_networkd.py
index 2958231b..bb781b98 100644
--- a/tests/unittests/net/test_networkd.py
+++ b/tests/unittests/net/test_networkd.py
@@ -195,10 +195,54 @@ Domains=rgrunbla.github.beta.tailscale.net
[Route]
Gateway=10.0.0.1
+
+[Route]
Gateway=2a01:4f8:10a:19d2::2
"""
+V2_CONFIG_MULTI_SUBNETS = """
+network:
+ version: 2
+ ethernets:
+ eth0:
+ addresses:
+ - 192.168.1.1/24
+ - fec0::1/64
+ gateway4: 192.168.254.254
+ gateway6: "fec0::ffff"
+ routes:
+ - to: 169.254.1.1/32
+ - to: "fe80::1/128"
+"""
+
+V2_CONFIG_MULTI_SUBNETS_RENDERED = """\
+[Address]
+Address=192.168.1.1/24
+
+[Address]
+Address=fec0::1/64
+
+[Match]
+Name=eth0
+
+[Network]
+DHCP=no
+
+[Route]
+Gateway=192.168.254.254
+
+[Route]
+Gateway=fec0::ffff
+
+[Route]
+Destination=169.254.1.1/32
+
+[Route]
+Destination=fe80::1/128
+
+"""
+
class TestNetworkdRenderState:
def _parse_network_state_from_config(self, config):
@@ -307,5 +351,16 @@ class TestNetworkdRenderState:
assert rendered_content["eth0"] == V1_CONFIG_MULTI_SUBNETS_RENDERED
+ def test_networkd_render_v2_multi_subnets(self):
+ """
+ Ensure a device with multiple subnets gets correctly rendered.
+
+ Per systemd-networkd docs, [Route] can only contain a single instance
+ of Gateway.
+ """
+ with mock.patch("cloudinit.net.get_interfaces_by_mac"):
+ ns = self._parse_network_state_from_config(V2_CONFIG_MULTI_SUBNETS)
+ renderer = networkd.Renderer()
+ rendered_content = renderer._render_content(ns)
-# vi: ts=4 expandtab
+ assert rendered_content["eth0"] == V2_CONFIG_MULTI_SUBNETS_RENDERED