blob: 2c9369f23203621f3653809453fae378b6797a77 [file] [log] [blame]
ivan-zhu8577cb12013-08-20 14:38:36 +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
16from tempest.common import tempest_fixtures as fixtures
ivan-zhu00fe64f2013-08-20 19:35:51 +080017from tempest import test
ivan-zhu8577cb12013-08-20 14:38:36 +080018
19
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090020class HostsAdminV3Test(base.BaseV3ComputeAdminTest):
ivan-zhu8577cb12013-08-20 14:38:36 +080021
22 """
23 Tests hosts API using admin privileges.
24 """
25
26 _interface = 'json'
27
28 @classmethod
29 def setUpClass(cls):
Ken'ichi Ohmichi7f508ed2014-01-30 22:35:20 +090030 super(HostsAdminV3Test, cls).setUpClass()
ivan-zhu00fe64f2013-08-20 19:35:51 +080031 cls.client = cls.hosts_admin_client
ivan-zhu8577cb12013-08-20 14:38:36 +080032
ivan-zhu00fe64f2013-08-20 19:35:51 +080033 @test.attr(type='gate')
ivan-zhu8577cb12013-08-20 14:38:36 +080034 def test_list_hosts(self):
35 resp, hosts = self.client.list_hosts()
36 self.assertEqual(200, resp.status)
37 self.assertTrue(len(hosts) >= 2, str(hosts))
38
ivan-zhu00fe64f2013-08-20 19:35:51 +080039 @test.attr(type='gate')
ivan-zhu8577cb12013-08-20 14:38:36 +080040 def test_list_hosts_with_zone(self):
41 self.useFixture(fixtures.LockFixture('availability_zone'))
42 resp, hosts = self.client.list_hosts()
43 host = hosts[0]
44 zone_name = host['zone']
45 params = {'zone': zone_name}
46 resp, hosts = self.client.list_hosts(params)
47 self.assertEqual(200, resp.status)
48 self.assertTrue(len(hosts) >= 1)
49 self.assertIn(host, hosts)
50
ivan-zhu00fe64f2013-08-20 19:35:51 +080051 @test.attr(type='gate')
ivan-zhu8577cb12013-08-20 14:38:36 +080052 def test_list_hosts_with_a_blank_zone(self):
53 # If send the request with a blank zone, the request will be successful
54 # and it will return all the hosts list
55 params = {'zone': ''}
56 resp, hosts = self.client.list_hosts(params)
57 self.assertNotEqual(0, len(hosts))
58 self.assertEqual(200, resp.status)
59
ivan-zhu00fe64f2013-08-20 19:35:51 +080060 @test.attr(type='gate')
ivan-zhu8577cb12013-08-20 14:38:36 +080061 def test_list_hosts_with_nonexistent_zone(self):
62 # If send the request with a nonexistent zone, the request will be
63 # successful and no hosts will be retured
64 params = {'zone': 'xxx'}
65 resp, hosts = self.client.list_hosts(params)
66 self.assertEqual(0, len(hosts))
67 self.assertEqual(200, resp.status)
68
ivan-zhu00fe64f2013-08-20 19:35:51 +080069 @test.attr(type='gate')
ivan-zhu8577cb12013-08-20 14:38:36 +080070 def test_show_host_detail(self):
71 resp, hosts = self.client.list_hosts()
72 self.assertEqual(200, resp.status)
73
74 hosts = [host for host in hosts if host['service'] == 'compute']
75 self.assertTrue(len(hosts) >= 1)
76
77 for host in hosts:
78 hostname = host['host_name']
79 resp, resources = self.client.show_host_detail(hostname)
80 self.assertEqual(200, resp.status)
81 self.assertTrue(len(resources) >= 1)
82 host_resource = resources[0]['resource']
83 self.assertIsNotNone(host_resource)
84 self.assertIsNotNone(host_resource['cpu'])
85 self.assertIsNotNone(host_resource['disk_gb'])
86 self.assertIsNotNone(host_resource['memory_mb'])
87 self.assertIsNotNone(host_resource['project'])
88 self.assertEqual(hostname, host_resource['host'])