bootstrap-vz/plugins/cloud_init/__init__.py
2013-12-25 12:47:17 +00:00

43 lines
1.3 KiB
Python

def validate_manifest(data, schema_validate):
from os import path
schema_path = path.normpath(path.join(path.dirname(__file__), 'manifest-schema.json'))
schema_validate(data, schema_path)
packages = data['plugins']['packages']
cloud_init_installed = False
if 'remote' in packages:
for package in packages['remote']:
if isinstance(package, basestring):
name = package
else:
name = package['name']
if name == 'cloud-init':
cloud_init_installed = True
break
if not cloud_init_installed:
from common.exceptions import ManifestError
raise ManifestError('The cloud-init package must be installed for the cloud_init plugin to work')
def resolve_tasks(tasklist, manifest):
from tasks import SetUsername
from tasks import SetMetadataSource
from tasks import AutoSetMetadataSource
from tasks import DisableModules
from providers.ec2.tasks.initd import AddEC2InitScripts
from common.tasks import initd
options = manifest.plugins['cloud_init']
tasklist.add(AutoSetMetadataSource)
if 'username' in options:
tasklist.add(SetUsername)
if 'disable_modules' in options:
tasklist.add(DisableModules)
if 'metadata_sources' in options:
tasklist.add(SetMetadataSource)
tasklist.remove(AddEC2InitScripts,
initd.AddExpandRoot,
initd.AdjustExpandRootScript,
initd.AddSSHKeyGeneration)