2013-06-30 23:26:45 +02:00
|
|
|
from base import Task
|
|
|
|
from common import phases
|
2013-06-30 23:56:09 +02:00
|
|
|
from providers.ec2.tasks import connection
|
|
|
|
from providers.ec2.tasks import ebs
|
2013-06-30 23:26:45 +02:00
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
class CreateVolumeFromSnapshot(Task):
|
|
|
|
phase = phases.volume_creation
|
2013-06-30 23:56:09 +02:00
|
|
|
after = [connection.Connect]
|
|
|
|
before = [ebs.AttachVolume]
|
2013-06-30 23:26:45 +02:00
|
|
|
|
2013-06-30 23:56:09 +02:00
|
|
|
description = 'Creating EBS volume from a snapshot'
|
2013-06-30 23:26:45 +02:00
|
|
|
|
|
|
|
def run(self, info):
|
|
|
|
volume_size = int(info.manifest.volume['size']/1024)
|
2013-06-30 23:56:09 +02:00
|
|
|
snapshot = info.manifest.plugins['prebootstrapped']['snapshot']
|
2013-06-30 23:26:45 +02:00
|
|
|
info.volume = info.connection.create_volume(volume_size,
|
|
|
|
info.host['availabilityZone'],
|
2013-06-30 23:56:09 +02:00
|
|
|
snapshot=snapshot)
|
2013-06-30 23:26:45 +02:00
|
|
|
while info.volume.volume_state() != 'available':
|
|
|
|
time.sleep(5)
|
|
|
|
info.volume.update()
|