Blame tests/unittests/test_handler/test_handler_etc_hosts.py

Packit Service a04d08
# This file is part of cloud-init. See LICENSE file for license information.
Packit Service a04d08
Packit Service a04d08
from cloudinit.config import cc_update_etc_hosts
Packit Service a04d08
Packit Service a04d08
from cloudinit import cloud
Packit Service a04d08
from cloudinit import distros
Packit Service a04d08
from cloudinit import helpers
Packit Service a04d08
from cloudinit import util
Packit Service a04d08
Packit Service a04d08
from cloudinit.tests import helpers as t_help
Packit Service a04d08
Packit Service a04d08
import logging
Packit Service a04d08
import os
Packit Service a04d08
import shutil
Packit Service a04d08
Packit Service a04d08
LOG = logging.getLogger(__name__)
Packit Service a04d08
Packit Service a04d08
Packit Service a04d08
class TestHostsFile(t_help.FilesystemMockingTestCase):
Packit Service a04d08
    def setUp(self):
Packit Service a04d08
        super(TestHostsFile, self).setUp()
Packit Service a04d08
        self.tmp = self.tmp_dir()
Packit Service a04d08
Packit Service a04d08
    def _fetch_distro(self, kind):
Packit Service a04d08
        cls = distros.fetch(kind)
Packit Service a04d08
        paths = helpers.Paths({})
Packit Service a04d08
        return cls(kind, {}, paths)
Packit Service a04d08
Packit Service a04d08
    def test_write_etc_hosts_suse_localhost(self):
Packit Service a04d08
        cfg = {
Packit Service a04d08
            'manage_etc_hosts': 'localhost',
Packit Service a04d08
            'hostname': 'cloud-init.test.us'
Packit Service a04d08
        }
Packit Service a04d08
        os.makedirs('%s/etc/' % self.tmp)
Packit Service a04d08
        hosts_content = '192.168.1.1 blah.blah.us blah\n'
Packit Service a04d08
        fout = open('%s/etc/hosts' % self.tmp, 'w')
Packit Service a04d08
        fout.write(hosts_content)
Packit Service a04d08
        fout.close()
Packit Service a04d08
        distro = self._fetch_distro('sles')
Packit Service a04d08
        distro.hosts_fn = '%s/etc/hosts' % self.tmp
Packit Service a04d08
        paths = helpers.Paths({})
Packit Service a04d08
        ds = None
Packit Service a04d08
        cc = cloud.Cloud(ds, paths, {}, distro, None)
Packit Service a04d08
        self.patchUtils(self.tmp)
Packit Service a04d08
        cc_update_etc_hosts.handle('test', cfg, cc, LOG, [])
Packit Service a04d08
        contents = util.load_file('%s/etc/hosts' % self.tmp)
Packit Service 751c4a
        if '127.0.1.1\tcloud-init.test.us\tcloud-init' not in contents:
Packit Service 751c4a
            self.assertIsNone('No entry for 127.0.1.1 in etc/hosts')
Packit Service a04d08
        if '192.168.1.1\tblah.blah.us\tblah' not in contents:
Packit Service a04d08
            self.assertIsNone('Default etc/hosts content modified')
Packit Service a04d08
Packit Service a04d08
    @t_help.skipUnlessJinja()
Packit Service a04d08
    def test_write_etc_hosts_suse_template(self):
Packit Service a04d08
        cfg = {
Packit Service a04d08
            'manage_etc_hosts': 'template',
Packit Service a04d08
            'hostname': 'cloud-init.test.us'
Packit Service a04d08
        }
Packit Service a04d08
        shutil.copytree('templates', '%s/etc/cloud/templates' % self.tmp)
Packit Service a04d08
        distro = self._fetch_distro('sles')
Packit Service a04d08
        paths = helpers.Paths({})
Packit Service a04d08
        paths.template_tpl = '%s' % self.tmp + '/etc/cloud/templates/%s.tmpl'
Packit Service a04d08
        ds = None
Packit Service a04d08
        cc = cloud.Cloud(ds, paths, {}, distro, None)
Packit Service a04d08
        self.patchUtils(self.tmp)
Packit Service a04d08
        cc_update_etc_hosts.handle('test', cfg, cc, LOG, [])
Packit Service a04d08
        contents = util.load_file('%s/etc/hosts' % self.tmp)
Packit Service 751c4a
        if '127.0.1.1 cloud-init.test.us cloud-init' not in contents:
Packit Service 751c4a
            self.assertIsNone('No entry for 127.0.1.1 in etc/hosts')
Packit Service a04d08
        if '::1 cloud-init.test.us cloud-init' not in contents:
Packit Service a04d08
            self.assertIsNone('No entry for 127.0.0.1 in etc/hosts')