From adfc398e0bc85191db58b838aa4ef3097279f228 Mon Sep 17 00:00:00 2001 From: Guewen Baconnier Date: Fri, 16 Mar 2018 08:57:13 +0100 Subject: [PATCH] Propagage region_name to swift connection Otherwise, the bucket will be in the incorrect region --- attachment_swift/models/ir_attachment.py | 8 +++++++- attachment_swift/tests/test_mock_swift_api.py | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/attachment_swift/models/ir_attachment.py b/attachment_swift/models/ir_attachment.py index e923095..f57cacb 100644 --- a/attachment_swift/models/ir_attachment.py +++ b/attachment_swift/models/ir_attachment.py @@ -36,6 +36,10 @@ class IrAttachment(models.Model): account = os.environ.get('SWIFT_ACCOUNT') password = os.environ.get('SWIFT_PASSWORD') tenant_name = os.environ.get('SWIFT_TENANT_NAME') + region = os.environ.get('SWIFT_REGION_NAME') + os_options = {} + if region: + os_options['region_name'] = region if not (host and account and password and tenant_name): raise exceptions.UserError(_( "Problem connecting to Swift store, are the env variables " @@ -47,7 +51,9 @@ class IrAttachment(models.Model): user=account, key=password, tenant_name=tenant_name, - auth_version='2.0') + auth_version='2.0', + os_options=os_options, + ) except ClientException: _logger.exception('Error connecting to Swift object store') raise exceptions.UserError(_('Error on Swift connection')) diff --git a/attachment_swift/tests/test_mock_swift_api.py b/attachment_swift/tests/test_mock_swift_api.py index 9bea70d..7c093f9 100644 --- a/attachment_swift/tests/test_mock_swift_api.py +++ b/attachment_swift/tests/test_mock_swift_api.py @@ -23,6 +23,7 @@ class TestAttachmentSwift(TestIrAttachment): os.environ['SWIFT_ACCOUNT'] = 'account' os.environ['SWIFT_PASSWORD'] = 'password' os.environ['SWIFT_TENANT_NAME'] = 'tenant_name' + os.environ['SWIFT_REGION_NAME'] = 'NOWHERE' attachment = self.Attachment attachment._get_swift_connection() mock_swift_client.Connection.assert_called_once_with( @@ -30,7 +31,8 @@ class TestAttachmentSwift(TestIrAttachment): user=os.environ.get('SWIFT_ACCOUNT'), key=os.environ.get('SWIFT_PASSWORD'), tenant_name=os.environ.get('SWIFT_TENANT_NAME'), - auth_version='2.0' + auth_version='2.0', + os_options={'region_name': os.environ.get('SWIFT_REGION_NAME')}, ) def test_store_file_on_swift(self):