cloud-init/tests/unittests/test_runs/test_merge_run.py
Joshua Harlow ef18ab2f4f Ensure that at needed stages the local variables
of the init class are reset so that when they are
regenerated that they will use the updated data
instead of using previous data (since they weren't reset).
2012-11-08 16:30:57 -08:00

53 lines
1.8 KiB
Python

import os
from tests.unittests import helpers
from cloudinit.settings import (PER_INSTANCE)
from cloudinit import stages
from cloudinit import util
class TestSimpleRun(helpers.FilesystemMockingTestCase):
def _patchIn(self, root):
self.restore()
self.patchOS(root)
self.patchUtils(root)
def test_none_ds(self):
new_root = self.makeDir()
self.replicateTestRoot('simple_ubuntu', new_root)
cfg = {
'datasource_list': ['None'],
'cloud_init_modules': ['write-files'],
}
ud = self.readResource('user_data.1.txt')
cloud_cfg = util.yaml_dumps(cfg)
util.ensure_dir(os.path.join(new_root, 'etc', 'cloud'))
util.write_file(os.path.join(new_root, 'etc',
'cloud', 'cloud.cfg'), cloud_cfg)
self._patchIn(new_root)
# Now start verifying whats created
initer = stages.Init()
initer.read_cfg()
initer.initialize()
initer.fetch()
initer.datasource.userdata_raw = ud
iid = initer.instancify()
initer.update()
initer.cloudify().run('consume_userdata',
initer.consume_userdata,
args=[PER_INSTANCE],
freq=PER_INSTANCE)
mirrors = initer.distro.get_option('package_mirrors')
self.assertEquals(1, len(mirrors))
mirror = mirrors[0]
self.assertEquals(mirror['arches'], ['i386', 'amd64', 'blah'])
mods = stages.Modules(initer)
(which_ran, failures) = mods.run_section('cloud_init_modules')
self.assertTrue(len(failures) == 0)
self.assertTrue(os.path.exists('/etc/blah.ini'))
self.assertIn('write-files', which_ran)
contents = util.load_file('/etc/blah.ini')
self.assertEquals(contents, 'blah')