diff options
author | Lingxian Kong <anlin.kong@gmail.com> | 2020-11-21 20:53:01 +1300 |
---|---|---|
committer | Lingxian Kong <anlin.kong@gmail.com> | 2020-11-22 09:38:51 +1300 |
commit | 589e4ec45a3d24eeb40d16b0bfca573152b099f8 (patch) | |
tree | cfb7c132b6a82150bdffa8f2514858746cd6784b /trove | |
parent | 97e0a940dfa9e0405549347e6898d655ee8833c2 (diff) | |
download | trove-589e4ec45a3d24eeb40d16b0bfca573152b099f8.tar.gz |
Support datastore version number for configuration
Story: 2008358
Task: 41263
Change-Id: I529a07d50c0659af0c9821a8570f7548e8521805
Diffstat (limited to 'trove')
-rw-r--r-- | trove/configuration/views.py | 8 | ||||
-rw-r--r-- | trove/tests/unittests/configuration/test_service.py | 83 | ||||
-rw-r--r-- | trove/tests/unittests/trove_testtools.py | 8 |
3 files changed, 96 insertions, 3 deletions
diff --git a/trove/configuration/views.py b/trove/configuration/views.py index d9b09c19..3984a729 100644 --- a/trove/configuration/views.py +++ b/trove/configuration/views.py @@ -99,12 +99,14 @@ class DetailedConfigurationView(object): "created": self.configuration.created, "updated": self.configuration.updated, "instance_count": - getattr(self.configuration, "instance_count", 0), + getattr(self.configuration, "instance_count", 0), "datastore_name": self.configuration.datastore.name, "datastore_version_id": - self.configuration.datastore_version_id, + self.configuration.datastore_version_id, "datastore_version_name": - self.configuration.datastore_version.name + self.configuration.datastore_version.name, + "datastore_version_number": + self.configuration.datastore_version.version } return {"configuration": configuration_dict} diff --git a/trove/tests/unittests/configuration/test_service.py b/trove/tests/unittests/configuration/test_service.py new file mode 100644 index 00000000..55bd905c --- /dev/null +++ b/trove/tests/unittests/configuration/test_service.py @@ -0,0 +1,83 @@ +# Copyright 2020 Catalyst Cloud +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +from unittest import mock + +from trove.common import cfg +from trove.common import wsgi +from trove.configuration import models as config_models +from trove.configuration import service +from trove.datastore import models as ds_models +from trove.tests.unittests import trove_testtools +from trove.tests.unittests.util import util + +CONF = cfg.CONF + + +class TestConfigurationsController(trove_testtools.TestCase): + @classmethod + def setUpClass(cls): + util.init_db() + + cls.ds_name = cls.random_name( + 'datastore', prefix='TestConfigurationsController') + ds_models.update_datastore(name=cls.ds_name, default_version=None) + cls.ds = ds_models.Datastore.load(cls.ds_name) + + ds_version_name = cls.random_name( + 'version', prefix='TestConfigurationsController') + ds_models.update_datastore_version( + cls.ds_name, ds_version_name, 'mysql', '', + ['trove'], '', 1, version='5.7.29') + cls.ds_version = ds_models.DatastoreVersion.load( + cls.ds, ds_version_name, version='5.7.29') + + cls.tenant_id = cls.random_uuid() + cls.config = config_models.Configuration.create( + cls.random_name('configuration'), + '', cls.tenant_id, None, + cls.ds_version.id) + cls.config_id = cls.config.id + + cls.controller = service.ConfigurationsController() + + super(TestConfigurationsController, cls).setUpClass() + + @classmethod + def tearDownClass(cls): + util.cleanup_db() + + super(TestConfigurationsController, cls).tearDownClass() + + def test_show(self): + req_mock = mock.MagicMock( + environ={ + wsgi.CONTEXT_KEY: mock.MagicMock(project_id=self.tenant_id) + } + ) + result = self.controller.show(req_mock, self.tenant_id, + self.config_id) + data = result.data(None).get('configuration') + + expected = { + "id": self.config_id, + "name": self.config.name, + "description": '', + "instance_count": 0, + "datastore_name": self.ds_name, + "datastore_version_id": self.ds_version.id, + "datastore_version_name": self.ds_version.name, + "datastore_version_number": self.ds_version.version + } + + self.assertDictContains(data, expected) diff --git a/trove/tests/unittests/trove_testtools.py b/trove/tests/unittests/trove_testtools.py index 57ada51a..34e67b89 100644 --- a/trove/tests/unittests/trove_testtools.py +++ b/trove/tests/unittests/trove_testtools.py @@ -122,3 +122,11 @@ class TestCase(testtools.TestCase): @classmethod def random_uuid(cls): return str(uuid.uuid4()) + + def assertDictContains(self, parent, child): + """Checks whether child dict is a subset of parent. + + assertDictContainsSubset() in standard Python 2.7 has been deprecated + since Python 3.2 + """ + self.assertEqual(parent, dict(parent, **child)) |