1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
"""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", "eurolinux", "fedora",
"freebsd", "netbsd", "openbsd", "photon", "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']
|