from bootstrapvz.common.tools import rel_path from . import tasks from bootstrapvz.common.tasks import apt from bootstrapvz.common.releases import wheezy def validate_manifest(data, validator, error): validator(data, rel_path(__file__, 'manifest-schema.yml')) from bootstrapvz.common.releases import get_release if get_release(data['system']['release']) == wheezy: # prefs is a generator of apt preferences across files in the manifest prefs = (item for vals in data.get('packages', {}).get('preferences', {}).values() for item in vals) if not any('linux-image' in item['package'] and 'wheezy-backports' in item['pin'] for item in prefs): msg = 'The backports kernel is required for the docker daemon to function properly' error(msg, ['packages', 'preferences']) def resolve_tasks(taskset, manifest): if manifest.release == wheezy: taskset.add(apt.AddBackports) taskset.add(tasks.AddDockerDeps) taskset.add(tasks.AddDockerBinary) taskset.add(tasks.AddDockerInit) taskset.add(tasks.EnableMemoryCgroup) if manifest.plugins['docker_daemon'].get('pull_images', []): taskset.add(tasks.PullDockerImages)