diff --git a/libcloud/common/openstack.py b/libcloud/common/openstack.py index b409ee0..30c089b 100644 --- a/libcloud/common/openstack.py +++ b/libcloud/common/openstack.py @@ -447,7 +447,6 @@ class OpenStackBaseConnection(ConnectionUserAndKey): return super(OpenStackBaseConnection, self).morph_action_hook(action) def request(self, **kwargs): - self._populate_hosts_and_request_paths() return super(OpenStackBaseConnection, self).request(**kwargs) def _populate_hosts_and_request_paths(self): diff --git a/libcloud/storage/drivers/cloudfiles.py b/libcloud/storage/drivers/cloudfiles.py index 8d9477b..52eaeb7 100644 --- a/libcloud/storage/drivers/cloudfiles.py +++ b/libcloud/storage/drivers/cloudfiles.py @@ -108,8 +108,9 @@ class CloudFilesConnection(OpenStackBaseConnection): **kwargs) self.api_version = API_VERSION self.accept_format = 'application/json' + self.cdn_request = False - def get_endpoint(self, cdn_request=False): + def get_endpoint(self): # First, we parse out both files and cdn endpoints # for each auth version if '2.0' in self._auth_version: @@ -123,7 +124,7 @@ class CloudFilesConnection(OpenStackBaseConnection): cdn_eps = self.service_catalog.get_endpoints(name='cloudFilesCDN') # if this is a CDN request, return the cdn url instead - if cdn_request: + if self.cdn_request: eps = cdn_eps if len(eps) == 0: @@ -142,16 +143,7 @@ class CloudFilesConnection(OpenStackBaseConnection): if not params: params = {} - # FIXME: Massive hack. - # This driver dynamically changes the url in its connection, - # based on arguments passed to request(). As such, we have to - # manually check and reset connection params each request - self._populate_hosts_and_request_paths() - if not self._ex_force_base_url: - self._reset_connection_params(self.get_endpoint(cdn_request)) - else: - self._reset_connection_params(self._ex_force_base_url) - + self.cdn_request = cdn_request params['format'] = 'json' if method in ['POST', 'PUT'] and 'Content-Type' not in headers: @@ -163,10 +155,6 @@ class CloudFilesConnection(OpenStackBaseConnection): method=method, headers=headers, raw=raw) - def _reset_connection_params(self, endpoint_url): - (self.host, self.port, self.secure, self.request_path) = \ - self._tuple_from_url(endpoint_url) - class CloudFilesUSConnection(CloudFilesConnection): """ @@ -288,8 +276,10 @@ class CloudFilesStorageDriver(StorageDriver, OpenStackDriverMixin): def enable_container_cdn(self, container): container_name = container.name + headers = {'X-CDN-Enabled': 'True'} response = self.connection.request('/%s' % (container_name), method='PUT', + headers=headers, cdn_request=True) if response.status in [ httplib.CREATED, httplib.ACCEPTED ]: