You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@libcloud.apache.org by qu...@apache.org on 2018/03/09 04:55:45 UTC

[3/6] libcloud git commit: implement ex_list_floating_ips for DigitalOcean

implement ex_list_floating_ips for DigitalOcean

Signed-off-by: Quentin Pradet <qu...@apache.org>


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

Branch: refs/heads/trunk
Commit: e0bada2a05465c2ba4e4518c843824ec7618c7cf
Parents: c069603
Author: Rick van de Loo <ri...@gmail.com>
Authored: Sun Mar 4 14:33:07 2018 +0100
Committer: Quentin Pradet <qu...@apache.org>
Committed: Fri Mar 9 08:54:34 2018 +0400

----------------------------------------------------------------------
 libcloud/compute/drivers/digitalocean.py              | 10 ++++++++++
 .../fixtures/digitalocean_v2/list_floating_ips.json   |  2 ++
 libcloud/test/compute/test_digitalocean_v2.py         | 14 ++++++++++++++
 3 files changed, 26 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/e0bada2a/libcloud/compute/drivers/digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/digitalocean.py b/libcloud/compute/drivers/digitalocean.py
index d1f44ba..286c2d0 100644
--- a/libcloud/compute/drivers/digitalocean.py
+++ b/libcloud/compute/drivers/digitalocean.py
@@ -524,6 +524,16 @@ class DigitalOcean_v2_NodeDriver(DigitalOcean_v2_BaseDriver,
                                        method='DELETE')
         return resp.status == httplib.NO_CONTENT
 
+    def ex_list_floating_ips(self):
+        """
+        List floating IPs
+
+        :rtype: ``list`` of :class:`DigitalOcean_v2_FloatingIpAddress`
+        """
+        return self._to_floating_ips(
+            self._paginated_request('/v2/floating_ips', 'floating_ips')
+        )
+
     def _to_node(self, data):
         extra_keys = ['memory', 'vcpus', 'disk', 'region', 'image',
                       'size_slug', 'locked', 'created_at', 'networks',

http://git-wip-us.apache.org/repos/asf/libcloud/blob/e0bada2a/libcloud/test/compute/fixtures/digitalocean_v2/list_floating_ips.json
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/fixtures/digitalocean_v2/list_floating_ips.json b/libcloud/test/compute/fixtures/digitalocean_v2/list_floating_ips.json
new file mode 100644
index 0000000..42b11b3
--- /dev/null
+++ b/libcloud/test/compute/fixtures/digitalocean_v2/list_floating_ips.json
@@ -0,0 +1,2 @@
+{"floating_ips":[{"ip":"177.166.135.205","droplet":null,"region":{"name":"Amsterdam 3","slug":"ams3","sizes":["64gb","512mb","1gb","2gb","4gb","8gb","16gb","32gb","48gb","c-16","s-1vcpu-3gb","c-2","c-4","c-8","m-1vcpu-8gb","m-16gb","m-32gb","m-64gb","m-128gb","m-224gb","s-1vcpu-1gb","s-3vcpu-1gb","s-1vcpu-2gb","s-2vcpu-2gb","s-2vcpu-4gb","s-4vcpu-8gb","s-6vcpu-16gb","s-8vcpu-32gb","s-12vcpu-48gb","s-16vcpu-64gb","s-20vcpu-96gb","s-24vcpu-128gb"],"features":["private_networking","backups","ipv6","metadata","install_agent","storage"],"available":true},"locked":false},{"ip":"154.138.103.175","droplet":null,"region":{"name":"Amsterdam 3","slug":"ams3","sizes":["64gb","512mb","1gb","2gb","4gb","8gb","16gb","32gb","48gb","c-16","s-1vcpu-3gb","c-2","c-4","c-8","m-1vcpu-8gb","m-16gb","m-32gb","m-64gb","m-128gb","m-224gb","s-1vcpu-1gb","s-3vcpu-1gb","s-1vcpu-2gb","s-2vcpu-2gb","s-2vcpu-4gb","s-4vcpu-8gb","s-6vcpu-16gb","s-8vcpu-32gb","s-12vcpu-48gb","s-16vcpu-64gb","s-20vcpu-96gb","s-24vcpu-
 128gb"],"features":["private_networking","backups","ipv6","metadata","install_agent","storage"],"available":true},"locked":false}],"links":{},"meta":{"total":2}}
+

http://git-wip-us.apache.org/repos/asf/libcloud/blob/e0bada2a/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 9e87bd2..02f0f03 100644
--- a/libcloud/test/compute/test_digitalocean_v2.py
+++ b/libcloud/test/compute/test_digitalocean_v2.py
@@ -322,6 +322,17 @@ class DigitalOcean_v2_Tests(LibcloudTestCase):
 
         self.assertTrue(ret)
 
+    def test_list_floating_ips(self):
+        floating_ips = self.driver.ex_list_floating_ips()
+
+        self.assertEqual(len(floating_ips), 2, 'Wrong floating IPs count')
+
+        floating_ip = floating_ips[0]
+        self.assertEqual(floating_ip.id, '177.166.135.205')
+        self.assertEqual(floating_ip.ip_address, '177.166.135.205')
+        self.assertEqual(floating_ip.extra['region']['slug'], 'ams3')
+        self.assertIsNone(floating_ip.node_id)
+
 
 class DigitalOceanMockHttp(MockHttp):
     fixtures = ComputeFileFixtures('digitalocean_v2')
@@ -486,6 +497,9 @@ class DigitalOceanMockHttp(MockHttp):
         if method == 'POST':
             body = self.fixtures.load('create_floating_ip.json')
             return (httplib.OK, body, {}, httplib.responses[httplib.OK])
+        elif method == 'GET':
+            body = self.fixtures.load('list_floating_ips.json')
+            return (httplib.OK, body, {}, httplib.responses[httplib.OK])
         else:
             raise NotImplementedError()