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