diff --git a/cactus/deployment/cloudfiles/engine.py b/cactus/deployment/cloudfiles/engine.py index 292fdb30..ac5937d5 100644 --- a/cactus/deployment/cloudfiles/engine.py +++ b/cactus/deployment/cloudfiles/engine.py @@ -16,7 +16,9 @@ class CloudFilesDeploymentEngine(BaseDeploymentEngine): def _create_connection(self): username, api_key = self.credentials_manager.get_credentials() + region = self.site.config.get('cloudfiles-region', default='DFW') pyrax.set_setting("identity_type", "rackspace") + pyrax.set_setting("region", region) pyrax.set_credentials(username, api_key) return pyrax.connect_to_cloudfiles() diff --git a/cactus/deployment/cloudfiles/file.py b/cactus/deployment/cloudfiles/file.py index 34f463af..84105114 100644 --- a/cactus/deployment/cloudfiles/file.py +++ b/cactus/deployment/cloudfiles/file.py @@ -1,14 +1,18 @@ #coding:utf-8 +from pyrax.exceptions import NoSuchObject from cactus.deployment.file import BaseFile from cactus.utils.helpers import CaseInsensitiveDict class CloudFilesFile(BaseFile): def remote_changed(self): - obj = self.engine.bucket.get_object(self.url) - #TODO: Headers - return obj.etag != self.payload_checksum + try: + obj = self.engine.bucket.get_object(self.url) + #TODO: Headers + return obj.etag != self.payload_checksum + except (NoSuchObject, KeyError): + return True def get_headers(self): headers = CaseInsensitiveDict() @@ -21,4 +25,4 @@ def get_headers(self): def do_upload(self): obj = self.engine.bucket.store_object(self.url, self.payload(), content_type=self.content_type, etag=self.payload_checksum, content_encoding=self.content_encoding,) - obj.set_metadata(self.get_headers()) \ No newline at end of file + obj.set_metadata(self.get_headers())