diff --git a/bootstrapvz/common/tasks/apt.py b/bootstrapvz/common/tasks/apt.py index 87732f2..e757394 100644 --- a/bootstrapvz/common/tasks/apt.py +++ b/bootstrapvz/common/tasks/apt.py @@ -2,9 +2,26 @@ from bootstrapvz.base import Task from .. import phases from ..tools import log_check_call import locale +import logging import os +class AddBackports(Task): + description = 'Adding backports to the apt sources' + phase = phases.preparation + + @classmethod + def run(cls, info): + if info.source_lists.target_exists('{system.release}-backports'): + msg = ('{system.release}-backports target already exists').format(**info.manifest_vars) + logging.getLogger(__name__).info(msg) + elif info.release_codename == 'sid': + logging.getLogger(__name__).info('There are no backports for sid/unstable') + else: + info.source_lists.add('backports', 'deb {apt_mirror} {system.release}-backports main') + info.source_lists.add('backports', 'deb-src {apt_mirror} {system.release}-backports main') + + class AddManifestSources(Task): description = 'Adding sources from the manifest' phase = phases.preparation diff --git a/bootstrapvz/plugins/cloud_init/__init__.py b/bootstrapvz/plugins/cloud_init/__init__.py index 0268d61..db3571f 100644 --- a/bootstrapvz/plugins/cloud_init/__init__.py +++ b/bootstrapvz/plugins/cloud_init/__init__.py @@ -7,14 +7,14 @@ def validate_manifest(data, validator, error): def resolve_tasks(taskset, manifest): - import tasks import bootstrapvz.providers.ec2.tasks.initd as initd_ec2 + from bootstrapvz.common.tasks import apt from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import ssh from bootstrapvz.common.tools import get_codename if get_codename(manifest.system['release']) == 'wheezy': - taskset.add(tasks.AddBackports) + taskset.add(apt.AddBackports) taskset.update([tasks.SetMetadataSource, tasks.AddCloudInitPackages, diff --git a/bootstrapvz/plugins/cloud_init/tasks.py b/bootstrapvz/plugins/cloud_init/tasks.py index 6f64c38..39bb7be 100644 --- a/bootstrapvz/plugins/cloud_init/tasks.py +++ b/bootstrapvz/plugins/cloud_init/tasks.py @@ -7,24 +7,10 @@ import logging import os.path -class AddBackports(Task): - description = 'Adding backports to the apt sources' - phase = phases.preparation - - @classmethod - def run(cls, info): - if info.source_lists.target_exists('{system.release}-backports'): - msg = ('{system.release}-backports target already exists').format(**info.manifest_vars) - logging.getLogger(__name__).info(msg) - else: - info.source_lists.add('backports', 'deb {apt_mirror} {system.release}-backports main') - info.source_lists.add('backports', 'deb-src {apt_mirror} {system.release}-backports main') - - class AddCloudInitPackages(Task): description = 'Adding cloud-init package and sudo' phase = phases.preparation - predecessors = [apt.AddDefaultSources, AddBackports] + predecessors = [apt.AddDefaultSources, apt.AddBackports] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/docker_daemon/__init__.py b/bootstrapvz/plugins/docker_daemon/__init__.py index b85e32f..ef3b320 100644 --- a/bootstrapvz/plugins/docker_daemon/__init__.py +++ b/bootstrapvz/plugins/docker_daemon/__init__.py @@ -1,11 +1,12 @@ -import tasks import os.path +import tasks +from bootstrapvz.common.tasks import apt +from bootstrapvz.common.tools import get_codename def validate_manifest(data, validator, error): schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml')) validator(data, schema_path) - from bootstrapvz.common.tools import get_codename if get_codename(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) @@ -15,6 +16,8 @@ def validate_manifest(data, validator, error): def resolve_tasks(taskset, manifest): + if get_codename(manifest.system['release']) == 'wheezy': + taskset.add(apt.AddBackports) taskset.add(tasks.AddDockerDeps) taskset.add(tasks.AddDockerBinary) taskset.add(tasks.AddDockerInit) diff --git a/bootstrapvz/plugins/opennebula/__init__.py b/bootstrapvz/plugins/opennebula/__init__.py index bb90773..d138c68 100644 --- a/bootstrapvz/plugins/opennebula/__init__.py +++ b/bootstrapvz/plugins/opennebula/__init__.py @@ -1,8 +1,8 @@ -import tasks def resolve_tasks(taskset, manifest): + from bootstrapvz.common.tasks import apt from bootstrapvz.common.tools import get_codename if get_codename(manifest.system['release']) == 'wheezy': - taskset.add(tasks.AddBackports) + taskset.add(apt.AddBackports) taskset.update([tasks.AddONEContextPackage]) diff --git a/bootstrapvz/plugins/opennebula/tasks.py b/bootstrapvz/plugins/opennebula/tasks.py index 4e5c48b..d37e9be 100644 --- a/bootstrapvz/plugins/opennebula/tasks.py +++ b/bootstrapvz/plugins/opennebula/tasks.py @@ -3,25 +3,10 @@ from bootstrapvz.common.tasks import apt from bootstrapvz.common import phases -class AddBackports(Task): - description = 'Adding backports to the apt sources' - phase = phases.preparation - - @classmethod - def run(cls, info): - if info.source_lists.target_exists('{system.release}-backports'): - import logging - msg = ('{system.release}-backports target already exists').format(**info.manifest_vars) - logging.getLogger(__name__).info(msg) - else: - info.source_lists.add('backports', 'deb {apt_mirror} {system.release}-backports main') - info.source_lists.add('backports', 'deb-src {apt_mirror} {system.release}-backports main') - - class AddONEContextPackage(Task): description = 'Adding the OpenNebula context package' phase = phases.preparation - predecessors = [apt.AddDefaultSources, AddBackports] + predecessors = [apt.AddDefaultSources, apt.AddBackports] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/gce/__init__.py b/bootstrapvz/providers/gce/__init__.py index 710e893..8278c72 100644 --- a/bootstrapvz/providers/gce/__init__.py +++ b/bootstrapvz/providers/gce/__init__.py @@ -5,6 +5,7 @@ import tasks.configuration import tasks.image import tasks.host import tasks.packages +from bootstrapvz.common.tasks import apt from bootstrapvz.common.tasks import loopback from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import ssh @@ -25,7 +26,7 @@ def validate_manifest(data, validator, error): def resolve_tasks(taskset, manifest): taskset.update(task_groups.get_standard_groups(manifest)) - taskset.update([bootstrapvz.plugins.cloud_init.tasks.AddBackports, + taskset.update([apt.AddBackports, loopback.AddRequiredCommands, loopback.Create, tasks.apt.SetPackageRepositories,