You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by an...@apache.org on 2017/04/21 05:42:58 UTC
[11/16] libcloud git commit: FAM-791 tests added,
volume modifications attribute types fixed
FAM-791 tests added, volume modifications attribute types fixed
Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/7ea29c90
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/7ea29c90
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/7ea29c90
Branch: refs/heads/trunk
Commit: 7ea29c90f02d08e40e0bbac66bd911f20fbd54fe
Parents: 265a1e5
Author: Hennadii Stas <ut...@gmail.com>
Authored: Wed Apr 19 17:54:24 2017 +0300
Committer: Hennadii Stas <ut...@gmail.com>
Committed: Thu Apr 20 13:04:25 2017 +0300
----------------------------------------------------------------------
libcloud/compute/drivers/ec2.py | 10 ++--
.../ec2/describe_volumes_modifications.xml | 30 +++++++++++
.../test/compute/fixtures/ec2/modify_volume.xml | 15 ++++++
libcloud/test/compute/test_ec2.py | 56 ++++++++++++++++++++
4 files changed, 106 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/libcloud/blob/7ea29c90/libcloud/compute/drivers/ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/ec2.py b/libcloud/compute/drivers/ec2.py
index 5db8afb..be5644e 100644
--- a/libcloud/compute/drivers/ec2.py
+++ b/libcloud/compute/drivers/ec2.py
@@ -2455,11 +2455,11 @@ VOLUME_MODIFICATION_ATTRIBUTE_MAP = {
},
'original_iops': {
'xpath': 'originalIops',
- 'transform_func': str
+ 'transform_func': int
},
'original_size': {
'xpath': 'originalSize',
- 'transform_func': str
+ 'transform_func': int
},
'original_volume_type': {
'xpath': 'originalVolumeType',
@@ -2467,7 +2467,7 @@ VOLUME_MODIFICATION_ATTRIBUTE_MAP = {
},
'progress': {
'xpath': 'progress',
- 'transform_func': str
+ 'transform_func': int
},
'start_time': {
'xpath': 'startTime',
@@ -2479,11 +2479,11 @@ VOLUME_MODIFICATION_ATTRIBUTE_MAP = {
},
'target_iops': {
'xpath': 'targetIops',
- 'transform_func': str
+ 'transform_func': int
},
'target_size': {
'xpath': 'targetSize',
- 'transform_func': str
+ 'transform_func': int
},
'target_volume_type': {
'xpath': 'targetVolumeType',
http://git-wip-us.apache.org/repos/asf/libcloud/blob/7ea29c90/libcloud/test/compute/fixtures/ec2/describe_volumes_modifications.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/ec2/describe_volumes_modifications.xml b/libcloud/test/compute/fixtures/ec2/describe_volumes_modifications.xml
new file mode 100644
index 0000000..b376f43
--- /dev/null
+++ b/libcloud/test/compute/fixtures/ec2/describe_volumes_modifications.xml
@@ -0,0 +1,30 @@
+<DescribeVolumesModificationsResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
+ <requestId>35fdf8d3-6ffa-46dc-8f8e-62fe70bc31a2</requestId>
+ <volumeModificationSet>
+ <item>
+ <targetIops>10000</targetIops>
+ <originalIops>100</originalIops>
+ <modificationState>optimizing</modificationState>
+ <targetSize>2000</targetSize>
+ <targetVolumeType>io1</targetVolumeType>
+ <volumeId>vol-06397e7a0eEXAMPLE</volumeId>
+ <progress>3</progress>
+ <startTime>2017-02-10T23:40:57.612Z</startTime>
+ <originalSize>10</originalSize>
+ <originalVolumeType>gp2</originalVolumeType>
+ </item>
+ <item>
+ <targetIops>10000</targetIops>
+ <originalIops>100</originalIops>
+ <modificationState>completed</modificationState>
+ <targetSize>200</targetSize>
+ <targetVolumeType>io1</targetVolumeType>
+ <volumeId>vol-bEXAMPLE</volumeId>
+ <progress>100</progress>
+ <startTime>2017-02-10T22:50:52.207Z</startTime>
+ <endTime>2017-02-10T22:56:04.823Z</endTime>
+ <originalSize>8</originalSize>
+ <originalVolumeType>gp2</originalVolumeType>
+ </item>
+ </volumeModificationSet>
+</DescribeVolumesModificationsResponse>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/libcloud/blob/7ea29c90/libcloud/test/compute/fixtures/ec2/modify_volume.xml
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/ec2/modify_volume.xml b/libcloud/test/compute/fixtures/ec2/modify_volume.xml
new file mode 100644
index 0000000..44db5c0
--- /dev/null
+++ b/libcloud/test/compute/fixtures/ec2/modify_volume.xml
@@ -0,0 +1,15 @@
+<ModifyVolumeResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
+ <requestId>5jkdf074-37ed-4004-8671-a78ee82bf1cbEXAMPLE</requestId>
+ <volumeModification>
+ <targetIops>1000</targetIops>
+ <originalIops>300</originalIops>
+ <modificationState>modifying</modificationState>
+ <targetSize>2</targetSize>
+ <targetVolumeType>io1</targetVolumeType>
+ <volumeId>vol-10ae5e2b</volumeId>
+ <progress>0</progress>
+ <startTime>2017-01-19T23:58:04.922Z</startTime>
+ <originalSize>1</originalSize>
+ <originalVolumeType>gp2</originalVolumeType>
+ </volumeModification>
+</ModifyVolumeResponse>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/libcloud/blob/7ea29c90/libcloud/test/compute/test_ec2.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_ec2.py b/libcloud/test/compute/test_ec2.py
index 0e8727e..c0c9091 100644
--- a/libcloud/test/compute/test_ec2.py
+++ b/libcloud/test/compute/test_ec2.py
@@ -1179,6 +1179,54 @@ class EC2Tests(LibcloudTestCase, TestCaseMixin):
resp = self.driver.ex_detach_internet_gateway(gateway, network)
self.assertTrue(resp)
+ def test_ex_modify_volume(self):
+ volume = self.driver.list_volumes()[0]
+ assert volume.id == 'vol-10ae5e2b'
+
+ params = {'VolumeType': 'io1',
+ 'Size': 2,
+ 'Iops': 1000}
+ volume_modification = self.driver.ex_modify_volume(volume, params)
+ self.assertIsNone(volume_modification.end_time)
+ self.assertEqual('modifying', volume_modification.modification_state)
+ self.assertEqual(300, volume_modification.original_iops)
+ self.assertEqual(1, volume_modification.original_size)
+ self.assertEqual('gp2', volume_modification.original_volume_type)
+ self.assertEqual(0, volume_modification.progress)
+ self.assertIsNone(volume_modification.status_message)
+ self.assertEqual(1000, volume_modification.target_iops)
+ self.assertEqual(2, volume_modification.target_size)
+ self.assertEqual('io1', volume_modification.target_volume_type)
+ self.assertEqual('vol-10ae5e2b', volume_modification.volume_id)
+
+ def test_ex_describe_volumes_modifications(self):
+ modifications = self.driver.ex_describe_volumes_modifications()
+
+ self.assertEqual(len(modifications), 2)
+
+ self.assertIsNone(modifications[0].end_time)
+ self.assertEqual('optimizing', modifications[0].modification_state)
+ self.assertEqual(100, modifications[0].original_iops)
+ self.assertEqual(10, modifications[0].original_size)
+ self.assertEqual('gp2', modifications[0].original_volume_type)
+ self.assertEqual(3, modifications[0].progress)
+ self.assertIsNone(modifications[0].status_message)
+ self.assertEqual(10000, modifications[0].target_iops)
+ self.assertEqual(2000, modifications[0].target_size)
+ self.assertEqual('io1', modifications[0].target_volume_type)
+ self.assertEqual('vol-06397e7a0eEXAMPLE', modifications[0].volume_id)
+
+ self.assertEqual('completed', modifications[1].modification_state)
+ self.assertEqual(100, modifications[1].original_iops)
+ self.assertEqual(8, modifications[1].original_size)
+ self.assertEqual('gp2', modifications[1].original_volume_type)
+ self.assertEqual(100, modifications[1].progress)
+ self.assertIsNone(modifications[1].status_message)
+ self.assertEqual(10000, modifications[1].target_iops)
+ self.assertEqual(200, modifications[1].target_size)
+ self.assertEqual('io1', modifications[1].target_volume_type)
+ self.assertEqual('vol-bEXAMPLE', modifications[1].volume_id)
+
class EC2USWest1Tests(EC2Tests):
region = 'us-west-1'
@@ -1580,6 +1628,14 @@ class EC2MockHttp(MockHttpTestCase):
body = self.fixtures.load('describe_placement_groups.xml')
return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+ def _ModifyVolume(self, method, url, body, headers):
+ body = self.fixtures.load('modify_volume.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
+ def _DescribeVolumesModifications(self, method, url, body, headers):
+ body = self.fixtures.load('describe_volumes_modifications.xml')
+ return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+
class EucMockHttp(EC2MockHttp):
fixtures = ComputeFileFixtures('ec2')