summaryrefslogtreecommitdiff
path: root/openstackclient/tests/functional
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-07-25 00:52:42 +0000
committerGerrit Code Review <review@openstack.org>2018-07-25 00:52:42 +0000
commit6469d86522f16a12e3437b70dc5f68a67314c691 (patch)
treee0299f3e87342fb1634ed07bab627793fafc4ea2 /openstackclient/tests/functional
parentd177727a6e51500170338b4fd5a7e98179ff968f (diff)
parent735896eb1ad4543823008693c9d337691512f8bf (diff)
downloadpython-openstackclient-6469d86522f16a12e3437b70dc5f68a67314c691.tar.gz
Merge "Implement support for project limits"
Diffstat (limited to 'openstackclient/tests/functional')
-rw-r--r--openstackclient/tests/functional/identity/v3/common.py43
-rw-r--r--openstackclient/tests/functional/identity/v3/test_limit.py192
2 files changed, 235 insertions, 0 deletions
diff --git a/openstackclient/tests/functional/identity/v3/common.py b/openstackclient/tests/functional/identity/v3/common.py
index 525a31a2..58468bc7 100644
--- a/openstackclient/tests/functional/identity/v3/common.py
+++ b/openstackclient/tests/functional/identity/v3/common.py
@@ -59,6 +59,10 @@ class IdentityTests(base.TestCase):
REGISTERED_LIMIT_LIST_HEADERS = ['ID', 'Service ID', 'Resource Name',
'Default Limit', 'Description',
'Region ID']
+ LIMIT_FIELDS = ['id', 'project_id', 'service_id', 'resource_name',
+ 'resource_limit', 'description', 'region_id']
+ LIMIT_LIST_HEADERS = ['ID', 'Project ID', 'Service ID', 'Resource Name',
+ 'Resource Limit', 'Description', 'Region ID']
@classmethod
def setUpClass(cls):
@@ -356,3 +360,42 @@ class IdentityTests(base.TestCase):
for k, v in d.iteritems():
if k == key:
return v
+
+ def _create_dummy_limit(self, add_clean_up=True):
+ registered_limit_id = self._create_dummy_registered_limit()
+
+ raw_output = self.openstack(
+ 'registered limit show %s' % registered_limit_id
+ )
+ items = self.parse_show(raw_output)
+ resource_name = self._extract_value_from_items('resource_name', items)
+ service_id = self._extract_value_from_items('service_id', items)
+ resource_limit = 15
+
+ project_name = self._create_dummy_project()
+ raw_output = self.openstack('project show %s' % project_name)
+ items = self.parse_show(raw_output)
+ project_id = self._extract_value_from_items('id', items)
+
+ params = {
+ 'project_id': project_id,
+ 'service_id': service_id,
+ 'resource_name': resource_name,
+ 'resource_limit': resource_limit
+ }
+
+ raw_output = self.openstack(
+ 'limit create'
+ ' --project %(project_id)s'
+ ' --service %(service_id)s'
+ ' --resource-limit %(resource_limit)s'
+ ' %(resource_name)s' % params
+ )
+ items = self.parse_show(raw_output)
+ limit_id = self._extract_value_from_items('id', items)
+
+ if add_clean_up:
+ self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
+
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+ return limit_id
diff --git a/openstackclient/tests/functional/identity/v3/test_limit.py b/openstackclient/tests/functional/identity/v3/test_limit.py
new file mode 100644
index 00000000..03bcb06e
--- /dev/null
+++ b/openstackclient/tests/functional/identity/v3/test_limit.py
@@ -0,0 +1,192 @@
+# 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 tempest.lib.common.utils import data_utils
+
+from openstackclient.tests.functional.identity.v3 import common
+
+
+class LimitTestCase(common.IdentityTests):
+
+ def test_limit_create_with_service_name(self):
+ registered_limit_id = self._create_dummy_registered_limit()
+ raw_output = self.openstack(
+ 'registered limit show %s' % registered_limit_id
+ )
+ items = self.parse_show(raw_output)
+ service_id = self._extract_value_from_items('service_id', items)
+ resource_name = self._extract_value_from_items('resource_name', items)
+
+ raw_output = self.openstack('service show %s' % service_id)
+ items = self.parse_show(raw_output)
+ service_name = self._extract_value_from_items('name', items)
+
+ project_name = self._create_dummy_project()
+ raw_output = self.openstack('project show %s' % project_name)
+ items = self.parse_show(raw_output)
+ project_id = self._extract_value_from_items('id', items)
+
+ params = {
+ 'project_id': project_id,
+ 'service_name': service_name,
+ 'resource_name': resource_name,
+ 'resource_limit': 15
+ }
+ raw_output = self.openstack(
+ 'limit create'
+ ' --project %(project_id)s'
+ ' --service %(service_name)s'
+ ' --resource-limit %(resource_limit)s'
+ ' %(resource_name)s' % params
+ )
+ items = self.parse_show(raw_output)
+ limit_id = self._extract_value_from_items('id', items)
+ self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
+
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+
+ def test_limit_create_with_project_name(self):
+ registered_limit_id = self._create_dummy_registered_limit()
+ raw_output = self.openstack(
+ 'registered limit show %s' % registered_limit_id
+ )
+ items = self.parse_show(raw_output)
+ service_id = self._extract_value_from_items('service_id', items)
+ resource_name = self._extract_value_from_items('resource_name', items)
+
+ raw_output = self.openstack('service show %s' % service_id)
+ items = self.parse_show(raw_output)
+ service_name = self._extract_value_from_items('name', items)
+
+ project_name = self._create_dummy_project()
+
+ params = {
+ 'project_name': project_name,
+ 'service_name': service_name,
+ 'resource_name': resource_name,
+ 'resource_limit': 15
+ }
+ raw_output = self.openstack(
+ 'limit create'
+ ' --project %(project_name)s'
+ ' --service %(service_name)s'
+ ' --resource-limit %(resource_limit)s'
+ ' %(resource_name)s' % params
+ )
+ items = self.parse_show(raw_output)
+ limit_id = self._extract_value_from_items('id', items)
+ self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
+
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+ registered_limit_id = self._create_dummy_registered_limit()
+
+ def test_limit_create_with_service_id(self):
+ self._create_dummy_limit()
+
+ def test_limit_create_with_project_id(self):
+ self._create_dummy_limit()
+
+ def test_limit_create_with_options(self):
+ registered_limit_id = self._create_dummy_registered_limit()
+ region_id = self._create_dummy_region()
+
+ params = {
+ 'region_id': region_id,
+ 'registered_limit_id': registered_limit_id
+ }
+
+ raw_output = self.openstack(
+ 'registered limit set'
+ ' %(registered_limit_id)s'
+ ' --region %(region_id)s' % params
+ )
+ items = self.parse_show(raw_output)
+ service_id = self._extract_value_from_items('service_id', items)
+ resource_name = self._extract_value_from_items('resource_name', items)
+
+ project_name = self._create_dummy_project()
+ raw_output = self.openstack('project show %s' % project_name)
+ items = self.parse_show(raw_output)
+ project_id = self._extract_value_from_items('id', items)
+ description = data_utils.arbitrary_string()
+
+ params = {
+ 'project_id': project_id,
+ 'service_id': service_id,
+ 'resource_name': resource_name,
+ 'resource_limit': 15,
+ 'region_id': region_id,
+ 'description': description
+ }
+ raw_output = self.openstack(
+ 'limit create'
+ ' --project %(project_id)s'
+ ' --service %(service_id)s'
+ ' --resource-limit %(resource_limit)s'
+ ' --region %(region_id)s'
+ ' --description %(description)s'
+ ' %(resource_name)s' % params
+ )
+ items = self.parse_show(raw_output)
+ limit_id = self._extract_value_from_items('id', items)
+ self.addCleanup(self.openstack, 'limit delete %s' % limit_id)
+
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+
+ def test_limit_show(self):
+ limit_id = self._create_dummy_limit()
+ raw_output = self.openstack('limit show %s' % limit_id)
+ items = self.parse_show(raw_output)
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+
+ def test_limit_set_description(self):
+ limit_id = self._create_dummy_limit()
+
+ params = {
+ 'description': data_utils.arbitrary_string(),
+ 'limit_id': limit_id
+ }
+
+ raw_output = self.openstack(
+ 'limit set'
+ ' --description %(description)s'
+ ' %(limit_id)s' % params
+ )
+ items = self.parse_show(raw_output)
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+
+ def test_limit_set_resource_limit(self):
+ limit_id = self._create_dummy_limit()
+
+ params = {
+ 'resource_limit': 5,
+ 'limit_id': limit_id
+ }
+
+ raw_output = self.openstack(
+ 'limit set'
+ ' --resource-limit %(resource_limit)s'
+ ' %(limit_id)s' % params
+ )
+ items = self.parse_show(raw_output)
+ self.assert_show_fields(items, self.LIMIT_FIELDS)
+
+ def test_limit_list(self):
+ self._create_dummy_limit()
+ raw_output = self.openstack('limit list')
+ items = self.parse_listing(raw_output)
+ self.assert_table_structure(items, self.LIMIT_LIST_HEADERS)
+
+ def test_limit_delete(self):
+ limit_id = self._create_dummy_limit(add_clean_up=False)
+ raw_output = self.openstack('limit delete %s' % limit_id)
+ self.assertEqual(0, len(raw_output))