From 38bcb12c7201bf310f3b9175a24fbc8d62912e54 Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Sun, 6 Oct 2013 14:06:01 +0200 Subject: [PATCH] SetBootMountDir task in prebootstrapped plugin --- plugins/prebootstrapped/__init__.py | 5 +++++ plugins/prebootstrapped/tasks.py | 18 ++++++++++++++---- 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/plugins/prebootstrapped/__init__.py b/plugins/prebootstrapped/__init__.py index ff6aec9..b0ee99f 100644 --- a/plugins/prebootstrapped/__init__.py +++ b/plugins/prebootstrapped/__init__.py @@ -2,6 +2,7 @@ from tasks import Snapshot from tasks import CopyImage from tasks import CreateFromSnapshot from tasks import CreateFromImage +from tasks import SetBootMountDir from providers.ec2.tasks import ebs from common.tasks import loopback from common.tasks import volume @@ -23,12 +24,16 @@ def tasks(tasklist, manifest): if 'snapshot' in settings and settings['snapshot'] is not None: tasklist.replace(ebs.Create, CreateFromSnapshot) tasklist.remove(*skip_tasks) + if 'boot' in manifest.volume['partitions']: + tasklist.add(SetBootMountDir) else: tasklist.add(Snapshot) else: if 'image' in settings and settings['image'] is not None: tasklist.replace(loopback.Create, CreateFromImage) tasklist.remove(*skip_tasks) + if 'boot' in manifest.volume['partitions']: + tasklist.add(SetBootMountDir) else: tasklist.add(CopyImage) diff --git a/plugins/prebootstrapped/tasks.py b/plugins/prebootstrapped/tasks.py index 135cabb..4bbd884 100644 --- a/plugins/prebootstrapped/tasks.py +++ b/plugins/prebootstrapped/tasks.py @@ -3,6 +3,9 @@ from common import phases from providers.ec2.tasks import ebs from common.tasks import volume from common.tasks import bootstrap +from common.tasks import filesystem +from shutil import copyfile +import os.path import time import logging log = logging.getLogger(__name__) @@ -43,8 +46,6 @@ class CopyImage(Task): after = [bootstrap.Bootstrap] def run(self, info): - import os.path - from shutil import copyfile loopback_backup_name = 'volume-{id:x}.{ext}.backup'.format(id=info.run_id, ext=info.volume.extension) destination = os.path.join(info.manifest.bootstrapper['workspace'], loopback_backup_name) copyfile(info.volume.image_path, destination) @@ -58,14 +59,23 @@ class CreateFromImage(Task): before = [volume.Attach] def run(self, info): - import os.path - from shutil import copyfile info.volume.image_path = os.path.join(info.workspace, 'volume.{ext}'.format(ext=info.volume.extension)) loopback_backup_path = info.manifest.plugins['prebootstrapped']['image'] copyfile(loopback_backup_path, info.volume.image_path) + set_fs_states(info.volume) +class SetBootMountDir(Task): + description = 'Setting mountpoint for the boot partition' + phase = phases.volume_mounting + after = [filesystem.MountRoot] + before = [filesystem.MountBoot] + + def run(self, info): + info.boot_dir = os.path.join(info.root, 'boot') + + def set_fs_states(volume): volume.fsm.current = 'detached'