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 2016/10/24 15:43:49 UTC

libcloud git commit: add ex_change_kernel in DigitalOcean_v2 driver

Repository: libcloud
Updated Branches:
  refs/heads/trunk 5ef94eb3a -> 1e19061df


add ex_change_kernel in DigitalOcean_v2 driver

> To change the kernel of a Droplet, send a POST request to
> /v2/droplets/$DROPLET_ID/actions. Set the "type" attribute to
> change_kernel and the "kernel" attribute to the new kernel's ID.

https://developers.digitalocean.com/documentation/v2/#change-the-kernel

Closes #922


Project: http://git-wip-us.apache.org/repos/asf/libcloud/repo
Commit: http://git-wip-us.apache.org/repos/asf/libcloud/commit/1e19061d
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/1e19061d
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/1e19061d

Branch: refs/heads/trunk
Commit: 1e19061dffed59008ca110dae7afe032d31287ce
Parents: 5ef94eb
Author: Rick van de Loo <ri...@gmail.com>
Authored: Mon Oct 24 14:42:59 2016 +0200
Committer: Anthony Shaw <an...@apache.org>
Committed: Mon Oct 24 16:43:30 2016 +0100

----------------------------------------------------------------------
 libcloud/compute/drivers/digitalocean.py                |  6 ++++++
 .../compute/fixtures/digitalocean/ex_change_kernel.json | 12 ++++++++++++
 .../fixtures/digitalocean_v2/ex_change_kernel.json      | 12 ++++++++++++
 libcloud/test/compute/test_digitalocean_v2.py           | 11 +++++++++++
 4 files changed, 41 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/1e19061d/libcloud/compute/drivers/digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/digitalocean.py b/libcloud/compute/drivers/digitalocean.py
index 335e065..9800023 100644
--- a/libcloud/compute/drivers/digitalocean.py
+++ b/libcloud/compute/drivers/digitalocean.py
@@ -244,6 +244,12 @@ class DigitalOcean_v2_NodeDriver(DigitalOcean_v2_BaseDriver,
         data = self._paginated_request('/v2/images/%s' % (image_id), 'image')
         return self._to_image(data)
 
+    def ex_change_kernel(self, node, kernel_id):
+        attr = {'type': 'change_kernel', 'kernel': kernel_id}
+        res = self.connection.request('/v2/droplets/%s/actions' % (node.id),
+                                      data=json.dumps(attr), method='POST')
+        return res.status == httplib.CREATED
+
     def ex_rename_node(self, node, name):
         attr = {'type': 'rename', 'name': name}
         res = self.connection.request('/v2/droplets/%s/actions' % (node.id),

http://git-wip-us.apache.org/repos/asf/libcloud/blob/1e19061d/libcloud/test/compute/fixtures/digitalocean/ex_change_kernel.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/digitalocean/ex_change_kernel.json b/libcloud/test/compute/fixtures/digitalocean/ex_change_kernel.json
new file mode 100644
index 0000000..561101f
--- /dev/null
+++ b/libcloud/test/compute/fixtures/digitalocean/ex_change_kernel.json
@@ -0,0 +1,12 @@
+{
+  "action": {
+    "id": 36077295,
+    "status": "in-progress",
+    "type": "kernel_change",
+    "started_at": "2014-11-04T17:08:03Z",
+    "completed_at": null,
+    "resource_id": 3067650,
+    "resource_type": "droplet",
+    "region": "ams2"
+  }
+}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/1e19061d/libcloud/test/compute/fixtures/digitalocean_v2/ex_change_kernel.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/digitalocean_v2/ex_change_kernel.json b/libcloud/test/compute/fixtures/digitalocean_v2/ex_change_kernel.json
new file mode 100644
index 0000000..561101f
--- /dev/null
+++ b/libcloud/test/compute/fixtures/digitalocean_v2/ex_change_kernel.json
@@ -0,0 +1,12 @@
+{
+  "action": {
+    "id": 36077295,
+    "status": "in-progress",
+    "type": "kernel_change",
+    "started_at": "2014-11-04T17:08:03Z",
+    "completed_at": null,
+    "resource_id": 3067650,
+    "resource_type": "droplet",
+    "region": "ams2"
+  }
+}

http://git-wip-us.apache.org/repos/asf/libcloud/blob/1e19061d/libcloud/test/compute/test_digitalocean_v2.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_digitalocean_v2.py b/libcloud/test/compute/test_digitalocean_v2.py
index 2ba7e90..88dcea6 100644
--- a/libcloud/test/compute/test_digitalocean_v2.py
+++ b/libcloud/test/compute/test_digitalocean_v2.py
@@ -160,6 +160,12 @@ class DigitalOcean_v2_Tests(LibcloudTestCase):
         result = self.driver.destroy_node(node)
         self.assertTrue(result)
 
+    def test_ex_change_kernel_success(self):
+        node = self.driver.list_nodes()[0]
+        DigitalOceanMockHttp.type = 'KERNELCHANGE'
+        result = self.driver.ex_change_kernel(node, 7515)
+        self.assertTrue(result)
+
     def test_ex_rename_node_success(self):
         node = self.driver.list_nodes()[0]
         DigitalOceanMockHttp.type = 'RENAME'
@@ -301,6 +307,11 @@ class DigitalOceanMockHttp(MockHttpTestCase):
         return (httplib.NO_CONTENT, body, {},
                 httplib.responses[httplib.NO_CONTENT])
 
+    def _v2_droplets_3164444_actions_KERNELCHANGE(self, method, url, body, headers):
+        # change_kernel
+        body = self.fixtures.load('ex_change_kernel.json')
+        return (httplib.CREATED, body, {}, httplib.responses[httplib.CREATED])
+
     def _v2_droplets_3164444_actions_RENAME(self, method, url, body, headers):
         # rename_node
         body = self.fixtures.load('ex_rename_node.json')