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 2014/01/30 17:29:46 UTC

[2/5] git commit: When a request is made to a CDN endpoint there is no internalURL to use, we have to fall back to the publicURL

When a request is made to a CDN endpoint there is no internalURL to use, we have to fall back to the publicURL

Closes #231

Signed-off-by: Tomaz Muraus <to...@apache.org>


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

Branch: refs/heads/trunk
Commit: 34c3df43ddb37d077cfb40049753d6ff487a2e91
Parents: 5a5e5bc
Author: John Obelenus <jo...@gmail.com>
Authored: Wed Jan 29 18:31:45 2014 -0500
Committer: Tomaz Muraus <to...@apache.org>
Committed: Thu Jan 30 17:22:20 2014 +0100

----------------------------------------------------------------------
 libcloud/storage/drivers/cloudfiles.py   | 15 ++++++++++++---
 libcloud/test/storage/test_cloudfiles.py |  6 ++++--
 2 files changed, 16 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/libcloud/blob/34c3df43/libcloud/storage/drivers/cloudfiles.py
----------------------------------------------------------------------
diff --git a/libcloud/storage/drivers/cloudfiles.py b/libcloud/storage/drivers/cloudfiles.py
index 8d52c00..8abaa1f 100644
--- a/libcloud/storage/drivers/cloudfiles.py
+++ b/libcloud/storage/drivers/cloudfiles.py
@@ -52,6 +52,8 @@ from libcloud.common.rackspace import AUTH_URL
 
 CDN_HOST = 'cdn.clouddrive.com'
 API_VERSION = 'v1.0'
+INTERNAL_ENDPOINT_KEY = 'internalURL'
+PUBLIC_ENDPOINT_KEY = 'publicURL'
 
 
 class CloudFilesResponse(Response):
@@ -113,7 +115,13 @@ class CloudFilesConnection(OpenStackBaseConnection):
         self.api_version = API_VERSION
         self.accept_format = 'application/json'
         self.cdn_request = False
-        self.endpoint_url = 'internalURL' if use_internal_url else 'publicURL'
+        self.use_internal_url = use_internal_url
+
+    def _get_endpoint_key(self):
+        endpoint_key = INTERNAL_ENDPOINT_KEY if self.use_internal_url else PUBLIC_ENDPOINT_KEY
+        if self.cdn_request:
+            endpoint_key = PUBLIC_ENDPOINT_KEY  # cdn endpoints don't have internal urls
+        return endpoint_key
 
     def get_endpoint(self):
         region = self._ex_force_service_region.upper()
@@ -134,12 +142,13 @@ class CloudFilesConnection(OpenStackBaseConnection):
         # if this is a CDN request, return the cdn url instead
         if self.cdn_request:
             ep = cdn_ep
+        endpoint_url = self._get_endpoint_key()
 
         if not ep:
             raise LibcloudError('Could not find specified endpoint')
 
-        if self.endpoint_url in ep:
-            return ep[self.endpoint_url]
+        if endpoint_url in ep:
+            return ep[endpoint_url]
         else:
             raise LibcloudError('Could not find specified endpoint')
 

http://git-wip-us.apache.org/repos/asf/libcloud/blob/34c3df43/libcloud/test/storage/test_cloudfiles.py
----------------------------------------------------------------------
diff --git a/libcloud/test/storage/test_cloudfiles.py b/libcloud/test/storage/test_cloudfiles.py
index 5f683fb..2878c1e 100644
--- a/libcloud/test/storage/test_cloudfiles.py
+++ b/libcloud/test/storage/test_cloudfiles.py
@@ -141,10 +141,12 @@ class CloudFilesTests(unittest.TestCase):
     def test_endpoint_pointer(self):
         kwargs = {'use_internal_url': False}
         driver = CloudFilesStorageDriver('driver', 'dummy', **kwargs)
-        self.assertEquals(driver.connection.endpoint_url, 'publicURL')
+        self.assertEquals(driver.connection._get_endpoint_key(), libcloud.storage.drivers.cloudfiles.PUBLIC_ENDPOINT_KEY)
         kwargs = {'use_internal_url': True}
         driver = CloudFilesStorageDriver('driver', 'dummy', **kwargs)
-        self.assertEquals(driver.connection.endpoint_url, 'internalURL')
+        self.assertEquals(driver.connection._get_endpoint_key(), libcloud.storage.drivers.cloudfiles.INTERNAL_ENDPOINT_KEY)
+        driver.connection.cdn_request = True
+        self.assertEquals(driver.connection._get_endpoint_key(), libcloud.storage.drivers.cloudfiles.PUBLIC_ENDPOINT_KEY)
 
     def test_list_containers(self):
         CloudFilesMockHttp.type = 'EMPTY'