From 3cf6a20ba4085fd5bfa316a7b3e1b4fccf94a5b4 Mon Sep 17 00:00:00 2001 From: Anders Ingemann Date: Sun, 30 Jun 2013 23:26:45 +0200 Subject: [PATCH] Unfinished new plugin to speed up bootstrapping process when developing --- plugins/prebootstrapped/__init__.py | 6 ++++++ plugins/prebootstrapped/ebs.py | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 plugins/prebootstrapped/__init__.py create mode 100644 plugins/prebootstrapped/ebs.py diff --git a/plugins/prebootstrapped/__init__.py b/plugins/prebootstrapped/__init__.py new file mode 100644 index 0000000..66baa83 --- /dev/null +++ b/plugins/prebootstrapped/__init__.py @@ -0,0 +1,6 @@ + + +def tasks(tasklist, manifest): + from ebs import CreateVolumeFromSnapshot + from providers.ec2.tasks.ebs import CreateVolume + tasklist.replace(CreateVolume, CreateVolumeFromSnapshot()) diff --git a/plugins/prebootstrapped/ebs.py b/plugins/prebootstrapped/ebs.py new file mode 100644 index 0000000..e58abda --- /dev/null +++ b/plugins/prebootstrapped/ebs.py @@ -0,0 +1,21 @@ +from base import Task +from common import phases +from connection import Connect +import time + + +class CreateVolumeFromSnapshot(Task): + phase = phases.volume_creation + after = [Connect] + + description = 'Creating an EBS volume from a snapshot' + + def run(self, info): + volume_size = int(info.manifest.volume['size']/1024) + snapshot_id = info.manifest.plugins['prebootstrapped'].snapshot_id + info.volume = info.connection.create_volume(volume_size, + info.host['availabilityZone'], + snapshot=snapshot_id) + while info.volume.volume_state() != 'available': + time.sleep(5) + info.volume.update()