diff --git a/openstack_dashboard/dashboards/admin/instances/forms.py b/openstack_dashboard/dashboards/admin/instances/forms.py
index 1c0b724275..b13dce6d7c 100644
--- a/openstack_dashboard/dashboards/admin/instances/forms.py
+++ b/openstack_dashboard/dashboards/admin/instances/forms.py
@@ -53,7 +53,7 @@ class LiveMigrateForm(forms.SelfHandlingForm):
host_list = [(host.hypervisor_hostname,
host.hypervisor_hostname)
for host in hosts
- if host.hypervisor_hostname != current_host]
+ if host.service['host'] != 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 3b25ed9aa0..abb98af84c 100644
--- a/openstack_dashboard/dashboards/admin/instances/tests.py
+++ b/openstack_dashboard/dashboards/admin/instances/tests.py
@@ -268,6 +268,27 @@ class InstanceViewTest(test.BaseAdminViewTests):
self.assertRedirectsNoFollow(res, INDEX_URL)
+ @test.create_stubs({api.nova: ('hypervisor_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())
+
+ self.mox.ReplayAll()
+
+ url = reverse('horizon:admin:instances:live_migrate',
+ args=[server.id])
+ res = self.client.get(url)
+ self.assertNotContains(
+ res, "")
+ self.assertContains(
+ res, "")
+ self.assertContains(
+ res, "")
+
@test.create_stubs({api.nova: ('hypervisor_list',
'server_get',
'server_live_migrate',)})
diff --git a/openstack_dashboard/test/test_data/nova_data.py b/openstack_dashboard/test/test_data/nova_data.py
index e15b28876d..ee70ab3ada 100644
--- a/openstack_dashboard/test/test_data/nova_data.py
+++ b/openstack_dashboard/test/test_data/nova_data.py
@@ -566,7 +566,58 @@ def data(TEST):
"id": 1
}
)
+
+ hypervisor_2 = hypervisors.Hypervisor(hypervisors.HypervisorManager(None),
+ {
+ "service": {"host": "devstack002", "id": 4},
+ "vcpus_used": 1,
+ "hypervisor_type": "QEMU",
+ "local_gb_used": 20,
+ "hypervisor_hostname": "devstack002",
+ "memory_mb_used": 1500,
+ "memory_mb": 2000,
+ "current_workload": 0,
+ "vcpus": 1,
+ "cpu_info": '{"vendor": "Intel", "model": "core2duo",'
+ '"arch": "x86_64", "features": ["lahf_lm"'
+ ', "rdtscp"], "topology": {"cores": 1, "t'
+ 'hreads": 1, "sockets": 1}}',
+ "running_vms": 1,
+ "free_disk_gb": 9,
+ "hypervisor_version": 1002000,
+ "disk_available_least": 6,
+ "local_gb": 29,
+ "free_ram_mb": 500,
+ "id": 2
+ }
+ )
+ hypervisor_3 = hypervisors.Hypervisor(hypervisors.HypervisorManager(None),
+ {
+ "service": {"host": "instance-host", "id": 5},
+ "vcpus_used": 1,
+ "hypervisor_type": "QEMU",
+ "local_gb_used": 20,
+ "hypervisor_hostname": "devstack003",
+ "memory_mb_used": 1500,
+ "memory_mb": 2000,
+ "current_workload": 0,
+ "vcpus": 1,
+ "cpu_info": '{"vendor": "Intel", "model": "core2duo",'
+ '"arch": "x86_64", "features": ["lahf_lm"'
+ ', "rdtscp"], "topology": {"cores": 1, "t'
+ 'hreads": 1, "sockets": 1}}',
+ "running_vms": 1,
+ "free_disk_gb": 9,
+ "hypervisor_version": 1002000,
+ "disk_available_least": 6,
+ "local_gb": 29,
+ "free_ram_mb": 500,
+ "id": 3
+ }
+ )
TEST.hypervisors.add(hypervisor_1)
+ TEST.hypervisors.add(hypervisor_2)
+ TEST.hypervisors.add(hypervisor_3)
TEST.hypervisors.stats = {
"hypervisor_statistics": {