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:26 UTC

[15/21] libcloud git commit: DigitalOceanNodeDriver minor revisions - Raise on api_version / key or key-secret mismatch - Added tests for v1 and v2 DigitalOceanNodeDriver using wrong keys - Updated examples to include explicit api_version values

DigitalOceanNodeDriver minor revisions - Raise on api_version / key or key-secret mismatch - Added tests for v1 and v2 DigitalOceanNodeDriver using wrong keys - Updated examples to include explicit api_version values

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/af15645b
Tree: http://git-wip-us.apache.org/repos/asf/libcloud/tree/af15645b
Diff: http://git-wip-us.apache.org/repos/asf/libcloud/diff/af15645b

Branch: refs/heads/trunk
Commit: af15645b556a32ec65d6c66805754bd5d9d48650
Parents: fbaaee7
Author: jcastillo2nd <j....@gmail.com>
Authored: Thu May 28 13:46:18 2015 +0000
Committer: Tomaz Muraus <to...@tomaz.me>
Committed: Sun Jun 14 18:05:58 2015 +0800

----------------------------------------------------------------------
 docs/examples/compute/digitalocean/instantiate_api_v1.0.py | 2 +-
 docs/examples/compute/digitalocean/instantiate_api_v2.0.py | 2 +-
 libcloud/compute/drivers/digitalocean.py                   | 7 +++++++
 libcloud/dns/drivers/digitalocean.py                       | 3 ++-
 libcloud/test/compute/test_digitalocean_v1.py              | 5 +++++
 libcloud/test/compute/test_digitalocean_v2.py              | 5 +++++
 libcloud/test/dns/test_digitalocean.py                     | 2 ++
 7 files changed, 23 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/docs/examples/compute/digitalocean/instantiate_api_v1.0.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/digitalocean/instantiate_api_v1.0.py b/docs/examples/compute/digitalocean/instantiate_api_v1.0.py
index c1b822d..ea498d1 100644
--- a/docs/examples/compute/digitalocean/instantiate_api_v1.0.py
+++ b/docs/examples/compute/digitalocean/instantiate_api_v1.0.py
@@ -2,4 +2,4 @@ from libcloud.compute.types import Provider
 from libcloud.compute.providers import get_driver
 
 cls = get_driver(Provider.DIGITAL_OCEAN)
-driver = cls('client id', 'api key')
+driver = cls('client id', 'api key', api_version='v1')

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/docs/examples/compute/digitalocean/instantiate_api_v2.0.py
----------------------------------------------------------------------
diff --git a/docs/examples/compute/digitalocean/instantiate_api_v2.0.py b/docs/examples/compute/digitalocean/instantiate_api_v2.0.py
index 1a29362..83e4e7a 100644
--- a/docs/examples/compute/digitalocean/instantiate_api_v2.0.py
+++ b/docs/examples/compute/digitalocean/instantiate_api_v2.0.py
@@ -3,4 +3,4 @@ from libcloud.compute.providers import get_driver
 
 cls = get_driver(Provider.DIGITAL_OCEAN)
 
-driver = cls('access token')
+driver = cls('access token', api_version='v2')

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/libcloud/compute/drivers/digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/compute/drivers/digitalocean.py b/libcloud/compute/drivers/digitalocean.py
index 46355fb..aa6dba4 100644
--- a/libcloud/compute/drivers/digitalocean.py
+++ b/libcloud/compute/drivers/digitalocean.py
@@ -21,6 +21,7 @@ from libcloud.utils.py3 import httplib
 
 from libcloud.common.digitalocean import DigitalOcean_v1_BaseDriver
 from libcloud.common.digitalocean import DigitalOcean_v2_BaseDriver
+from libcloud.common.types import InvalidCredsError
 from libcloud.compute.types import Provider, NodeState
 from libcloud.compute.base import NodeDriver, Node
 from libcloud.compute.base import NodeImage, NodeSize, NodeLocation, KeyPair
@@ -57,6 +58,12 @@ class DigitalOceanNodeDriver(NodeDriver):
     def __new__(cls, key, secret=None, api_version='v2', **kwargs):
         if cls is DigitalOceanNodeDriver:
             if api_version == 'v1' or secret is not None:
