You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by to...@apache.org on 2019/07/04 21:52:42 UTC
[libcloud] branch trunk updated: Add ability to resize volume in GCE
This is an automated email from the ASF dual-hosted git repository.
tomaz pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/libcloud.git
The following commit(s) were added to refs/heads/trunk by this push:
new a90c95e Add ability to resize volume in GCE
new 662b943 Merge pull request #1301 from palashgandhi/gcp_resize
a90c95e is described below
commit a90c95e251fe9351104305b8baafc3a8dc0e1d4e
Author: Palash Gandhi <pa...@delphix.com>
AuthorDate: Tue Jul 2 10:27:15 2019 -0700
Add ability to resize volume in GCE
---
libcloud/compute/drivers/gce.py | 22 ++++++++++++++++++++++
...nes_us-central1-a_disks_lcdisk_resize_post.json | 16 ++++++++++++++++
...nes_us-central1-a_disks_lcdisk_resize_post.json | 15 +++++++++++++++
libcloud/test/compute/test_gce.py | 18 ++++++++++++++++++
4 files changed, 71 insertions(+)
diff --git a/libcloud/compute/drivers/gce.py b/libcloud/compute/drivers/gce.py
index 4614ca8..09e517c 100644
--- a/libcloud/compute/drivers/gce.py
+++ b/libcloud/compute/drivers/gce.py
@@ -6417,6 +6417,28 @@ class GCENodeDriver(NodeDriver):
self.connection.async_request(request, method='POST', data=volume_data)
return True
+ def ex_resize_volume(self, volume, size):
+ """
+ Resize a volume to the specified size.
+
+ :param volume: Volume object to resize
+ :type volume: :class:`StorageVolume`
+
+ :param size: The size in GB of the volume to resize to.
+ :type size: ``int``
+
+ :return: True if successful
+ :rtype: ``bool``
+ """
+ request = '/zones/%s/disks/%s/resize' % (
+ volume.extra['zone'].name, volume.name)
+ request_data = {'sizeGb': int(size)}
+
+ self.connection.async_request(
+ request, method='POST', data=request_data
+ )
+ return True
+
def detach_volume(self, volume, ex_node=None):
"""
Detach a volume from a node.
diff --git a/libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_disks_lcdisk_resize_post.json b/libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_disks_lcdisk_resize_post.json
new file mode 100644
index 0000000..5c17a78
--- /dev/null
+++ b/libcloud/test/compute/fixtures/gce/operations_operation_zones_us-central1-a_disks_lcdisk_resize_post.json
@@ -0,0 +1,16 @@
+{
+ "kind": "compute#operation",
+ "id": "4992266504414588438",
+ "name": "operation-1562104056794-58cb9b1684c7e-8109138e-848683f7",
+ "zone": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a",
+ "operationType": "resizeDisk",
+ "targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/disks/904434546113910404",
+ "targetId": "904434546113910404",
+ "status": "DONE",
+ "user": "487551519631-t6qvu2na6p4u9ptm46bsdujf0ohbdro7@developer.gserviceaccount.com",
+ "progress": 100,
+ "insertTime": "2019-07-02T14:47:37.095-07:00",
+ "startTime": "2019-07-02T14:47:37.111-07:00",
+ "endTime": "2019-07-02T14:47:41.991-07:00",
+ "selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-1562104056794-58cb9b1684c7e-8109138e-848683f7"
+}
\ No newline at end of file
diff --git a/libcloud/test/compute/fixtures/gce/zones_us-central1-a_disks_lcdisk_resize_post.json b/libcloud/test/compute/fixtures/gce/zones_us-central1-a_disks_lcdisk_resize_post.json
new file mode 100644
index 0000000..dd7e869
--- /dev/null
+++ b/libcloud/test/compute/fixtures/gce/zones_us-central1-a_disks_lcdisk_resize_post.json
@@ -0,0 +1,15 @@
+{
+ "id": "4992266504414588438",
+ "insertTime": "2019-07-02T14:47:37.095-07:00",
+ "kind": "compute#operation",
+ "name": "operation-zones_us-central1-a_disks_lcdisk_resize_post",
+ "operationType": "resizeDisk",
+ "progress": 0,
+ "selfLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/operations/operation-zones_us-central1-a_disks_lcdisk_resize_post",
+ "startTime": "2019-07-02T14:47:37.111-07:00",
+ "status": "PENDING",
+ "targetId": "904434546113910404",
+ "targetLink": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a/disks/lcdisk",
+ "user": "487551519631-t6qvu2na6p4u9ptm46bsdujf0ohbdro7@developer.gserviceaccount.com",
+ "zone": "https://www.googleapis.com/compute/v1/projects/project_name/zones/us-central1-a"
+}
\ No newline at end of file
diff --git a/libcloud/test/compute/test_gce.py b/libcloud/test/compute/test_gce.py
index b79677f..72a2698 100644
--- a/libcloud/test/compute/test_gce.py
+++ b/libcloud/test/compute/test_gce.py
@@ -1640,6 +1640,12 @@ class GCENodeDriverTest(GoogleTestCase, TestCaseMixin):
attach = volume.attach(node)
self.assertTrue(attach)
+ def test_ex_resize_volume(self):
+ volume = self.driver.ex_get_volume('lcdisk')
+ desired_size = int(volume.size) + 8
+ resize = self.driver.ex_resize_volume(volume, desired_size)
+ self.assertTrue(resize)
+
def test_detach_volume(self):
volume = self.driver.ex_get_volume('lcdisk')
node = self.driver.ex_get_node('node-name')
@@ -2946,6 +2952,12 @@ class GCEMockHttp(MockHttp):
'operations_operation_zones_us-central1-a_disks_lcdisk_createSnapshot_post.json')
return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])
+ def _zones_us_central1_a_operations_operation_zones_us_central1_a_disks_lcdisk_resize_post(
+ self, method, url, body, headers):
+ body = self.fixtures.load(
+ 'operations_operation_zones_us-central1-a_disks_lcdisk_resize_post.json')
+ return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])
+
def _zones_us_central1_a_operations_operation_zones_us_central1_a_disks_post(
self, method, url, body, headers):
body = self.fixtures.load(
@@ -3360,6 +3372,12 @@ class GCEMockHttp(MockHttp):
'zones_us-central1-a_disks_lcdisk_createSnapshot_post.json')
return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])
+ def _zones_us_central1_a_disks_lcdisk_resize(self, method, url,
+ body, headers):
+ body = self.fixtures.load(
+ 'zones_us-central1-a_disks_lcdisk_resize_post.json')
+ return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])
+
def _zones_us_central1_a_disks_node_name(self, method, url, body, headers):
body = self.fixtures.load('generic_disk.json')
return (httplib.OK, body, self.json_hdr, httplib.responses[httplib.OK])