summaryrefslogtreecommitdiff
path: root/tests/unittests/test_render_cloudcfg.py
diff options
context:
space:
mode:
authorzdc <zdc@users.noreply.github.com>2020-09-15 21:35:20 +0300
committerGitHub <noreply@github.com>2020-09-15 21:35:20 +0300
commit76adf82b8a4dbcf636151d292175b7d1ac182fcf (patch)
treef57f3db085a724df237ffa64b589c6bb6dd3b28f /tests/unittests/test_render_cloudcfg.py
parent1a790ee102fd405e5c3a20a17a69ba0c118ed874 (diff)
parent7cd260b313267dc7123cb99a75d4555e24909cca (diff)
downloadvyos-cloud-init-76adf82b8a4dbcf636151d292175b7d1ac182fcf.tar.gz
vyos-cloud-init-76adf82b8a4dbcf636151d292175b7d1ac182fcf.zip
Merge pull request #18 from zdc/T2117-equuleus-20.3
T2117: Cloud-init updated to 20.3
Diffstat (limited to 'tests/unittests/test_render_cloudcfg.py')
-rw-r--r--tests/unittests/test_render_cloudcfg.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/tests/unittests/test_render_cloudcfg.py b/tests/unittests/test_render_cloudcfg.py
new file mode 100644
index 00000000..495e2669
--- /dev/null
+++ b/tests/unittests/test_render_cloudcfg.py
@@ -0,0 +1,59 @@
+"""Tests for tools/render-cloudcfg"""
+
+import os
+import sys
+
+import pytest
+
+from cloudinit import subp
+from cloudinit import util
+
+# TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES)
+DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd",
+ "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"]
+
+
+@pytest.mark.allow_subp_for(sys.executable)
+class TestRenderCloudCfg:
+
+ cmd = [sys.executable, os.path.realpath('tools/render-cloudcfg')]
+ tmpl_path = os.path.realpath('config/cloud.cfg.tmpl')
+
+ @pytest.mark.parametrize('variant', (DISTRO_VARIANTS))
+ def test_variant_sets_distro_in_cloud_cfg(self, variant, tmpdir):
+ outfile = tmpdir.join('outcfg').strpath
+ subp.subp(
+ self.cmd + ['--variant', variant, self.tmpl_path, outfile])
+ with open(outfile) as stream:
+ system_cfg = util.load_yaml(stream.read())
+ if variant == 'unknown':
+ variant = 'ubuntu' # Unknown is defaulted to ubuntu
+ assert system_cfg['system_info']['distro'] == variant
+
+ @pytest.mark.parametrize('variant', (DISTRO_VARIANTS))
+ def test_variant_sets_default_user_in_cloud_cfg(self, variant, tmpdir):
+ outfile = tmpdir.join('outcfg').strpath
+ subp.subp(
+ self.cmd + ['--variant', variant, self.tmpl_path, outfile])
+ with open(outfile) as stream:
+ system_cfg = util.load_yaml(stream.read())
+
+ default_user_exceptions = {
+ 'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'}
+ default_user = system_cfg['system_info']['default_user']['name']
+ assert default_user == default_user_exceptions.get(variant, variant)
+
+ @pytest.mark.parametrize('variant,renderers', (
+ ('freebsd', ['freebsd']), ('netbsd', ['netbsd']),
+ ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig']))
+ )
+ def test_variant_sets_network_renderer_priority_in_cloud_cfg(
+ self, variant, renderers, tmpdir
+ ):
+ outfile = tmpdir.join('outcfg').strpath
+ subp.subp(
+ self.cmd + ['--variant', variant, self.tmpl_path, outfile])
+ with open(outfile) as stream:
+ system_cfg = util.load_yaml(stream.read())
+
+ assert renderers == system_cfg['system_info']['network']['renderers']