From d9c95e4c8bb0a2d9d7f73600d82bfd32318c37a6 Mon Sep 17 00:00:00 2001 From: ivan-zhu Date: Wed, 24 Oct 2012 16:13:01 +0800 Subject: Support for nova client list hosts with specific zone Implements one workitem of blueprint apis-for-nova-manage This add an optional QUEY_STRING(zone=xxx) in /v1.1/{tenant_id}/os-hosts. So we can also send /v1.1/{tenant_id}/os-hosts?zone=xxx now. It will only return the hosts that availability_zone=xxx. Change-Id: I89f2c0bf50f8ea1ef9f06da664f5c4b24098e5df --- .../api/openstack/compute/contrib/test_hosts.py | 30 ++++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) (limited to 'nova/tests') diff --git a/nova/tests/api/openstack/compute/contrib/test_hosts.py b/nova/tests/api/openstack/compute/contrib/test_hosts.py index 570b13473..b2b5407f5 100644 --- a/nova/tests/api/openstack/compute/contrib/test_hosts.py +++ b/nova/tests/api/openstack/compute/contrib/test_hosts.py @@ -29,15 +29,18 @@ from nova import test FLAGS = flags.FLAGS LOG = logging.getLogger(__name__) HOST_LIST = [ - {"host_name": "host_c1", "service": "compute"}, - {"host_name": "host_c2", "service": "compute"}, - {"host_name": "host_v1", "service": "volume"}, - {"host_name": "host_v2", "service": "volume"}] + {"host_name": "host_c1", "service": "compute", "zone": "nova"}, + {"host_name": "host_c2", "service": "compute", "zone": "nonova"}, + {"host_name": "host_v1", "service": "volume", "zone": "nova"}, + {"host_name": "host_v2", "service": "volume", "zone": "nonova"}] +HOST_LIST_NOVA_ZONE = [ + {"host_name": "host_c1", "service": "compute", "zone": "nova"}, + {"host_name": "host_v1", "service": "volume", "zone": "nova"}] SERVICES_LIST = [ - {"host": "host_c1", "topic": "compute"}, - {"host": "host_c2", "topic": "compute"}, - {"host": "host_v1", "topic": "volume"}, - {"host": "host_v2", "topic": "volume"}] + {"host": "host_c1", "topic": "compute", "availability_zone": "nova"}, + {"host": "host_c2", "topic": "compute", "availability_zone": "nonova"}, + {"host": "host_v1", "topic": "volume", "availability_zone": "nova"}, + {"host": "host_v2", "topic": "volume", "availability_zone": "nonova"}] def stub_service_get_all(self, req): @@ -97,6 +100,12 @@ def _create_instance_dict(**kwargs): class FakeRequest(object): environ = {"nova.context": context.get_admin_context()} + GET = {} + + +class FakeRequestWithNovaZone(object): + environ = {"nova.context": context.get_admin_context()} + GET = {"zone": "nova"} class HostTestCase(test.TestCase): @@ -130,6 +139,11 @@ class HostTestCase(test.TestCase): if host["service"] == "compute"] self.assertEqual(compute_hosts, expected) + def test_list_hosts_with_zone(self): + req = FakeRequestWithNovaZone() + hosts = os_hosts._list_hosts(req) + self.assertEqual(hosts, HOST_LIST_NOVA_ZONE) + def test_disable_host(self): self._test_host_update('host_c1', 'status', 'disable', 'disabled') self._test_host_update('host_c2', 'status', 'disable', 'enabled') -- cgit