blob: bef5d1fedfdf20cd1ebdd4bafea35d4b580caa99 [file] [log] [blame]
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +08001# Copyright 2013 IBM Corp.
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
Matthew Treinish98b8b542013-09-20 15:46:31 +000016from tempest.common import tempest_fixtures as fixtures
Masayuki Igawa394d8d92014-03-04 17:21:56 +090017from tempest import test
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080018
19
ivan-zhuf2b00502013-10-18 10:06:52 +080020class HostsAdminTestJSON(base.BaseV2ComputeAdminTest):
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080021
22 """
23 Tests hosts API using admin privileges.
24 """
25
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080026 @classmethod
Andrea Frittoli50bb80d2014-09-15 12:34:27 +010027 def resource_setup(cls):
28 super(HostsAdminTestJSON, cls).resource_setup()
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080029 cls.client = cls.os_adm.hosts_client
Lingxian Kong4b398fd2013-10-04 17:14:14 +080030
Masayuki Igawa394d8d92014-03-04 17:21:56 +090031 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080032 @test.idempotent_id('9bfaf98d-e2cb-44b0-a07e-2558b2821e4f')
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080033 def test_list_hosts(self):
David Kranz0a735172015-01-16 10:51:18 -050034 hosts = self.client.list_hosts()
Attila Fazekas4b8b0082013-10-25 14:24:32 +020035 self.assertTrue(len(hosts) >= 2, str(hosts))
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080036
Masayuki Igawa394d8d92014-03-04 17:21:56 +090037 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080038 @test.idempotent_id('5dc06f5b-d887-47a2-bb2a-67762ef3c6de')
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080039 def test_list_hosts_with_zone(self):
Matthew Treinish98b8b542013-09-20 15:46:31 +000040 self.useFixture(fixtures.LockFixture('availability_zone'))
David Kranz0a735172015-01-16 10:51:18 -050041 hosts = self.client.list_hosts()
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080042 host = hosts[0]
43 zone_name = host['zone']
44 params = {'zone': zone_name}
David Kranz0a735172015-01-16 10:51:18 -050045 hosts = self.client.list_hosts(params)
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080046 self.assertTrue(len(hosts) >= 1)
Attila Fazekase191cb12013-07-29 06:41:52 +020047 self.assertIn(host, hosts)
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080048
Masayuki Igawa394d8d92014-03-04 17:21:56 +090049 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080050 @test.idempotent_id('9af3c171-fbf4-4150-a624-22109733c2a6')
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080051 def test_list_hosts_with_a_blank_zone(self):
52 # If send the request with a blank zone, the request will be successful
53 # and it will return all the hosts list
54 params = {'zone': ''}
David Kranz0a735172015-01-16 10:51:18 -050055 hosts = self.client.list_hosts(params)
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080056 self.assertNotEqual(0, len(hosts))
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080057
Masayuki Igawa394d8d92014-03-04 17:21:56 +090058 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080059 @test.idempotent_id('c6ddbadb-c94e-4500-b12f-8ffc43843ff8')
Lingxian Kong4b398fd2013-10-04 17:14:14 +080060 def test_list_hosts_with_nonexistent_zone(self):
61 # If send the request with a nonexistent zone, the request will be
62 # successful and no hosts will be retured
63 params = {'zone': 'xxx'}
David Kranz0a735172015-01-16 10:51:18 -050064 hosts = self.client.list_hosts(params)
Lingxian Kong4b398fd2013-10-04 17:14:14 +080065 self.assertEqual(0, len(hosts))
Liu, Zhi Kuna9d10822013-07-01 17:48:17 +080066
Masayuki Igawa394d8d92014-03-04 17:21:56 +090067 @test.attr(type='gate')
Chris Hoge7579c1a2015-02-26 14:12:15 -080068 @test.idempotent_id('38adbb12-aee2-4498-8aec-329c72423aa4')
Zhu Zhuff150052013-09-17 17:48:39 +080069 def test_show_host_detail(self):
David Kranz0a735172015-01-16 10:51:18 -050070 hosts = self.client.list_hosts()
m.benchchaoui@cloudbau.de69918362013-10-31 20:31:15 +010071
72 hosts = [host for host in hosts if host['service'] == 'compute']
73 self.assertTrue(len(hosts) >= 1)
74
75 for host in hosts:
76 hostname = host['host_name']
David Kranz0a735172015-01-16 10:51:18 -050077 resources = self.client.show_host_detail(hostname)
m.benchchaoui@cloudbau.de69918362013-10-31 20:31:15 +010078 self.assertTrue(len(resources) >= 1)
79 host_resource = resources[0]['resource']
80 self.assertIsNotNone(host_resource)
81 self.assertIsNotNone(host_resource['cpu'])
82 self.assertIsNotNone(host_resource['disk_gb'])
83 self.assertIsNotNone(host_resource['memory_mb'])
84 self.assertIsNotNone(host_resource['project'])
85 self.assertEqual(hostname, host_resource['host'])