You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by al...@apache.org on 2015/03/11 09:52:05 UTC
libcloud git commit: Add snapshot_id to OS and EC2 StorageVolume extra
Repository: libcloud
Updated Branches:
refs/heads/trunk a2b04ff59 -> e90e75934
Add snapshot_id to OS and EC2 StorageVolume extra
Closes #479
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/e90e7593
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/e90e7593
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/e90e7593
Branch: refs/heads/trunk
Commit: e90e759341e36d6168756c59648d9088ae8499d2
Parents: a2b04ff
Author: Allard Hoeve <al...@byte.nl>
Authored: Fri Mar 6 17:02:26 2015 +0100
Committer: Allard Hoeve <al...@byte.nl>
Committed: Wed Mar 11 09:51:28 2015 +0100
----------------------------------------------------------------------
CHANGES.rst | 5 +++++
libcloud/compute/drivers/ec2.py | 4 ++++
libcloud/compute/drivers/openstack.py | 1 +
libcloud/test/compute/fixtures/openstack_v1.1/_os_volumes.json | 2 +-
libcloud/test/compute/test_ec2.py | 2 ++
libcloud/test/compute/test_openstack.py | 2 ++
6 files changed, 15 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/e90e7593/CHANGES.rst
----------------------------------------------------------------------
diff --git a/CHANGES.rst b/CHANGES.rst
index b520469..ac6fb1a 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -15,6 +15,11 @@ General
Compute
~~~~~~~
+- StorageVolume objects on EC2 and OpenStack now have a key called snapshot_id
+ in their extra dicts containing the snapshot ID the volume was based on.
+ (GITHUB-479)
+ [Allard Hoeve]
+
- Add support for creating volumes based on snapshots to EC2 and OS drivers.
Also modify signature of base NodeDriver.create_volume to reflect the fact
that all drivers expect a StorageSnapshot object as the snapshot argument.
http://git-wip-us.apache.org/repos/asf/libcloud/blob/e90e7593/libcloud/compute/drivers/ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index 0e8ae85..a159d4f 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -1563,6 +1563,10 @@ RESOURCE_EXTRA_ATTRIBUTES_MAP = {
'xpath': 'attachmentSet/item/device',
'transform_func': str
},
+ 'snapshot_id': {
+ 'xpath': 'snapshotId',
+ 'transform_func': lambda v: str(v) or None
+ },
'iops': {
'xpath': 'iops',
'transform_func': int
http://git-wip-us.apache.org/repos/asf/libcloud/blob/e90e7593/libcloud/compute/drivers/openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/openstack.py b/libcloud/compute/drivers/openstack.py
index 460fb45..0abbfc7 100644
--- a/libcloud/compute/drivers/openstack.py
+++ b/libcloud/compute/drivers/openstack.py
@@ -2064,6 +2064,7 @@ class OpenStack_1_1_NodeDriver(OpenStackNodeDriver):
'description': api_node['displayDescription'],
'attachments': [att for att in api_node['attachments'] if att],
'state': api_node.get('status', None),
+ 'snapshot_id': api_node.get('snapshotId', None),
'location': api_node.get('availabilityZone', None),
'volume_type': api_node.get('volumeType', None),
'metadata': api_node.get('metadata', None),
http://git-wip-us.apache.org/repos/asf/libcloud/blob/e90e7593/libcloud/test/compute/fixtures/openstack_v1.1/_os_volumes.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/openstack_v1.1/_os_volumes.json b/libcloud/test/compute/fixtures/openstack_v1.1/_os_volumes.json
index d92e3e8..b0c1a32 100644
--- a/libcloud/test/compute/fixtures/openstack_v1.1/_os_volumes.json
+++ b/libcloud/test/compute/fixtures/openstack_v1.1/_os_volumes.json
@@ -31,7 +31,7 @@
"id": "cfcec3bc-b736-4db5-9535-4c24112691b5",
"metadata": {},
"size": 50,
- "snapshotId": null,
+ "snapshotId": "01f48111-7866-4cd2-986a-e92683c4a363",
"status": "available",
"volumeType": "None"
}
http://git-wip-us.apache.org/repos/asf/libcloud/blob/e90e7593/libcloud/test/compute/test_ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_ec2.py b/libcloud/test/compute/test_ec2.py
index 247f9e4..f74fa94 100644
--- a/libcloud/test/compute/test_ec2.py
+++ b/libcloud/test/compute/test_ec2.py
@@ -776,12 +776,14 @@ class EC2Tests(LibcloudTestCase, TestCaseMixin):
self.assertEqual('vol-v24bfh75', volumes[1].id)
self.assertEqual(11, volumes[1].size)
self.assertEqual('available', volumes[1].extra['state'])
+ self.assertIsNone(volumes[1].extra['snapshot_id'])
self.assertEqual('vol-b6c851ec', volumes[2].id)
self.assertEqual(8, volumes[2].size)
self.assertEqual('in-use', volumes[2].extra['state'])
self.assertEqual('i-d334b4b3', volumes[2].extra['instance_id'])
self.assertEqual('/dev/sda1', volumes[2].extra['device'])
+ self.assertEqual('snap-30d37269', volumes[2].extra['snapshot_id'])
def test_create_volume(self):
location = self.driver.list_locations()[0]
http://git-wip-us.apache.org/repos/asf/libcloud/blob/e90e7593/libcloud/test/compute/test_openstack.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_openstack.py b/libcloud/test/compute/test_openstack.py
index b69effc..ac1035d 100644
--- a/libcloud/test/compute/test_openstack.py
+++ b/libcloud/test/compute/test_openstack.py
@@ -803,6 +803,7 @@ class OpenStack_1_1_Tests(unittest.TestCase, TestCaseMixin):
"serverId": "12065",
"volumeId": "cd76a3a1-c4ce-40f6-9b9f-07a61508938d",
}],
+ 'snapshot_id': None,
'state': 'available',
'location': 'nova',
'volume_type': 'None',
@@ -817,6 +818,7 @@ class OpenStack_1_1_Tests(unittest.TestCase, TestCaseMixin):
self.assertEqual(volume.extra, {
'description': 'some description',
'attachments': [],
+ 'snapshot_id': '01f48111-7866-4cd2-986a-e92683c4a363',
'state': 'available',
'location': 'nova',
'volume_type': 'None',