Move AddBackports to common.tasks.apt

The `AddBackports` task is needed by many different plugins, so is
better if it is available as a common task.

This closes #96.
This commit is contained in:
Tiago Ilieve 2014-07-12 14:42:52 -03:00
parent 210999ff5d
commit 8f43ee1dc7
7 changed files with 30 additions and 38 deletions

View file

@ -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

View file

@ -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,

View file

@ -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):

View file

@ -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)

View file

@ -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])

View file

@ -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):

View file

@ -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,