Blame tests/unittests/test_render_cloudcfg.py

Packit Service 751c4a
"""Tests for tools/render-cloudcfg"""
Packit Service 751c4a
Packit Service 751c4a
import os
Packit Service 751c4a
import sys
Packit Service 751c4a
Packit Service 751c4a
import pytest
Packit Service 751c4a
Packit Service 751c4a
from cloudinit import subp
Packit Service 751c4a
from cloudinit import util
Packit Service 751c4a
Packit Service 751c4a
# TODO(Look to align with tools.render-cloudcfg or cloudinit.distos.OSFAMILIES)
Packit Service 751c4a
DISTRO_VARIANTS = ["amazon", "arch", "centos", "debian", "fedora", "freebsd",
Packit Service 751c4a
                   "netbsd", "openbsd", "rhel", "suse", "ubuntu", "unknown"]
Packit Service 751c4a
Packit Service 751c4a
Packit Service 751c4a
@pytest.mark.allow_subp_for(sys.executable)
Packit Service 751c4a
class TestRenderCloudCfg:
Packit Service 751c4a
Packit Service 751c4a
    cmd = [sys.executable, os.path.realpath('tools/render-cloudcfg')]
Packit Service 751c4a
    tmpl_path = os.path.realpath('config/cloud.cfg.tmpl')
Packit Service 751c4a
Packit Service 751c4a
    @pytest.mark.parametrize('variant', (DISTRO_VARIANTS))
Packit Service 751c4a
    def test_variant_sets_distro_in_cloud_cfg(self, variant, tmpdir):
Packit Service 751c4a
        outfile = tmpdir.join('outcfg').strpath
Packit Service 751c4a
        subp.subp(
Packit Service 751c4a
            self.cmd + ['--variant', variant, self.tmpl_path, outfile])
Packit Service 751c4a
        with open(outfile) as stream:
Packit Service 751c4a
            system_cfg = util.load_yaml(stream.read())
Packit Service 751c4a
        if variant == 'unknown':
Packit Service 751c4a
            variant = 'ubuntu'  # Unknown is defaulted to ubuntu
Packit Service 751c4a
        assert system_cfg['system_info']['distro'] == variant
Packit Service 751c4a
Packit Service 751c4a
    @pytest.mark.parametrize('variant', (DISTRO_VARIANTS))
Packit Service 751c4a
    def test_variant_sets_default_user_in_cloud_cfg(self, variant, tmpdir):
Packit Service 751c4a
        outfile = tmpdir.join('outcfg').strpath
Packit Service 751c4a
        subp.subp(
Packit Service 751c4a
            self.cmd + ['--variant', variant, self.tmpl_path, outfile])
Packit Service 751c4a
        with open(outfile) as stream:
Packit Service 751c4a
            system_cfg = util.load_yaml(stream.read())
Packit Service 751c4a
Packit Service 751c4a
        default_user_exceptions = {
Packit Service 751c4a
            'amazon': 'ec2-user', 'debian': 'ubuntu', 'unknown': 'ubuntu'}
Packit Service 751c4a
        default_user = system_cfg['system_info']['default_user']['name']
Packit Service 751c4a
        assert default_user == default_user_exceptions.get(variant, variant)
Packit Service 751c4a
Packit Service 751c4a
    @pytest.mark.parametrize('variant,renderers', (
Packit Service 751c4a
        ('freebsd', ['freebsd']), ('netbsd', ['netbsd']),
Packit Service 751c4a
        ('openbsd', ['openbsd']), ('ubuntu', ['netplan', 'eni', 'sysconfig']))
Packit Service 751c4a
    )
Packit Service 751c4a
    def test_variant_sets_network_renderer_priority_in_cloud_cfg(
Packit Service 751c4a
        self, variant, renderers, tmpdir
Packit Service 751c4a
    ):
Packit Service 751c4a
        outfile = tmpdir.join('outcfg').strpath
Packit Service 751c4a
        subp.subp(
Packit Service 751c4a
            self.cmd + ['--variant', variant, self.tmpl_path, outfile])
Packit Service 751c4a
        with open(outfile) as stream:
Packit Service 751c4a
            system_cfg = util.load_yaml(stream.read())
Packit Service 751c4a
Packit Service 751c4a
        assert renderers == system_cfg['system_info']['network']['renderers']