diff --git a/bootstrapvz/common/tasks/image.py b/bootstrapvz/common/tasks/image.py new file mode 100644 index 0000000..375a254 --- /dev/null +++ b/bootstrapvz/common/tasks/image.py @@ -0,0 +1,21 @@ +from bootstrapvz.base import Task +from bootstrapvz.common import phases + + +class MoveImage(Task): + description = 'Moving volume image' + phase = phases.image_registration + + @classmethod + def run(cls, info): + image_name = info.manifest.image['name'].format(**info.manifest_vars) + filename = image_name + '.' + info.volume.extension + + import os.path + destination = os.path.join(info.manifest.bootstrapper['workspace'], filename) + import shutil + shutil.move(info.volume.image_path, destination) + info.volume.image_path = destination + import logging + log = logging.getLogger(__name__) + log.info('The volume image has been moved to ' + destination) diff --git a/bootstrapvz/common/tasks/loopback.py b/bootstrapvz/common/tasks/loopback.py index d52b3de..721dad6 100644 --- a/bootstrapvz/common/tasks/loopback.py +++ b/bootstrapvz/common/tasks/loopback.py @@ -1,5 +1,5 @@ from bootstrapvz.base import Task -from .. import phases +from bootstrapvz.common import phases import host import volume @@ -30,22 +30,3 @@ class Create(Task): import os.path image_path = os.path.join(info.workspace, 'volume.' + info.volume.extension) info.volume.create(image_path) - - -class MoveImage(Task): - description = 'Moving volume image' - phase = phases.image_registration - - @classmethod - def run(cls, info): - image_name = info.manifest.image['name'].format(**info.manifest_vars) - filename = image_name + '.' + info.volume.extension - - import os.path - destination = os.path.join(info.manifest.bootstrapper['workspace'], filename) - import shutil - shutil.move(info.volume.image_path, destination) - info.volume.image_path = destination - import logging - log = logging.getLogger(__name__) - log.info('The volume image has been moved to ' + destination) diff --git a/bootstrapvz/plugins/vagrant/__init__.py b/bootstrapvz/plugins/vagrant/__init__.py index b820a8c..bfe6168 100644 --- a/bootstrapvz/plugins/vagrant/__init__.py +++ b/bootstrapvz/plugins/vagrant/__init__.py @@ -1,22 +1,22 @@ import tasks +from bootstrapvz.common import task_groups +from bootstrapvz.common.tasks import image +from bootstrapvz.common.tasks import ssh +from bootstrapvz.common.tasks import volume +import os def validate_manifest(data, validator, error): - import os.path schema_path = os.path.normpath(os.path.join(os.path.dirname(__file__), 'manifest-schema.yml')) validator(data, schema_path) def resolve_tasks(taskset, manifest): - from bootstrapvz.common import task_groups - from bootstrapvz.common.tasks import ssh taskset.update(task_groups.ssh_group) + + taskset.discard(image.MoveImage) taskset.discard(ssh.DisableSSHPasswordAuthentication) - from bootstrapvz.common.tasks import loopback - taskset.discard(loopback.MoveImage) - - from bootstrapvz.common.tasks import volume taskset.update([tasks.CheckBoxPath, tasks.CreateVagrantBoxDir, tasks.AddPackages, diff --git a/bootstrapvz/providers/azure/__init__.py b/bootstrapvz/providers/azure/__init__.py index 3f28a67..3bac007 100644 --- a/bootstrapvz/providers/azure/__init__.py +++ b/bootstrapvz/providers/azure/__init__.py @@ -1,6 +1,7 @@ from bootstrapvz.common import task_groups import tasks.packages import tasks.boot +from bootstrapvz.common.tasks import image from bootstrapvz.common.tasks import loopback from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import ssh @@ -19,7 +20,7 @@ def resolve_tasks(taskset, manifest): tasks.packages.DefaultPackages, loopback.AddRequiredCommands, loopback.Create, - loopback.MoveImage, + image.MoveImage, initd.InstallInitScripts, ssh.AddOpenSSHPackage, ssh.ShredHostkeys, diff --git a/bootstrapvz/providers/gce/__init__.py b/bootstrapvz/providers/gce/__init__.py index cfabcf7..2cd2f24 100644 --- a/bootstrapvz/providers/gce/__init__.py +++ b/bootstrapvz/providers/gce/__init__.py @@ -8,6 +8,7 @@ import tasks.host import tasks.packages from bootstrapvz.common.tasks import apt from bootstrapvz.common.tasks import boot +from bootstrapvz.common.tasks import image from bootstrapvz.common.tasks import loopback from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import kernel @@ -47,7 +48,7 @@ def resolve_tasks(taskset, manifest): ssh.DisableSSHPasswordAuthentication, tasks.apt.CleanGoogleRepositoriesAndKeys, - loopback.MoveImage, + image.MoveImage, tasks.image.CreateTarball, volume.Delete, ]) diff --git a/bootstrapvz/providers/gce/tasks/image.py b/bootstrapvz/providers/gce/tasks/image.py index 8dc18fd..7b674cc 100644 --- a/bootstrapvz/providers/gce/tasks/image.py +++ b/bootstrapvz/providers/gce/tasks/image.py @@ -1,6 +1,6 @@ from bootstrapvz.base import Task from bootstrapvz.common import phases -from bootstrapvz.common.tasks import loopback +from bootstrapvz.common.tasks import image from bootstrapvz.common.tools import log_check_call import os.path @@ -8,7 +8,7 @@ import os.path class CreateTarball(Task): description = 'Creating tarball with image' phase = phases.image_registration - predecessors = [loopback.MoveImage] + predecessors = [image.MoveImage] @classmethod def run(cls, info): diff --git a/bootstrapvz/providers/kvm/__init__.py b/bootstrapvz/providers/kvm/__init__.py index 10afcb0..415e42d 100644 --- a/bootstrapvz/providers/kvm/__init__.py +++ b/bootstrapvz/providers/kvm/__init__.py @@ -1,5 +1,6 @@ from bootstrapvz.common import task_groups import tasks.packages +from bootstrapvz.common.tasks import image from bootstrapvz.common.tasks import loopback from bootstrapvz.common.tasks import initd from bootstrapvz.common.tasks import ssh @@ -21,7 +22,7 @@ def resolve_tasks(taskset, manifest): ssh.AddOpenSSHPackage, ssh.ShredHostkeys, ssh.AddSSHKeyGeneration, - loopback.MoveImage, + image.MoveImage, ]) if manifest.provider.get('virtio', []): diff --git a/bootstrapvz/providers/virtualbox/__init__.py b/bootstrapvz/providers/virtualbox/__init__.py index 6f62d67..05cc223 100644 --- a/bootstrapvz/providers/virtualbox/__init__.py +++ b/bootstrapvz/providers/virtualbox/__init__.py @@ -1,5 +1,6 @@ from bootstrapvz.common import task_groups import tasks.packages +from bootstrapvz.common.tasks import image from bootstrapvz.common.tasks import loopback @@ -15,7 +16,7 @@ def resolve_tasks(taskset, manifest): taskset.update([tasks.packages.DefaultPackages, loopback.AddRequiredCommands, loopback.Create, - loopback.MoveImage, + image.MoveImage, ]) if manifest.provider.get('guest_additions', False):