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 .. import phases
from ..tools import log_check_call from ..tools import log_check_call
import locale import locale
import logging
import os 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): class AddManifestSources(Task):
description = 'Adding sources from the manifest' description = 'Adding sources from the manifest'
phase = phases.preparation phase = phases.preparation

View file

@ -7,14 +7,14 @@ def validate_manifest(data, validator, error):
def resolve_tasks(taskset, manifest): def resolve_tasks(taskset, manifest):
import tasks
import bootstrapvz.providers.ec2.tasks.initd as initd_ec2 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 initd
from bootstrapvz.common.tasks import ssh from bootstrapvz.common.tasks import ssh
from bootstrapvz.common.tools import get_codename from bootstrapvz.common.tools import get_codename
if get_codename(manifest.system['release']) == 'wheezy': if get_codename(manifest.system['release']) == 'wheezy':
taskset.add(tasks.AddBackports) taskset.add(apt.AddBackports)
taskset.update([tasks.SetMetadataSource, taskset.update([tasks.SetMetadataSource,
tasks.AddCloudInitPackages, tasks.AddCloudInitPackages,

View file

@ -7,24 +7,10 @@ import logging
import os.path 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): class AddCloudInitPackages(Task):
description = 'Adding cloud-init package and sudo' description = 'Adding cloud-init package and sudo'
phase = phases.preparation phase = phases.preparation
predecessors = [apt.AddDefaultSources, AddBackports] predecessors = [apt.AddDefaultSources, apt.AddBackports]
@classmethod @classmethod
def run(cls, info): def run(cls, info):

View file

@ -1,11 +1,12 @@
import tasks
import os.path import os.path
import tasks
from bootstrapvz.common.tasks import apt
from bootstrapvz.common.tools import get_codename
def validate_manifest(data, validator, error): def validate_manifest(data, validator, error):
schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml')) schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml'))
validator(data, schema_path) validator(data, schema_path)
from bootstrapvz.common.tools import get_codename
if get_codename(data['system']['release']) == 'wheezy': if get_codename(data['system']['release']) == 'wheezy':
# prefs is a generator of apt preferences across files in the manifest # 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) 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): def resolve_tasks(taskset, manifest):
if get_codename(manifest.system['release']) == 'wheezy':
taskset.add(apt.AddBackports)
taskset.add(tasks.AddDockerDeps) taskset.add(tasks.AddDockerDeps)
taskset.add(tasks.AddDockerBinary) taskset.add(tasks.AddDockerBinary)
taskset.add(tasks.AddDockerInit) taskset.add(tasks.AddDockerInit)

View file

@ -1,8 +1,8 @@
import tasks
def resolve_tasks(taskset, manifest): def resolve_tasks(taskset, manifest):
from bootstrapvz.common.tasks import apt
from bootstrapvz.common.tools import get_codename from bootstrapvz.common.tools import get_codename
if get_codename(manifest.system['release']) == 'wheezy': if get_codename(manifest.system['release']) == 'wheezy':
taskset.add(tasks.AddBackports) taskset.add(apt.AddBackports)
taskset.update([tasks.AddONEContextPackage]) taskset.update([tasks.AddONEContextPackage])

View file

@ -3,25 +3,10 @@ from bootstrapvz.common.tasks import apt
from bootstrapvz.common import phases 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): class AddONEContextPackage(Task):
description = 'Adding the OpenNebula context package' description = 'Adding the OpenNebula context package'
phase = phases.preparation phase = phases.preparation
predecessors = [apt.AddDefaultSources, AddBackports] predecessors = [apt.AddDefaultSources, apt.AddBackports]
@classmethod @classmethod
def run(cls, info): def run(cls, info):

View file

@ -5,6 +5,7 @@ import tasks.configuration
import tasks.image import tasks.image
import tasks.host import tasks.host
import tasks.packages import tasks.packages
from bootstrapvz.common.tasks import apt
from bootstrapvz.common.tasks import loopback from bootstrapvz.common.tasks import loopback
from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import initd
from bootstrapvz.common.tasks import ssh from bootstrapvz.common.tasks import ssh
@ -25,7 +26,7 @@ def validate_manifest(data, validator, error):
def resolve_tasks(taskset, manifest): def resolve_tasks(taskset, manifest):
taskset.update(task_groups.get_standard_groups(manifest)) taskset.update(task_groups.get_standard_groups(manifest))
taskset.update([bootstrapvz.plugins.cloud_init.tasks.AddBackports, taskset.update([apt.AddBackports,
loopback.AddRequiredCommands, loopback.AddRequiredCommands,
loopback.Create, loopback.Create,
tasks.apt.SetPackageRepositories, tasks.apt.SetPackageRepositories,