From 1f6f23e68038345c6c18dd3d12112a90a8cd8528 Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Wed, 29 Apr 2015 23:39:55 +0200 Subject: [PATCH] Fix #104: Don't verify default target when adding packages --- bootstrapvz/base/pkg/packagelist.py | 10 ++++------ bootstrapvz/common/tasks/apt.py | 5 +++++ bootstrapvz/common/tasks/extlinux.py | 2 -- bootstrapvz/common/tasks/filesystem.py | 2 -- bootstrapvz/common/tasks/grub.py | 2 -- bootstrapvz/common/tasks/packages.py | 1 - bootstrapvz/common/tasks/ssh.py | 2 -- bootstrapvz/plugins/admin_user/tasks.py | 2 -- bootstrapvz/plugins/ansible/tasks.py | 2 -- bootstrapvz/plugins/chef/tasks.py | 2 -- bootstrapvz/plugins/cloud_init/tasks.py | 2 +- bootstrapvz/plugins/opennebula/tasks.py | 2 +- bootstrapvz/plugins/pip_install/tasks.py | 2 -- bootstrapvz/plugins/puppet/tasks.py | 2 -- bootstrapvz/plugins/salt/tasks.py | 2 -- bootstrapvz/plugins/unattended_upgrades/tasks.py | 2 -- bootstrapvz/plugins/vagrant/tasks.py | 2 -- bootstrapvz/providers/azure/tasks/packages.py | 2 -- bootstrapvz/providers/ec2/tasks/network.py | 2 -- bootstrapvz/providers/ec2/tasks/packages.py | 2 -- bootstrapvz/providers/gce/tasks/packages.py | 3 +-- bootstrapvz/providers/kvm/tasks/packages.py | 2 -- bootstrapvz/providers/virtualbox/tasks/packages.py | 2 -- 23 files changed, 12 insertions(+), 45 deletions(-) diff --git a/bootstrapvz/base/pkg/packagelist.py b/bootstrapvz/base/pkg/packagelist.py index 7bd1908..5d5c0c7 100644 --- a/bootstrapvz/base/pkg/packagelist.py +++ b/bootstrapvz/base/pkg/packagelist.py @@ -87,12 +87,10 @@ class PackageList(object): # The package has already been added, skip the checks below return - # Check if the target exists in the sources list, raise a PackageError if not - check_target = target - if check_target is None: - check_target = self.default_target - if not self.source_lists.target_exists(check_target): - msg = ('The target release {target} was not found in the sources list').format(target=check_target) + # Check if the target exists (unless it's the default target) in the sources list + # raise a PackageError if does not + if target not in (None, self.default_target) and not self.source_lists.target_exists(target): + msg = ('The target release {target} was not found in the sources list').format(target=target) raise PackageError(msg) # Note that we maintain the target value even if it is none. diff --git a/bootstrapvz/common/tasks/apt.py b/bootstrapvz/common/tasks/apt.py index 53c39f0..68a5cc6 100644 --- a/bootstrapvz/common/tasks/apt.py +++ b/bootstrapvz/common/tasks/apt.py @@ -87,6 +87,11 @@ class WriteSources(Task): @classmethod def run(cls, info): + if not info.source_lists.target_exists(info.manifest.system['release']): + import logging + log = logging.getLogger(__name__) + log.warn('No default target has been specified in the sources list, ' + 'installing packages may fail') for name, sources in info.source_lists.sources.iteritems(): if name == 'main': list_path = os.path.join(info.root, 'etc/apt/sources.list') diff --git a/bootstrapvz/common/tasks/extlinux.py b/bootstrapvz/common/tasks/extlinux.py index 5848a43..25da011 100644 --- a/bootstrapvz/common/tasks/extlinux.py +++ b/bootstrapvz/common/tasks/extlinux.py @@ -1,7 +1,6 @@ from bootstrapvz.base import Task from .. import phases from ..tools import log_check_call -import apt import filesystem import kernel from bootstrapvz.base.fs import partitionmaps @@ -11,7 +10,6 @@ import os class AddExtlinuxPackage(Task): description = 'Adding extlinux package' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/common/tasks/filesystem.py b/bootstrapvz/common/tasks/filesystem.py index 19acbfe..9f348e0 100644 --- a/bootstrapvz/common/tasks/filesystem.py +++ b/bootstrapvz/common/tasks/filesystem.py @@ -1,7 +1,6 @@ from bootstrapvz.base import Task from .. import phases from ..tools import log_check_call -import apt import bootstrap import host import volume @@ -51,7 +50,6 @@ class TuneVolumeFS(Task): class AddXFSProgs(Task): description = 'Adding `xfsprogs\' to the image packages' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/common/tasks/grub.py b/bootstrapvz/common/tasks/grub.py index 9aabba3..5fe60b2 100644 --- a/bootstrapvz/common/tasks/grub.py +++ b/bootstrapvz/common/tasks/grub.py @@ -1,7 +1,6 @@ from bootstrapvz.base import Task from .. import phases from ..tools import log_check_call -import apt import filesystem import kernel from bootstrapvz.base.fs import partitionmaps @@ -11,7 +10,6 @@ import os.path class AddGrubPackage(Task): description = 'Adding grub package' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/common/tasks/packages.py b/bootstrapvz/common/tasks/packages.py index 44263a5..662ae11 100644 --- a/bootstrapvz/common/tasks/packages.py +++ b/bootstrapvz/common/tasks/packages.py @@ -7,7 +7,6 @@ from ..tools import log_check_call class AddManifestPackages(Task): description = 'Adding packages from the manifest' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/common/tasks/ssh.py b/bootstrapvz/common/tasks/ssh.py index 6d3f88c..c3f14c5 100644 --- a/bootstrapvz/common/tasks/ssh.py +++ b/bootstrapvz/common/tasks/ssh.py @@ -3,14 +3,12 @@ from .. import phases from ..tools import log_check_call import os.path from . import assets -import apt import initd class AddOpenSSHPackage(Task): description = 'Adding openssh package' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/admin_user/tasks.py b/bootstrapvz/plugins/admin_user/tasks.py index 91b5235..ae7f221 100644 --- a/bootstrapvz/plugins/admin_user/tasks.py +++ b/bootstrapvz/plugins/admin_user/tasks.py @@ -1,14 +1,12 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases from bootstrapvz.common.tasks.initd import InstallInitScripts -from bootstrapvz.common.tasks import apt import os class AddSudoPackage(Task): description = 'Adding `sudo\' to the image packages' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/ansible/tasks.py b/bootstrapvz/plugins/ansible/tasks.py index 9d1c893..100e69d 100644 --- a/bootstrapvz/plugins/ansible/tasks.py +++ b/bootstrapvz/plugins/ansible/tasks.py @@ -1,6 +1,5 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt import os @@ -23,7 +22,6 @@ class CheckPlaybookPath(Task): class AddPackages(Task): description = 'Making sure python is installed' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/chef/tasks.py b/bootstrapvz/plugins/chef/tasks.py index 2f103bf..2c02adf 100644 --- a/bootstrapvz/plugins/chef/tasks.py +++ b/bootstrapvz/plugins/chef/tasks.py @@ -1,6 +1,5 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt import os @@ -23,7 +22,6 @@ class CheckAssetsPath(Task): class AddPackages(Task): description = 'Add chef package' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/cloud_init/tasks.py b/bootstrapvz/plugins/cloud_init/tasks.py index 60ba51f..2947214 100644 --- a/bootstrapvz/plugins/cloud_init/tasks.py +++ b/bootstrapvz/plugins/cloud_init/tasks.py @@ -10,7 +10,7 @@ import os.path class AddCloudInitPackages(Task): description = 'Adding cloud-init package and sudo' phase = phases.preparation - predecessors = [apt.AddDefaultSources, apt.AddBackports] + predecessors = [apt.AddBackports] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/opennebula/tasks.py b/bootstrapvz/plugins/opennebula/tasks.py index 33050dc..1dcac7e 100644 --- a/bootstrapvz/plugins/opennebula/tasks.py +++ b/bootstrapvz/plugins/opennebula/tasks.py @@ -6,7 +6,7 @@ from bootstrapvz.common import phases class AddONEContextPackage(Task): description = 'Adding the OpenNebula context package' phase = phases.preparation - predecessors = [apt.AddDefaultSources, apt.AddBackports] + predecessors = [apt.AddBackports] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/pip_install/tasks.py b/bootstrapvz/plugins/pip_install/tasks.py index 98b6bfa..c6ff89b 100644 --- a/bootstrapvz/plugins/pip_install/tasks.py +++ b/bootstrapvz/plugins/pip_install/tasks.py @@ -1,12 +1,10 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt class AddPipPackage(Task): description = 'Adding `pip\' and Co. to the image packages' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/puppet/tasks.py b/bootstrapvz/plugins/puppet/tasks.py index 02d98ab..05df26f 100644 --- a/bootstrapvz/plugins/puppet/tasks.py +++ b/bootstrapvz/plugins/puppet/tasks.py @@ -1,6 +1,5 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt from bootstrapvz.common.tools import sed_i import os @@ -40,7 +39,6 @@ class CheckManifestPath(Task): class AddPackages(Task): description = 'Add puppet package' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/salt/tasks.py b/bootstrapvz/plugins/salt/tasks.py index 6c2d3f1..008a678 100644 --- a/bootstrapvz/plugins/salt/tasks.py +++ b/bootstrapvz/plugins/salt/tasks.py @@ -1,7 +1,6 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases from bootstrapvz.common.tasks import packages -from bootstrapvz.common.tasks import apt from bootstrapvz.common.tools import log_check_call from bootstrapvz.common.tools import sed_i import os @@ -11,7 +10,6 @@ import urllib class InstallSaltDependencies(Task): description = 'Add depended packages for salt-minion' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/unattended_upgrades/tasks.py b/bootstrapvz/plugins/unattended_upgrades/tasks.py index 1299588..dd24fb5 100644 --- a/bootstrapvz/plugins/unattended_upgrades/tasks.py +++ b/bootstrapvz/plugins/unattended_upgrades/tasks.py @@ -1,12 +1,10 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt class AddUnattendedUpgradesPackage(Task): description = 'Adding `unattended-upgrades\' to the image packages' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/plugins/vagrant/tasks.py b/bootstrapvz/plugins/vagrant/tasks.py index 9f673cf..ead8569 100644 --- a/bootstrapvz/plugins/vagrant/tasks.py +++ b/bootstrapvz/plugins/vagrant/tasks.py @@ -1,7 +1,6 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases from bootstrapvz.common.tasks import workspace -from bootstrapvz.common.tasks import apt import os import shutil @@ -39,7 +38,6 @@ class CreateVagrantBoxDir(Task): class AddPackages(Task): description = 'Add packages that vagrant depends on' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/azure/tasks/packages.py b/bootstrapvz/providers/azure/tasks/packages.py index daed133..363f5fe 100644 --- a/bootstrapvz/providers/azure/tasks/packages.py +++ b/bootstrapvz/providers/azure/tasks/packages.py @@ -1,13 +1,11 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt from bootstrapvz.common.tasks.packages import InstallPackages class DefaultPackages(Task): description = 'Adding image packages required for Azure' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/ec2/tasks/network.py b/bootstrapvz/providers/ec2/tasks/network.py index 5c7bf81..efc8a56 100644 --- a/bootstrapvz/providers/ec2/tasks/network.py +++ b/bootstrapvz/providers/ec2/tasks/network.py @@ -1,6 +1,5 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt from bootstrapvz.common.tasks import kernel import os.path @@ -23,7 +22,6 @@ class EnableDHCPCDDNS(Task): class AddBuildEssentialPackage(Task): description = 'Adding build-essential package' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/ec2/tasks/packages.py b/bootstrapvz/providers/ec2/tasks/packages.py index 079d112..e02cd60 100644 --- a/bootstrapvz/providers/ec2/tasks/packages.py +++ b/bootstrapvz/providers/ec2/tasks/packages.py @@ -1,12 +1,10 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt class DefaultPackages(Task): description = 'Adding image packages required for EC2' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/gce/tasks/packages.py b/bootstrapvz/providers/gce/tasks/packages.py index b67ca54..2928a6d 100644 --- a/bootstrapvz/providers/gce/tasks/packages.py +++ b/bootstrapvz/providers/gce/tasks/packages.py @@ -8,7 +8,6 @@ import os class DefaultPackages(Task): description = 'Adding image packages required for GCE' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): @@ -32,7 +31,7 @@ class DefaultPackages(Task): class ReleasePackages(Task): description = 'Adding release-specific packages required for GCE' phase = phases.preparation - predecessors = [apt.AddDefaultSources, apt.AddBackports, DefaultPackages] + predecessors = [apt.AddBackports, DefaultPackages] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/kvm/tasks/packages.py b/bootstrapvz/providers/kvm/tasks/packages.py index 30d3eda..9fe6bbe 100644 --- a/bootstrapvz/providers/kvm/tasks/packages.py +++ b/bootstrapvz/providers/kvm/tasks/packages.py @@ -1,12 +1,10 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt class DefaultPackages(Task): description = 'Adding image packages required for kvm' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/virtualbox/tasks/packages.py b/bootstrapvz/providers/virtualbox/tasks/packages.py index d8a192d..8bae0b8 100644 --- a/bootstrapvz/providers/virtualbox/tasks/packages.py +++ b/bootstrapvz/providers/virtualbox/tasks/packages.py @@ -1,12 +1,10 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import apt class DefaultPackages(Task): description = 'Adding image packages required for virtualbox' phase = phases.preparation - predecessors = [apt.AddDefaultSources] @classmethod def run(cls, info):