From d0540b04267badb969cb680b715db83344953c6d Mon Sep 17 00:00:00 2001
From: willthames <will@thames.id.au>
Date: Tue, 15 Oct 2013 16:26:11 +1000
Subject: [PATCH] Added ability to create EC2 volume from snapshot

ec2_vol module now takes optional snapshot argument
Added relevant module argument handler and documentation
---
 cloud/ec2_vol | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/cloud/ec2_vol b/cloud/ec2_vol
index a60e0b71f81..d3c527f7378 100644
--- a/cloud/ec2_vol
+++ b/cloud/ec2_vol
@@ -77,6 +77,11 @@ options:
     required: false
     default: null
     aliases: ['aws_zone', 'ec2_zone']
+  snapshot:
+    description:
+      - snapshot ID on which to base the volume
+    required: false
+    default: null
 requirements: [ "boto" ]
 author: Lester Wade
 '''
@@ -139,6 +144,7 @@ def main():
             ec2_url = dict(),
             ec2_secret_key = dict(aliases=['aws_secret_key', 'secret_key'], no_log=True),
             ec2_access_key = dict(aliases=['aws_access_key', 'access_key']),
+            snapshot = dict(),
         )
     )
 
@@ -147,6 +153,7 @@ def main():
     iops = module.params.get('iops')
     device_name = module.params.get('device_name')
     zone = module.params.get('zone')
+    snapshot = module.params.get('snapshot')
    
     ec2 = ec2_connect(module)
 
@@ -178,7 +185,7 @@ def main():
     # If no instance supplied, try volume creation based on module parameters.
 
     try:
-        volume = ec2.create_volume(volume_size, zone, None, volume_type, iops)
+        volume = ec2.create_volume(volume_size, zone, snapshot, volume_type, iops)
         while volume.status != 'available':
             time.sleep(3)
             volume.update()