Implement list_volumes for DigitalOcean

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

Branch: refs/heads/trunk
Commit: 71eb9565e1092dcf4468ee88692745868c3f2d44
Parents: 74a2ce7
Author: Adam Wolfe Gordon <a...@digitalocean.com>
Authored: Mon Jun 6 15:12:23 2016 -0400
Committer: Anthony Shaw <anthonys...@apache.org>
Committed: Fri Jun 24 14:15:16 2016 +1000

----------------------------------------------------------------------
 libcloud/compute/drivers/digitalocean.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/71eb9565/libcloud/compute/drivers/digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/digitalocean.py 
b/libcloud/compute/drivers/digitalocean.py
index 0428cbb..f326bca 100644
--- a/libcloud/compute/drivers/digitalocean.py
+++ b/libcloud/compute/drivers/digitalocean.py
@@ -27,6 +27,7 @@ from libcloud.common.types import InvalidCredsError
 from libcloud.compute.types import Provider, NodeState
 from libcloud.compute.base import NodeImage, NodeSize, NodeLocation, KeyPair
 from libcloud.compute.base import Node, NodeDriver
+from libcloud.compute.base import StorageVolume
 
 __all__ = [
     'DigitalOceanNodeDriver',
@@ -352,6 +353,10 @@ class 
DigitalOcean_v2_NodeDriver(DigitalOcean_v2_BaseDriver,
         data = self._paginated_request('/v2/sizes', 'sizes')
         return list(map(self._to_size, data))
 
+    def list_volumes(self):
+        data = self._paginated_request('/v2/volumes', 'volumes')
+        return list(map(self._to_volume, data))
+
     def create_node(self, name, size, image, location, ex_create_attr=None,
                     ex_ssh_key_ids=None, ex_user_data=None):
         """
@@ -571,6 +576,16 @@ class 
DigitalOcean_v2_NodeDriver(DigitalOcean_v2_BaseDriver,
         return NodeImage(id=data['id'], name=data['name'], driver=self,
                          extra=extra)
 
+    def _to_volume(self, data):
+        extra = {'created_at': data['created_at'],
+                 'droplet_ids': data['droplet_ids'],
+                 'region': data['region'],
+                 'region_slug': data['region']['slug']}
+
+        return StorageVolume(id=data['id'], name=data['name'],
+                             size=data['size_gigabytes'], driver=self,
+                             extra=extra)
+
     def _to_location(self, data):
         return NodeLocation(id=data['slug'], name=data['name'], country=None,
                             driver=self)

Reply via email to