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 2015/06/14 12:52:15 UTC

[04/21] libcloud git commit: Address build failures from provider matrix generation - Removed hack to load DigitalOcean_v2_NodeDriver as DigitalOceanNodeDriver will handle v1/v2 properly - Restored DigitalOceanNodeDriver (v1) ex_ssh* methods with Warning

Address build failures from provider matrix generation - Removed hack to load DigitalOcean_v2_NodeDriver as DigitalOceanNodeDriver will handle v1/v2 properly - Restored DigitalOceanNodeDriver (v1) ex_ssh* methods with Warning of deprecation

Signed-off-by: Tomaz Muraus <to...@tomaz.me>


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

Branch: refs/heads/trunk
Commit: 003e0f6781a37cc524f9ff9504ce288c98895857
Parents: 950fa94
Author: Javier Castillo II <j....@gmail.com>
Authored: Wed Apr 15 22:05:21 2015 +0000
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Sun Jun 14 18:05:58 2015 +0800

----------------------------------------------------------------------
 .../generate_provider_feature_matrix_table.py   |  4 --
 libcloud/compute/drivers/digitalocean.py        | 39 ++++++++++++++++++++
 libcloud/test/compute/test_digitalocean_v1.py   | 13 +++++++
 3 files changed, 52 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/003e0f67/contrib/generate_provider_feature_matrix_table.py
----------------------------------------------------------------------
diff --git a/contrib/generate_provider_feature_matrix_table.py b/contrib/generate_provider_feature_matrix_table.py
index 834a514..2538568 100755
--- a/contrib/generate_provider_feature_matrix_table.py
+++ b/contrib/generate_provider_feature_matrix_table.py
@@ -221,10 +221,6 @@ def generate_providers_table(api):
             from libcloud.compute.drivers.cloudsigma import \
                 CloudSigma_2_0_NodeDriver
             cls = CloudSigma_2_0_NodeDriver
-        elif name.lower() == 'digital_ocean':
-            from libcloud.compute.drivers.digitalocean import \
-                DigitalOcean_v2_NodeDriver
-            cls = DigitalOcean_v2_NodeDriver
         elif name.lower() == 'opennebula':
             from libcloud.compute.drivers.opennebula import \
                 OpenNebula_3_8_NodeDriver

http://git-wip-us.apache.org/repos/asf/libcloud/blob/003e0f67/libcloud/compute/drivers/digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/digitalocean.py b/libcloud/compute/drivers/digitalocean.py
index 0d9c0e7..9176be9 100644
--- a/libcloud/compute/drivers/digitalocean.py
+++ b/libcloud/compute/drivers/digitalocean.py
@@ -15,6 +15,7 @@
 """
 Digital Ocean Driver
 """
+import warnings
 
 from libcloud.utils.py3 import httplib
 
@@ -157,6 +158,17 @@ class DigitalOcean_v1_NodeDriver(DigitalOcean_v1_BaseDriver,
         data = self.connection.request('/v1/ssh_keys').object['ssh_keys']
         return list(map(self._to_key_pair, data))
 
+    def ex_list_ssh_keys(self):
+        """
+        List all the available SSH keys.
+        :return: Available SSH keys.
+        :rtype: ``list`` of :class:`SSHKey`
+        """
+        warnings.warn("This method has been deprecated in favor of the list_key_pairs method")
+
+        data = self.connection.request('/v1/ssh_keys').object['ssh_keys']
+        return list(map(self._to_ssh_key, data))
+
     def get_key_pair(self, name):
         """
         Retrieve a single key pair.
@@ -191,6 +203,22 @@ class DigitalOcean_v1_NodeDriver(DigitalOcean_v1_BaseDriver,
         #      a return value. This looks like it should return a KeyPair
         return self._to_key_pair(data=data['ssh_key'])
 
+    def ex_create_ssh_key(self, name, ssh_key_pub):
+        """
+        Create a new SSH key.
+        :param      name: Key name (required)
+        :type       name: ``str``
+        :param      name: Valid public key string (required)
+        :type       name: ``str``
+        """
+        warnings.warn("This method has been deprecated in favor of the create_key_pair method")
+
+        params = {'name': name, 'ssh_pub_key': ssh_key_pub}
+        data = self.connection.request('/v1/ssh_keys/new/', method='GET',
+                                       params=params).object
+        assert 'ssh_key' in data
+        return self._to_ssh_key(data=data['ssh_key'])
+
     def delete_key_pair(self, key_pair):
         """
         Delete an existing key pair.
@@ -203,6 +231,17 @@ class DigitalOcean_v1_NodeDriver(DigitalOcean_v1_BaseDriver,
         # TODO: This looks like it should return bool like the other delete_*
         return res.status == httplib.OK
 
+    def ex_destroy_ssh_key(self, key_id):
+        """
+        Delete an existing SSH key.
+        :param      key_id: SSH key id (required)
+        :type       key_id: ``str``
+        """
+        warnings.warn("This method has been deprecated in favor of the delete_key_pair method")
+
+        res = self.connection.request('/v1/ssh_keys/%s/destroy/' % (key_id))
+        return res.status == httplib.OK
+
     def _to_node(self, data):
         extra_keys = ['backups_active', 'region_id', 'image_id', 'size_id']
         if 'status' in data:

http://git-wip-us.apache.org/repos/asf/libcloud/blob/003e0f67/libcloud/test/compute/test_digitalocean_v1.py
----------------------------------------------------------------------
diff --git a/libcloud/test/compute/test_digitalocean_v1.py b/libcloud/test/compute/test_digitalocean_v1.py
index 654935e..33c7f1c 100644
--- a/libcloud/test/compute/test_digitalocean_v1.py
+++ b/libcloud/test/compute/test_digitalocean_v1.py
@@ -119,11 +119,24 @@ class DigitalOcean_v1_Tests(LibcloudTestCase):
         self.assertEqual(keys[0].name, 'test1')
         self.assertEqual(keys[0].public_key, None)
 
+    def test_ex_list_ssh_keys(self):
+        keys = self.driver.ex_list_ssh_keys()
+        self.assertEqual(len(keys), 1)
+
+        self.assertEqual(keys[0].id, 7717)
+        self.assertEqual(keys[0].name, 'test1')
+        self.assertEqual(keys[0].pub_key, None)
+
     def test_delete_key_pair(self):
         key = self.driver.list_key_pairs()[0]
         result = self.driver.delete_key_pair(key)
         self.assertTrue(result)
 
+    def test_ex_destroy_ssh_key(self):
+        key = self.driver.ex_list_ssh_keys()[0]
+        result = self.driver.ex_destroy_ssh_key(key.id)
+        self.assertTrue(result)
+
 
 class DigitalOceanMockHttp(MockHttpTestCase):
     fixtures = ComputeFileFixtures('digitalocean_v1')