summaryrefslogtreecommitdiff
path: root/trove
diff options
context:
space:
mode:
authorLingxian Kong <anlin.kong@gmail.com>2020-11-21 20:53:01 +1300
committerLingxian Kong <anlin.kong@gmail.com>2020-11-22 09:38:51 +1300
commit589e4ec45a3d24eeb40d16b0bfca573152b099f8 (patch)
treecfb7c132b6a82150bdffa8f2514858746cd6784b /trove
parent97e0a940dfa9e0405549347e6898d655ee8833c2 (diff)
downloadtrove-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.py8
-rw-r--r--trove/tests/unittests/configuration/test_service.py83
-rw-r--r--trove/tests/unittests/trove_testtools.py8
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))