From 428c44ae9d7d732dada7e2b3696af92ebc61c601 Mon Sep 17 00:00:00 2001 From: Samantha Blanco Date: Thu, 3 Aug 2017 16:00:07 -0400 Subject: [PATCH] Adds update and delete agent tests Adds tests for PUT and DELETE endpoints for the os-agents client to test_agents_rbac. Change-Id: I916061e8301876385f3bf1566ed6a2ac14f1467a Closes-Bug: #1705796 --- .../tests/api/compute/test_agents_rbac.py | 50 +++++++++++++++++++ .../notes/agents-ca4a5e232ce242a5.yaml | 5 ++ 2 files changed, 55 insertions(+) create mode 100644 releasenotes/notes/agents-ca4a5e232ce242a5.yaml diff --git a/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py b/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py index f3553583..4712ed0a 100644 --- a/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py +++ b/patrole_tempest_plugin/tests/api/compute/test_agents_rbac.py @@ -13,6 +13,8 @@ # License for the specific language governing permissions and limitations # under the License. +from tempest.lib.common.utils import data_utils +from tempest.lib.common.utils import test_utils from tempest.lib import decorators from tempest import test @@ -29,6 +31,16 @@ class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest): raise cls.skipException( '%s skipped as os-agents not enabled' % cls.__name__) + def _param_helper(self, **kwargs): + rand_key = 'architecture' + if rand_key in kwargs: + # NOTE: The rand_name is for avoiding agent conflicts. + # If you try to create an agent with the same hypervisor, + # os and architecture as an existing agent, Nova will return + # an HTTPConflict or HTTPServerError. + kwargs[rand_key] = data_utils.rand_name(kwargs[rand_key]) + return kwargs + @rbac_rule_validation.action( service="nova", rule="os_compute_api:os-agents") @decorators.idempotent_id('d1bc6d97-07f5-4f45-ac29-1c619a6a7e27') @@ -48,3 +60,41 @@ class AgentsRbacTest(rbac_base.BaseV2ComputeRbacTest): body = self.agents_client.create_agent(**params)['agent'] self.addCleanup(self.agents_client.delete_agent, body['agent_id']) + + @rbac_rule_validation.action( + service="nova", + rule="os_compute_api:os-agents") + @decorators.idempotent_id('b22f2681-9ffb-439b-b240-dae503e41020') + def test_update_agent(self): + params = self._param_helper( + hypervisor='common', os='linux', + architecture='x86_64', version='7.0', + url='xxx://xxxx/xxx/xxx', + md5hash='add6bb58e139be103324d04d82d8f545') + body = self.agents_client.create_agent(**params)['agent'] + self.addCleanup(self.agents_client.delete_agent, + body['agent_id']) + + self.rbac_utils.switch_role(self, toggle_rbac_role=True) + update_params = self._param_helper( + version='8.0', + url='xxx://xxxx/xxx/xxx2', + md5hash='add6bb58e139be103324d04d82d8f547') + self.agents_client.update_agent(body['agent_id'], **update_params) + + @rbac_rule_validation.action( + service="nova", + rule="os_compute_api:os-agents") + @decorators.idempotent_id('c5042af8-0682-43b0-abc4-bf33349e23dd') + def test_delete_agent(self): + params = self._param_helper( + hypervisor='common', os='linux', + architecture='x86_64', version='7.0', + url='xxx://xxxx/xxx/xxx', + md5hash='add6bb58e139be103324d04d82d8f545') + body = self.agents_client.create_agent(**params)['agent'] + self.addCleanup(test_utils.call_and_ignore_notfound_exc, + self.agents_client.delete_agent, + body['agent_id']) + self.rbac_utils.switch_role(self, toggle_rbac_role=True) + self.agents_client.delete_agent(body['agent_id']) diff --git a/releasenotes/notes/agents-ca4a5e232ce242a5.yaml b/releasenotes/notes/agents-ca4a5e232ce242a5.yaml new file mode 100644 index 00000000..3cd96462 --- /dev/null +++ b/releasenotes/notes/agents-ca4a5e232ce242a5.yaml @@ -0,0 +1,5 @@ +--- +features: + - | + Added tests to test_agents_rbac.py for PUT and + DELETE endpoints.