blob: da32f7105191e18628eda1ff08e084242333524a [file] [log] [blame]
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03001# -*- coding: utf-8 -*-
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +03002# Licensed under the Apache License, Version 2.0 (the "License"); you may
3# not use this file except in compliance with the License. You may obtain
4# a copy of the License at
5#
6# http://www.apache.org/licenses/LICENSE-2.0
7#
8# Unless required by applicable law or agreed to in writing, software
9# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
10# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
11# License for the specific language governing permissions and limitations
12# under the License.
13
Masayuki Igawabfa07602015-01-20 18:47:17 +090014from tempest_lib import exceptions as lib_exc
15
Adam Gandelman2a86f1c2014-06-18 11:34:42 -070016from tempest.api.baremetal.admin import base
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030017from tempest.common.utils import data_utils
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030018from tempest import test
19
20
21class TestChassis(base.BaseBaremetalTest):
22 """Tests for chassis."""
23
Mh Raiesa9bb79d2014-04-17 16:20:17 +053024 @classmethod
Andrea Frittoliba240c32014-09-15 13:14:53 +010025 def resource_setup(cls):
26 super(TestChassis, cls).resource_setup()
Mh Raiesa9bb79d2014-04-17 16:20:17 +053027 _, cls.chassis = cls.create_chassis()
28
29 def _assertExpected(self, expected, actual):
30 # Check if not expected keys/values exists in actual response body
31 for key, value in expected.iteritems():
32 if key not in ('created_at', 'updated_at'):
33 self.assertIn(key, actual)
34 self.assertEqual(value, actual[key])
35
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030036 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080037 @test.idempotent_id('7c5a2e09-699c-44be-89ed-2bc189992d42')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030038 def test_create_chassis(self):
39 descr = data_utils.rand_name('test-chassis-')
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000040 _, chassis = self.create_chassis(description=descr)
Mh Raiesa9bb79d2014-04-17 16:20:17 +053041 self.assertEqual(chassis['description'], descr)
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030042
43 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080044 @test.idempotent_id('cabe9c6f-dc16-41a7-b6b9-0a90c212edd5')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030045 def test_create_chassis_unicode_description(self):
46 # Use a unicode string for testing:
47 # 'We ♡ OpenStack in Ukraine'
48 descr = u'В Україні ♡ OpenStack!'
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000049 _, chassis = self.create_chassis(description=descr)
Mh Raiesa9bb79d2014-04-17 16:20:17 +053050 self.assertEqual(chassis['description'], descr)
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030051
52 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080053 @test.idempotent_id('c84644df-31c4-49db-a307-8942881f41c0')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030054 def test_show_chassis(self):
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000055 _, chassis = self.client.show_chassis(self.chassis['uuid'])
Mh Raiesa9bb79d2014-04-17 16:20:17 +053056 self._assertExpected(self.chassis, chassis)
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030057
58 @test.attr(type="smoke")
Chris Hoge7579c1a2015-02-26 14:12:15 -080059 @test.idempotent_id('29c9cd3f-19b5-417b-9864-99512c3b33b3')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030060 def test_list_chassis(self):
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000061 _, body = self.client.list_chassis()
Mh Raiesa9bb79d2014-04-17 16:20:17 +053062 self.assertIn(self.chassis['uuid'],
63 [i['uuid'] for i in body['chassis']])
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030064
65 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080066 @test.idempotent_id('5ae649ad-22d1-4fe1-bbc6-97227d199fb3')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030067 def test_delete_chassis(self):
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000068 _, body = self.create_chassis()
Mh Raiesa9bb79d2014-04-17 16:20:17 +053069 uuid = body['uuid']
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030070
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000071 self.delete_chassis(uuid)
Masayuki Igawabfa07602015-01-20 18:47:17 +090072 self.assertRaises(lib_exc.NotFound, self.client.show_chassis, uuid)
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030073
74 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080075 @test.idempotent_id('cda8a41f-6be2-4cbf-840c-994b00a89b44')
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030076 def test_update_chassis(self):
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000077 _, body = self.create_chassis()
Mh Raiesa9bb79d2014-04-17 16:20:17 +053078 uuid = body['uuid']
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030079
80 new_description = data_utils.rand_name('new-description-')
Swapnil Kulkarniaa57d6e2014-08-19 10:40:35 +000081 _, body = (self.client.update_chassis(uuid,
82 description=new_description))
83 _, chassis = self.client.show_chassis(uuid)
Roman Prykhodchenko62b1ed12013-10-16 21:51:47 +030084 self.assertEqual(chassis['description'], new_description)
Adam Gandelman00682612014-09-02 17:10:36 -070085
86 @test.attr(type='smoke')
Chris Hoge7579c1a2015-02-26 14:12:15 -080087 @test.idempotent_id('76305e22-a4e2-4ab3-855c-f4e2368b9335')
Adam Gandelman00682612014-09-02 17:10:36 -070088 def test_chassis_node_list(self):
89 _, node = self.create_node(self.chassis['uuid'])
90 _, body = self.client.list_chassis_nodes(self.chassis['uuid'])
91 self.assertIn(node['uuid'], [n['uuid'] for n in body['nodes']])