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)