blob: 1c37cad1e6d9985c6f37a6a6c282e1f6cb13f626 [file] [log] [blame]
Yuiko Takada420f2eb2014-04-02 19:53:38 +09001# Copyright 2014 NEC Corporation. All rights reserved.
2#
3# Licensed under the Apache License, Version 2.0 (the "License"); you may
4# not use this file except in compliance with the License. You may obtain
5# a copy of the License at
6#
7# http://www.apache.org/licenses/LICENSE-2.0
8#
9# Unless required by applicable law or agreed to in writing, software
10# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12# License for the specific language governing permissions and limitations
13# under the License.
14
15from tempest.api.compute import base
Fei Long Wangd39431f2015-05-14 11:30:48 +120016from tempest.common.utils import data_utils
Yuiko Takada420f2eb2014-04-02 19:53:38 +090017from tempest import test
18
Yuiko Takada420f2eb2014-04-02 19:53:38 +090019
20class AgentsAdminTestJSON(base.BaseV2ComputeAdminTest):
Ken'ichi Ohmichi88363cb2015-11-19 08:00:54 +000021 """Tests Agents API"""
Yuiko Takada420f2eb2014-04-02 19:53:38 +090022
23 @classmethod
Rohan Kanade60b73092015-02-04 17:58:19 +053024 def setup_clients(cls):
25 super(AgentsAdminTestJSON, cls).setup_clients()
Yuiko Takada420f2eb2014-04-02 19:53:38 +090026 cls.client = cls.os_adm.agents_client
27
Benny Kopilovc1daa122016-09-26 14:19:50 +030028 @classmethod
29 def resource_setup(cls):
30 super(AgentsAdminTestJSON, cls).resource_setup()
31 cls.params_agent = cls._param_helper(
Yuiko Takada420f2eb2014-04-02 19:53:38 +090032 hypervisor='common', os='linux', architecture='x86_64',
33 version='7.0', url='xxx://xxxx/xxx/xxx',
34 md5hash='add6bb58e139be103324d04d82d8f545')
Yuiko Takada420f2eb2014-04-02 19:53:38 +090035
Benny Kopilovc1daa122016-09-26 14:19:50 +030036 @staticmethod
37 def _param_helper(**kwargs):
Yuiko Takada420f2eb2014-04-02 19:53:38 +090038 rand_key = 'architecture'
39 if rand_key in kwargs:
40 # NOTE: The rand_name is for avoiding agent conflicts.
41 # If you try to create an agent with the same hypervisor,
Felix Li6aebd7e2016-01-04 10:11:04 -050042 # os and architecture as an existing agent, Nova will return
Yuiko Takada420f2eb2014-04-02 19:53:38 +090043 # an HTTPConflict or HTTPServerError.
44 kwargs[rand_key] = data_utils.rand_name(kwargs[rand_key])
45 return kwargs
46
Chris Hoge7579c1a2015-02-26 14:12:15 -080047 @test.idempotent_id('1fc6bdc8-0b6d-4cc7-9f30-9b04fabe5b90')
Yuiko Takada420f2eb2014-04-02 19:53:38 +090048 def test_create_agent(self):
49 # Create an agent.
50 params = self._param_helper(
51 hypervisor='kvm', os='win', architecture='x86',
52 version='7.0', url='xxx://xxxx/xxx/xxx',
53 md5hash='add6bb58e139be103324d04d82d8f545')
ghanshyam5805ccc2015-08-04 14:06:20 +090054 body = self.client.create_agent(**params)['agent']
Yuiko Takada420f2eb2014-04-02 19:53:38 +090055 self.addCleanup(self.client.delete_agent, body['agent_id'])
56 for expected_item, value in params.items():
57 self.assertEqual(value, body[expected_item])
58
Chris Hoge7579c1a2015-02-26 14:12:15 -080059 @test.idempotent_id('dc9ffd51-1c50-4f0e-a820-ae6d2a568a9e')
Yuiko Takada420f2eb2014-04-02 19:53:38 +090060 def test_update_agent(self):
Benny Kopilovc1daa122016-09-26 14:19:50 +030061 # Create and update an agent.
62 body = self.client.create_agent(**self.params_agent)['agent']
63 self.addCleanup(self.client.delete_agent, body['agent_id'])
64 agent_id = body['agent_id']
Yuiko Takada420f2eb2014-04-02 19:53:38 +090065 params = self._param_helper(
66 version='8.0', url='xxx://xxxx/xxx/xxx2',
67 md5hash='add6bb58e139be103324d04d82d8f547')
Benny Kopilovc1daa122016-09-26 14:19:50 +030068 body = self.client.update_agent(agent_id, **params)['agent']
Yuiko Takada420f2eb2014-04-02 19:53:38 +090069 for expected_item, value in params.items():
70 self.assertEqual(value, body[expected_item])
71
Chris Hoge7579c1a2015-02-26 14:12:15 -080072 @test.idempotent_id('470e0b89-386f-407b-91fd-819737d0b335')
Yuiko Takada420f2eb2014-04-02 19:53:38 +090073 def test_delete_agent(self):
Benny Kopilovc1daa122016-09-26 14:19:50 +030074 # Create an agent and delete it.
75 body = self.client.create_agent(**self.params_agent)['agent']
76 self.client.delete_agent(body['agent_id'])
Yuiko Takada420f2eb2014-04-02 19:53:38 +090077
78 # Verify the list doesn't contain the deleted agent.
ghanshyam5805ccc2015-08-04 14:06:20 +090079 agents = self.client.list_agents()['agents']
Benny Kopilovc1daa122016-09-26 14:19:50 +030080 self.assertNotIn(body['agent_id'], map(lambda x: x['agent_id'],
81 agents))
Yuiko Takada420f2eb2014-04-02 19:53:38 +090082
Chris Hoge7579c1a2015-02-26 14:12:15 -080083 @test.idempotent_id('6a326c69-654b-438a-80a3-34bcc454e138')
Yuiko Takada420f2eb2014-04-02 19:53:38 +090084 def test_list_agents(self):
Benny Kopilovc1daa122016-09-26 14:19:50 +030085 # Create an agent and list all agents.
86 body = self.client.create_agent(**self.params_agent)['agent']
87 self.addCleanup(self.client.delete_agent, body['agent_id'])
ghanshyam5805ccc2015-08-04 14:06:20 +090088 agents = self.client.list_agents()['agents']
Béla Vancsics64862f72016-11-08 09:12:31 +010089 self.assertGreater(len(agents), 0,
90 'Cannot get any agents.(%s)' % agents)
Benny Kopilovc1daa122016-09-26 14:19:50 +030091 self.assertIn(body['agent_id'], map(lambda x: x['agent_id'], agents))
Yuiko Takada420f2eb2014-04-02 19:53:38 +090092
Chris Hoge7579c1a2015-02-26 14:12:15 -080093 @test.idempotent_id('eabadde4-3cd7-4ec4-a4b5-5a936d2d4408')
Yuiko Takada420f2eb2014-04-02 19:53:38 +090094 def test_list_agents_with_filter(self):
Benny Kopilovc1daa122016-09-26 14:19:50 +030095 # Create agents and list the agent builds by the filter.
96 body = self.client.create_agent(**self.params_agent)['agent']
97 self.addCleanup(self.client.delete_agent, body['agent_id'])
Yuiko Takada420f2eb2014-04-02 19:53:38 +090098 params = self._param_helper(
99 hypervisor='xen', os='linux', architecture='x86',
100 version='7.0', url='xxx://xxxx/xxx/xxx1',
101 md5hash='add6bb58e139be103324d04d82d8f546')
ghanshyam5805ccc2015-08-04 14:06:20 +0900102 agent_xen = self.client.create_agent(**params)['agent']
Yuiko Takada420f2eb2014-04-02 19:53:38 +0900103 self.addCleanup(self.client.delete_agent, agent_xen['agent_id'])
104
105 agent_id_xen = agent_xen['agent_id']
ghanshyam5805ccc2015-08-04 14:06:20 +0900106 agents = (self.client.list_agents(hypervisor=agent_xen['hypervisor'])
107 ['agents'])
Béla Vancsics64862f72016-11-08 09:12:31 +0100108 self.assertGreater(len(agents), 0,
109 'Cannot get any agents.(%s)' % agents)
Yuiko Takada420f2eb2014-04-02 19:53:38 +0900110 self.assertIn(agent_id_xen, map(lambda x: x['agent_id'], agents))
Benny Kopilovc1daa122016-09-26 14:19:50 +0300111 self.assertNotIn(body['agent_id'], map(lambda x: x['agent_id'],
112 agents))