Merge "Get all needed instances for volumes attachments at Admin->Volumes"

This commit is contained in:
Jenkins 2017-09-05 11:53:52 +00:00 committed by Gerrit Code Review
commit 5428b96c2c
6 changed files with 34 additions and 29 deletions

View File

@ -507,7 +507,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
@ -518,10 +518,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)]

View File

@ -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])

View File

@ -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,

View File

@ -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)

View File

@ -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

View File

@ -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))