diff --git a/openstack_dashboard/api/nova.py b/openstack_dashboard/api/nova.py index 56652a2e7e..c29046b685 100644 --- a/openstack_dashboard/api/nova.py +++ b/openstack_dashboard/api/nova.py @@ -505,7 +505,7 @@ def server_get(request, instance_id): @profiler.trace -def server_list(request, search_opts=None, all_tenants=False, detailed=True): +def server_list(request, search_opts=None, detailed=True): nova_client = get_novaclient_with_locked_status(request) page_size = utils.get_page_size(request) paginate = False @@ -516,10 +516,12 @@ def server_list(request, search_opts=None, all_tenants=False, detailed=True): if paginate: search_opts['limit'] = page_size + 1 + all_tenants = search_opts.get('all_tenants', False) if all_tenants: search_opts['all_tenants'] = True else: search_opts['project_id'] = request.user.tenant_id + servers = [Server(s, request) for s in nova_client.servers.list(detailed, search_opts)] diff --git a/openstack_dashboard/dashboards/admin/floating_ips/tests.py b/openstack_dashboard/dashboards/admin/floating_ips/tests.py index fb6961e396..10c0a3d1ae 100644 --- a/openstack_dashboard/dashboards/admin/floating_ips/tests.py +++ b/openstack_dashboard/dashboards/admin/floating_ips/tests.py @@ -36,7 +36,7 @@ class AdminFloatingIpViewTest(test.BaseAdminViewTests): tenants = self.tenants.list() api.neutron.tenant_floating_ip_list(IsA(http.HttpRequest), all_tenants=True).AndReturn(fips) - api.nova.server_list(IsA(http.HttpRequest), all_tenants=True) \ + api.nova.server_list(IsA(http.HttpRequest), search_opts={'all_tenants': True}) \ .AndReturn([servers, False]) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) @@ -196,7 +196,7 @@ class AdminFloatingIpViewTest(test.BaseAdminViewTests): tenants = self.tenants.list() api.neutron.tenant_floating_ip_list(IsA(http.HttpRequest), all_tenants=True).AndReturn(fips) - api.nova.server_list(IsA(http.HttpRequest), all_tenants=True) \ + api.nova.server_list(IsA(http.HttpRequest), search_opts={'all_tenants': True}) \ .AndReturn([servers, False]) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) @@ -226,7 +226,7 @@ class AdminFloatingIpViewTest(test.BaseAdminViewTests): tenants = self.tenants.list() api.neutron.tenant_floating_ip_list(IsA(http.HttpRequest), all_tenants=True).AndReturn(fips) - api.nova.server_list(IsA(http.HttpRequest), all_tenants=True) \ + api.nova.server_list(IsA(http.HttpRequest), search_opts={'all_tenants': True}) \ .AndReturn([servers, False]) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) @@ -254,7 +254,7 @@ class AdminFloatingIpViewTest(test.BaseAdminViewTests): tenants = self.tenants.list() api.neutron.tenant_floating_ip_list(IsA(http.HttpRequest), all_tenants=True).AndReturn(fips) - api.nova.server_list(IsA(http.HttpRequest), all_tenants=True) \ + api.nova.server_list(IsA(http.HttpRequest), search_opts={'all_tenants': True}) \ .AndReturn([servers, False]) api.keystone.tenant_list(IsA(http.HttpRequest))\ .AndReturn([tenants, False]) diff --git a/openstack_dashboard/dashboards/admin/floating_ips/views.py b/openstack_dashboard/dashboards/admin/floating_ips/views.py index 53df696c3d..766a592e27 100644 --- a/openstack_dashboard/dashboards/admin/floating_ips/views.py +++ b/openstack_dashboard/dashboards/admin/floating_ips/views.py @@ -75,9 +75,10 @@ class IndexView(tables.DataTableView): if floating_ips: instances = [] try: - instances, has_more = api.nova.server_list(self.request, - all_tenants=True, - detailed=False) + instances, has_more = api.nova.server_list( + self.request, + search_opts={'all_tenants': True}, + detailed=False) except Exception: exceptions.handle( self.request, diff --git a/openstack_dashboard/dashboards/admin/instances/tests.py b/openstack_dashboard/dashboards/admin/instances/tests.py index 53dc2b3902..211f81d89b 100644 --- a/openstack_dashboard/dashboards/admin/instances/tests.py +++ b/openstack_dashboard/dashboards/admin/instances/tests.py @@ -46,12 +46,12 @@ class InstanceViewTest(test.BaseAdminViewTests): .MultipleTimes().AndReturn(True) api.keystone.tenant_list(IsA(http.HttpRequest)).\ AndReturn([tenants, False]) - search_opts = {'marker': None, 'paginate': True} + search_opts = {'marker': None, 'paginate': True, 'all_tenants': True} api.glance.image_list_detailed(IsA(http.HttpRequest))\ .AndReturn(images) api.nova.flavor_list(IsA(http.HttpRequest)).AndReturn(flavors) api.nova.server_list(IsA(http.HttpRequest), - all_tenants=True, search_opts=search_opts) \ + search_opts=search_opts) \ .AndReturn([servers, False]) api.network.servers_update_addresses(IsA(http.HttpRequest), servers, all_tenants=True) @@ -74,9 +74,9 @@ class InstanceViewTest(test.BaseAdminViewTests): tenants = self.tenants.list() flavors = self.flavors.list() full_flavors = OrderedDict([(f.id, f) for f in flavors]) - search_opts = {'marker': None, 'paginate': True} + search_opts = {'marker': None, 'paginate': True, 'all_tenants': True} api.nova.server_list(IsA(http.HttpRequest), - all_tenants=True, search_opts=search_opts) \ + search_opts=search_opts) \ .AndReturn([servers, False]) api.network.servers_update_addresses(IsA(http.HttpRequest), servers, all_tenants=True) @@ -119,9 +119,9 @@ class InstanceViewTest(test.BaseAdminViewTests): api.glance.image_list_detailed(IsA(http.HttpRequest))\ .AndReturn(images) api.nova.flavor_list(IsA(http.HttpRequest)).AndReturn(flavors) - search_opts = {'marker': None, 'paginate': True} + search_opts = {'marker': None, 'paginate': True, 'all_tenants': True} api.nova.server_list(IsA(http.HttpRequest), - all_tenants=True, search_opts=search_opts) \ + search_opts=search_opts) \ .AndReturn([servers, False]) api.network.servers_update_addresses(IsA(http.HttpRequest), servers, all_tenants=True) @@ -153,9 +153,9 @@ class InstanceViewTest(test.BaseAdminViewTests): def test_index_server_list_exception(self): tenants = self.tenants.list() - search_opts = {'marker': None, 'paginate': True} + search_opts = {'marker': None, 'paginate': True, 'all_tenants': True} api.nova.server_list(IsA(http.HttpRequest), - all_tenants=True, search_opts=search_opts) \ + search_opts=search_opts) \ .AndRaise(self.exceptions.nova) api.keystone.tenant_list(IsA(http.HttpRequest)).\ AndReturn([tenants, False]) @@ -219,9 +219,9 @@ class InstanceViewTest(test.BaseAdminViewTests): api.glance.image_list_detailed(IsA(http.HttpRequest)) \ .AndReturn(images) api.nova.flavor_list(IsA(http.HttpRequest)).AndReturn(flavors) - search_opts = {'marker': None, 'paginate': True} + search_opts = {'marker': None, 'paginate': True, 'all_tenants': True} api.nova.server_list(IsA(http.HttpRequest), - all_tenants=True, search_opts=search_opts) \ + search_opts=search_opts) \ .AndReturn([servers, False]) api.network.servers_update_addresses(IsA(http.HttpRequest), servers, all_tenants=True) @@ -255,13 +255,13 @@ class InstanceViewTest(test.BaseAdminViewTests): api.glance.image_list_detailed(IsA(http.HttpRequest)) \ .AndReturn(images) api.nova.flavor_list(IsA(http.HttpRequest)).AndReturn(flavors) - search_opts = {'marker': None, 'paginate': True} + search_opts = {'marker': None, 'paginate': True, 'all_tenants': True} api.nova.extension_supported('AdminActions', IsA(http.HttpRequest)) \ .MultipleTimes().AndReturn(True) api.nova.extension_supported('Shelve', IsA(http.HttpRequest)) \ .MultipleTimes().AndReturn(True) api.nova.server_list(IsA(http.HttpRequest), - all_tenants=True, search_opts=search_opts) \ + search_opts=search_opts) \ .AndReturn([servers, False]) api.network.servers_update_addresses(IsA(http.HttpRequest), servers, all_tenants=True) diff --git a/openstack_dashboard/dashboards/admin/instances/views.py b/openstack_dashboard/dashboards/admin/instances/views.py index 8ca27852f3..c4ea11cb3d 100644 --- a/openstack_dashboard/dashboards/admin/instances/views.py +++ b/openstack_dashboard/dashboards/admin/instances/views.py @@ -91,7 +91,9 @@ class AdminIndexView(tables.DataTableView): marker = self.request.GET.get( project_tables.AdminInstancesTable._meta.pagination_param, None) - default_search_opts = {'marker': marker, 'paginate': True} + default_search_opts = {'marker': marker, + 'paginate': True, + 'all_tenants': True} search_opts = self.get_filters(default_search_opts.copy()) @@ -141,8 +143,7 @@ class AdminIndexView(tables.DataTableView): try: tmp_instances, self._more = api.nova.server_list( self.request, - search_opts=search_opts, - all_tenants=True) + search_opts=search_opts) instances.extend(tmp_instances) except Exception: self._more = False diff --git a/openstack_dashboard/test/api_tests/nova_tests.py b/openstack_dashboard/test/api_tests/nova_tests.py index 1c5eefa7dc..6043dae03e 100644 --- a/openstack_dashboard/test/api_tests/nova_tests.py +++ b/openstack_dashboard/test/api_tests/nova_tests.py @@ -146,8 +146,9 @@ class ComputeApiTests(test.APITestCase): novaclient.servers.list(True, {'all_tenants': True}).AndReturn(servers) self.mox.ReplayAll() - ret_val, has_more = api.nova.server_list(self.request, - all_tenants=True) + ret_val, has_more = api.nova.server_list( + self.request, + search_opts={'all_tenants': True}) for server in ret_val: self.assertIsInstance(server, api.nova.Server) @@ -166,8 +167,8 @@ class ComputeApiTests(test.APITestCase): ret_val, has_more = api.nova.server_list(self.request, {'marker': None, - 'paginate': True}, - all_tenants=True) + 'paginate': True, + 'all_tenants': True}) for server in ret_val: self.assertIsInstance(server, api.nova.Server) self.assertFalse(has_more) @@ -189,8 +190,8 @@ class ComputeApiTests(test.APITestCase): ret_val, has_more = api.nova.server_list(self.request, {'marker': None, - 'paginate': True}, - all_tenants=True) + 'paginate': True, + 'all_tenants': True}) for server in ret_val: self.assertIsInstance(server, api.nova.Server) self.assertEqual(page_size, len(ret_val))