diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-03-16 21:36:39 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-03-16 21:36:39 +0000 |
commit | a46f8f13c219f83aad8fceb884a01f69c873cd62 (patch) | |
tree | 847cf553ee31bcea78d12ae99bf01169e8a359c2 | |
parent | 374d5cb354ed06d52653663b5166f50ec85c64b6 (diff) | |
parent | 2a6fe4a8c53501b333df60b8662a20a0c7269455 (diff) | |
download | horizon-a46f8f13c219f83aad8fceb884a01f69c873cd62.tar.gz |
Merge "Fix host listing in live migration" into stable/icehouse
4 files changed, 36 insertions, 25 deletions
diff --git a/openstack_dashboard/dashboards/admin/instances/forms.py b/openstack_dashboard/dashboards/admin/instances/forms.py index b13dce6d7..86da60127 100644 --- a/openstack_dashboard/dashboards/admin/instances/forms.py +++ b/openstack_dashboard/dashboards/admin/instances/forms.py @@ -50,10 +50,11 @@ class LiveMigrateForm(forms.SelfHandlingForm): def populate_host_choices(self, request, initial): hosts = initial.get('hosts') current_host = initial.get('current_host') - host_list = [(host.hypervisor_hostname, - host.hypervisor_hostname) + host_list = [(host.host_name, + host.host_name) for host in hosts - if host.service['host'] != current_host] + if host.service.startswith('compute') and + host.host_name != current_host] if host_list: host_list.insert(0, ("", _("Select a new host"))) else: diff --git a/openstack_dashboard/dashboards/admin/instances/tests.py b/openstack_dashboard/dashboards/admin/instances/tests.py index abb98af84..64276f8f6 100644 --- a/openstack_dashboard/dashboards/admin/instances/tests.py +++ b/openstack_dashboard/dashboards/admin/instances/tests.py @@ -221,14 +221,14 @@ class InstanceViewTest(test.BaseAdminViewTests): self.assertContains(res, "instances__revert") self.assertNotContains(res, "instances__migrate") - @test.create_stubs({api.nova: ('hypervisor_list', + @test.create_stubs({api.nova: ('host_list', 'server_get',)}) def test_instance_live_migrate_get(self): server = self.servers.first() api.nova.server_get(IsA(http.HttpRequest), server.id) \ .AndReturn(server) - api.nova.hypervisor_list(IsA(http.HttpRequest)) \ - .AndReturn(self.hypervisors.list()) + api.nova.host_list(IsA(http.HttpRequest)) \ + .AndReturn(self.hosts.list()) self.mox.ReplayAll() @@ -252,13 +252,13 @@ class InstanceViewTest(test.BaseAdminViewTests): self.assertRedirectsNoFollow(res, INDEX_URL) - @test.create_stubs({api.nova: ('hypervisor_list', + @test.create_stubs({api.nova: ('host_list', 'server_get',)}) def test_instance_live_migrate_list_hypervisor_get_exception(self): server = self.servers.first() api.nova.server_get(IsA(http.HttpRequest), server.id) \ .AndReturn(server) - api.nova.hypervisor_list(IsA(http.HttpRequest)) \ + api.nova.host_list(IsA(http.HttpRequest)) \ .AndRaise(self.exceptions.nova) self.mox.ReplayAll() @@ -268,14 +268,14 @@ class InstanceViewTest(test.BaseAdminViewTests): self.assertRedirectsNoFollow(res, INDEX_URL) - @test.create_stubs({api.nova: ('hypervisor_list', + @test.create_stubs({api.nova: ('host_list', 'server_get',)}) def test_instance_live_migrate_list_hypervisor_without_current(self): server = self.servers.first() api.nova.server_get(IsA(http.HttpRequest), server.id) \ .AndReturn(server) - api.nova.hypervisor_list(IsA(http.HttpRequest)) \ - .AndReturn(self.hypervisors.list()) + api.nova.host_list(IsA(http.HttpRequest)) \ + .AndReturn(self.hosts.list()) self.mox.ReplayAll() @@ -283,24 +283,25 @@ class InstanceViewTest(test.BaseAdminViewTests): args=[server.id]) res = self.client.get(url) self.assertNotContains( - res, "<option value=\"devstack003\">devstack003</option>") + res, "<option value=\"instance-host\">devstack004</option>") self.assertContains( res, "<option value=\"devstack001\">devstack001</option>") - self.assertContains( + self.assertNotContains( res, "<option value=\"devstack002\">devstack002</option>") + self.assertContains( + res, "<option value=\"devstack003\">devstack003</option>") - @test.create_stubs({api.nova: ('hypervisor_list', + @test.create_stubs({api.nova: ('host_list', 'server_get', 'server_live_migrate',)}) def test_instance_live_migrate_post(self): server = self.servers.first() - hypervisor = self.hypervisors.first() - host = hypervisor.hypervisor_hostname + host = self.hosts.first().host_name api.nova.server_get(IsA(http.HttpRequest), server.id) \ .AndReturn(server) - api.nova.hypervisor_list(IsA(http.HttpRequest)) \ - .AndReturn(self.hypervisors.list()) + api.nova.host_list(IsA(http.HttpRequest)) \ + .AndReturn(self.hosts.list()) api.nova.server_live_migrate(IsA(http.HttpRequest), server.id, host, block_migration=False, disk_over_commit=False) \ @@ -314,18 +315,17 @@ class InstanceViewTest(test.BaseAdminViewTests): self.assertNoFormErrors(res) self.assertRedirectsNoFollow(res, INDEX_URL) - @test.create_stubs({api.nova: ('hypervisor_list', + @test.create_stubs({api.nova: ('host_list', 'server_get', 'server_live_migrate',)}) def test_instance_live_migrate_post_api_exception(self): server = self.servers.first() - hypervisor = self.hypervisors.first() - host = hypervisor.hypervisor_hostname + host = self.hosts.first().host_name api.nova.server_get(IsA(http.HttpRequest), server.id) \ .AndReturn(server) - api.nova.hypervisor_list(IsA(http.HttpRequest)) \ - .AndReturn(self.hypervisors.list()) + api.nova.host_list(IsA(http.HttpRequest)) \ + .AndReturn(self.hosts.list()) api.nova.server_live_migrate(IsA(http.HttpRequest), server.id, host, block_migration=False, disk_over_commit=False) \ diff --git a/openstack_dashboard/dashboards/admin/instances/views.py b/openstack_dashboard/dashboards/admin/instances/views.py index 54f41ce1b..4d2358d7e 100644 --- a/openstack_dashboard/dashboards/admin/instances/views.py +++ b/openstack_dashboard/dashboards/admin/instances/views.py @@ -143,10 +143,10 @@ class LiveMigrateView(forms.ModalFormView): @memoized.memoized_method def get_hosts(self, *args, **kwargs): try: - return api.nova.hypervisor_list(self.request) + return api.nova.host_list(self.request) except Exception: redirect = reverse("horizon:admin:instances:index") - msg = _('Unable to retrieve hypervisor information.') + msg = _('Unable to retrieve host information.') exceptions.handle(self.request, msg, redirect=redirect) @memoized.memoized_method diff --git a/openstack_dashboard/test/test_data/nova_data.py b/openstack_dashboard/test/test_data/nova_data.py index 56cd6987b..26206e154 100644 --- a/openstack_dashboard/test/test_data/nova_data.py +++ b/openstack_dashboard/test/test_data/nova_data.py @@ -730,6 +730,16 @@ def data(TEST): "zone": "testing" } ) + + host4 = hosts.Host(hosts.HostManager(None), + { + "host_name": "devstack004", + "service": "compute", + "zone": "testing", + } + ) + TEST.hosts.add(host1) TEST.hosts.add(host2) TEST.hosts.add(host3) + TEST.hosts.add(host4) |