+                if secret is None:
+                    raise InvalidCredsError(
+                        'secret missing for v1 authentication')
+                if secret is not None and api_version == 'v2':
+                    raise InvalidCredsError(
+                        'secret not accepted for v2 authentication')
                 cls = DigitalOcean_v1_NodeDriver
             elif api_version == 'v2':
                 cls = DigitalOcean_v2_NodeDriver

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/libcloud/dns/drivers/digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/dns/drivers/digitalocean.py b/libcloud/dns/drivers/digitalocean.py
index 3470fa0..ad8a297 100644
--- a/libcloud/dns/drivers/digitalocean.py
+++ b/libcloud/dns/drivers/digitalocean.py
@@ -65,7 +65,8 @@ class DigitalOceanDNSDriver(DigitalOcean_v2_BaseDriver, DNSDriver):
         data = self._paginated_request('/v2/domains/%s/records' % (zone.id),
                                        'domain_records')
 # TODO: Not use list comprehension to add zone to record for proper data map
-#       functionality?
+#       functionality? This passes a reference to zone for each data currently
+#       to _to_record which returns a Record. map() does not take keywords
         return list(map(self._to_record, data, [zone for z in data]))
 
     def get_zone(self, zone_id):

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/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 33c7f1c..0dd0e3c 100644
--- a/libcloud/test/compute/test_digitalocean_v1.py
+++ b/libcloud/test/compute/test_digitalocean_v1.py
@@ -29,6 +29,7 @@ from libcloud.compute.drivers.digitalocean import DigitalOceanNodeDriver
 from libcloud.test import LibcloudTestCase, MockHttpTestCase
 from libcloud.test.file_fixtures import ComputeFileFixtures
 from libcloud.test.secrets import DIGITALOCEAN_v1_PARAMS
+from libcloud.test.secrets import DIGITALOCEAN_v2_PARAMS
 
 
 # class DigitalOceanTests(unittest.TestCase, TestCaseMixin):
@@ -41,6 +42,10 @@ class DigitalOcean_v1_Tests(LibcloudTestCase):
         self.driver = DigitalOceanNodeDriver(*DIGITALOCEAN_v1_PARAMS,
                                              api_version='v1')
 
+    def test_v1_uses_v2_key(self):
+        self.assertRaises(InvalidCredsError, DigitalOceanNodeDriver,
+            *DIGITALOCEAN_v2_PARAMS, api_version='v1')
+
     def test_authentication(self):
         DigitalOceanMockHttp.type = 'UNAUTHORIZED_CLIENT'
         self.assertRaises(InvalidCredsError, self.driver.list_nodes)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/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 0d00f41..73db2af 100644
--- a/libcloud/test/compute/test_digitalocean_v2.py
+++ b/libcloud/test/compute/test_digitalocean_v2.py
@@ -28,6 +28,7 @@ from libcloud.compute.drivers.digitalocean import DigitalOceanNodeDriver
 
 from libcloud.test import LibcloudTestCase, MockHttpTestCase
 from libcloud.test.file_fixtures import ComputeFileFixtures
+from libcloud.test.secrets import DIGITALOCEAN_v1_PARAMS
 from libcloud.test.secrets import DIGITALOCEAN_v2_PARAMS
 
 
@@ -40,6 +41,10 @@ class DigitalOcean_v2_Tests(LibcloudTestCase):
         DigitalOceanMockHttp.type = None
         self.driver = DigitalOceanNodeDriver(*DIGITALOCEAN_v2_PARAMS)
 
+    def test_v2_uses_v1_key(self):
+        self.assertRaises(InvalidCredsError, DigitalOceanNodeDriver,
+            *DIGITALOCEAN_v1_PARAMS, api_version='v2')
+
     def test_authentication(self):
         DigitalOceanMockHttp.type = 'UNAUTHORIZED'
         self.assertRaises(InvalidCredsError, self.driver.list_nodes)

http://git-wip-us.apache.org/repos/asf/libcloud/blob/af15645b/libcloud/test/dns/test_digitalocean.py
----------------------------------------------------------------------
diff --git a/libcloud/test/dns/test_digitalocean.py b/libcloud/test/dns/test_digitalocean.py
index f1bb92e..6a5f222 100644
--- a/libcloud/test/dns/test_digitalocean.py
+++ b/libcloud/test/dns/test_digitalocean.py
@@ -15,11 +15,13 @@
 import sys
 import unittest
 
+from libcloud.common.types import InvalidCredsError
 from libcloud.dns.drivers.digitalocean import DigitalOceanDNSDriver
 from libcloud.dns.types import RecordType
 from libcloud.test import LibcloudTestCase, MockHttpTestCase
 from libcloud.test.file_fixtures import DNSFileFixtures
 from libcloud.test.secrets import DIGITALOCEAN_v2_PARAMS
+from libcloud.test.secrets import DIGITALOCEAN_v1_PARAMS
 from libcloud.utils.py3 import httplib