summaryrefslogtreecommitdiff
path: root/tests/unittests/net/test_netplan.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unittests/net/test_netplan.py')
-rw-r--r--tests/unittests/net/test_netplan.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/unittests/net/test_netplan.py b/tests/unittests/net/test_netplan.py
new file mode 100644
index 00000000..28b0891d
--- /dev/null
+++ b/tests/unittests/net/test_netplan.py
@@ -0,0 +1,41 @@
+import os
+from unittest import mock
+
+import pytest
+
+from cloudinit import util
+from cloudinit.net import netplan
+
+
+@pytest.fixture
+def renderer(tmp_path):
+ config = {
+ "netplan_path": str(tmp_path / "netplan/50-cloud-init.yaml"),
+ "postcmds": True,
+ }
+ yield netplan.Renderer(config)
+
+
+class TestNetplanRenderer:
+ @pytest.mark.parametrize("write_config", [True, False])
+ def test_skip_netplan_generate(self, renderer, write_config, mocker):
+ """Check `netplan generate` is called if netplan config has changed."""
+ header = "\n"
+ content = "foo"
+ renderer_mocks = mocker.patch.multiple(
+ renderer,
+ _render_content=mocker.Mock(return_value=content),
+ _netplan_generate=mocker.DEFAULT,
+ _net_setup_link=mocker.DEFAULT,
+ )
+ if write_config:
+ util.ensure_dir(os.path.dirname(renderer.netplan_path))
+ with open(renderer.netplan_path, "w") as f:
+ f.write(header)
+ f.write(content)
+
+ renderer.render_network_state(mocker.Mock())
+
+ assert renderer_mocks["_netplan_generate"].call_args_list == [
+ mock.call(run=True, same_content=write_config)
+ ]