Move tenant usage tests into misc policy actions file
Move tenant usage tests into test_server_misc_policy_actions_rbac.py
to further increase gate stability and decrease gate run time.
The number of calls to create_test_server() should be minimized
for RBAC testing because we don't do too much modification to the
resources that are created -- only what's necessary to trigger the
API action corresponding to the RBAC policy under test. Further,
minimizing such calls reduces the risk of spinning up too many servers
concurrently in our gates: the source of various gate failures as
limited resources lead to server faults being raised.
Change-Id: Ib104c08a5fa1708a829e5f91a587df6ba9c08ee0
Partial-Bug: #1699415
diff --git a/patrole_tempest_plugin/tests/api/compute/rbac_base.py b/patrole_tempest_plugin/tests/api/compute/rbac_base.py
index 0be42e7..0a3a1f5 100644
--- a/patrole_tempest_plugin/tests/api/compute/rbac_base.py
+++ b/patrole_tempest_plugin/tests/api/compute/rbac_base.py
@@ -37,7 +37,9 @@
super(BaseV2ComputeRbacTest, cls).setup_clients()
cls.auth_provider = cls.os_primary.auth_provider
cls.rbac_utils = rbac_utils.RbacUtils(cls)
+
cls.hosts_client = cls.os_primary.hosts_client
+ cls.tenant_usages_client = cls.os_primary.tenant_usages_client
@classmethod
def resource_setup(cls):
diff --git a/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py
index d4c856d..08929e1 100644
--- a/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py
+++ b/patrole_tempest_plugin/tests/api/compute/test_server_misc_policy_actions_rbac.py
@@ -210,12 +210,34 @@
def test_show_server_usage(self):
"""Test show server usage, part of os-server-usage.
- TODO(felipemonteiro): Once multiple policy test is supported, this
+ TODO(felipemonteiro): Once multiple policy testing is supported, this
test can be combined with the generic test for showing a server.
"""
self.rbac_utils.switch_role(self, toggle_rbac_role=True)
self.servers_client.show_server(self.server_id)
+ @test.requires_ext(extension='os-simple-tenant-usage', service='compute')
+ @rbac_rule_validation.action(
+ service="nova",
+ rule="os_compute_api:os-simple-tenant-usage:list")
+ @decorators.idempotent_id('2aef094f-0452-4df6-a66a-0ec22a92b16e')
+ def test_list_simple_tenant_usages(self):
+ """Test list tenant usages, part of os-simple-tenant-usage."""
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.tenant_usages_client.list_tenant_usages()
+
+ @test.requires_ext(extension='os-simple-tenant-usage', service='compute')
+ @rbac_rule_validation.action(
+ service="nova",
+ rule="os_compute_api:os-simple-tenant-usage:show")
+ @decorators.idempotent_id('fe7eacda-15c4-4bf7-93ef-1091c4546a9d')
+ def test_show_simple_tenant_usage(self):
+ """Test show tenant usage, part of os-simple-tenant-usage."""
+ tenant_id = self.auth_provider.credentials.tenant_id
+
+ self.rbac_utils.switch_role(self, toggle_rbac_role=True)
+ self.tenant_usages_client.show_tenant_usage(tenant_id=tenant_id)
+
@testtools.skipUnless(CONF.compute_feature_enabled.suspend,
"Suspend compute feature is not available.")
@decorators.idempotent_id('b775930f-237c-431c-83ae-d33ed1b9700b')
diff --git a/patrole_tempest_plugin/tests/api/compute/test_simple_tenant_usage_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_simple_tenant_usage_rbac.py
deleted file mode 100644
index ae2a0fd..0000000
--- a/patrole_tempest_plugin/tests/api/compute/test_simple_tenant_usage_rbac.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright 2017 AT&T Corporation.
-# All Rights Reserved.
-#
-# 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 import decorators
-from tempest import test
-
-from patrole_tempest_plugin import rbac_rule_validation
-from patrole_tempest_plugin.tests.api.compute import rbac_base
-
-
-class SimpleTenantUsageRbacTest(rbac_base.BaseV2ComputeRbacTest):
-
- @classmethod
- def setup_clients(cls):
- super(SimpleTenantUsageRbacTest, cls).setup_clients()
- cls.tenant_usages_client = cls.os_primary.tenant_usages_client
-
- @classmethod
- def skip_checks(cls):
- super(SimpleTenantUsageRbacTest, cls).skip_checks()
- if not test.is_extension_enabled('os-simple-tenant-usage', 'compute'):
- msg = ("%s skipped as os-simple-tenant-usage not "
- "enabled." % cls.__name__)
- raise cls.skipException(msg)
-
- @rbac_rule_validation.action(
- service="nova",
- rule="os_compute_api:os-simple-tenant-usage:list")
- @decorators.idempotent_id('2aef094f-0452-4df6-a66a-0ec22a92b16e')
- def test_simple_tenant_usage_list(self):
- self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.tenant_usages_client.list_tenant_usages()
-
- @rbac_rule_validation.action(
- service="nova",
- rule="os_compute_api:os-simple-tenant-usage:show")
- @decorators.idempotent_id('fe7eacda-15c4-4bf7-93ef-1091c4546a9d')
- def test_simple_tenant_usage_show(self):
- # A server must be created in order for usage activity to exist; else
- # the validation method in the API call throws an error.
- self.create_test_server(wait_until='ACTIVE')['id']
- tenant_id = self.auth_provider.credentials.tenant_id
- self.rbac_utils.switch_role(self, toggle_rbac_role=True)
- self.tenant_usages_client.show_tenant_usage(tenant_id=tenant_id)