diff options
author | Jenkins <jenkins@review.openstack.org> | 2017-08-10 15:59:51 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2017-08-10 15:59:51 +0000 |
commit | 345db721801da9e8f0fb9e574f1bb8b9b29a3fc2 (patch) | |
tree | 87777145bc1f000afbaf63517d57d9bee72c8178 | |
parent | 9c6f5b6f003ff9b9d54d2c87e87c0b1f0dde47e4 (diff) | |
parent | c74e6bb8ddee8ad1ad2479f3fcfd8396dedef55b (diff) | |
download | glance-345db721801da9e8f0fb9e574f1bb8b9b29a3fc2.tar.gz |
Merge "Prevent v1_api from making requests to v2_registry"
-rw-r--r-- | glance/api/v1/upload_utils.py | 2 | ||||
-rw-r--r-- | glance/db/__init__.py | 20 | ||||
-rw-r--r-- | glance/tests/unit/test_db.py | 5 |
3 files changed, 24 insertions, 3 deletions
diff --git a/glance/api/v1/upload_utils.py b/glance/api/v1/upload_utils.py index bfdd264f7..a4710ee76 100644 --- a/glance/api/v1/upload_utils.py +++ b/glance/api/v1/upload_utils.py @@ -84,7 +84,7 @@ def upload_data_to_store(req, image_meta, image_data, store, notifier): """ image_id = image_meta['id'] - db_api = glance.db.get_api() + db_api = glance.db.get_api(v1_mode=True) image_size = image_meta.get('size') try: diff --git a/glance/db/__init__.py b/glance/db/__init__.py index e2120dd34..142f2cc45 100644 --- a/glance/db/__init__.py +++ b/glance/db/__init__.py @@ -34,10 +34,26 @@ CONF.import_opt('image_size_cap', 'glance.common.config') CONF.import_opt('metadata_encryption_key', 'glance.common.config') -def get_api(): - api = importutils.import_module(CONF.data_api) +def get_api(v1_mode=False): + """ + When using v2_registry with v2_api or alone, it is essential that the opt + 'data_api' be set to 'glance.db.registry.api'. This requires us to + differentiate what this method returns as the db api. i.e., we do not want + to return 'glance.db.registry.api' for a call from v1 api. + Reference bug #1516706 + """ + if v1_mode: + # prevent v1_api from talking to v2_registry. + if CONF.data_api == 'glance.db.simple.api': + api = importutils.import_module(CONF.data_api) + else: + api = importutils.import_module('glance.db.sqlalchemy.api') + else: + api = importutils.import_module(CONF.data_api) + if hasattr(api, 'configure'): api.configure() + return api diff --git a/glance/tests/unit/test_db.py b/glance/tests/unit/test_db.py index 28c50afbc..55ff0b138 100644 --- a/glance/tests/unit/test_db.py +++ b/glance/tests/unit/test_db.py @@ -55,6 +55,11 @@ class TestDbUtilities(test_utils.BaseTestCase): import_module.assert_called_once_with('silly pants') self.assertFalse(hasattr(self.api, 'configure')) + def test_get_api_calls_for_v1_api(self, import_module): + api = glance.db.get_api(v1_mode=True) + self.assertNotEqual(api, self.api) + import_module.assert_called_once_with('glance.db.sqlalchemy.api') + api.configure.assert_called_once_with() UUID1 = 'c80a1a6c-bd1f-41c5-90ee-81afedb1d58d' UUID2 = 'a85abd86-55b3-4d5b-b0b4-5d0a6e6042fc' |