Merge "Non-api filters not working with admin instance tab"
This commit is contained in:
commit
ff1af2f1a4
|
@ -108,6 +108,12 @@ class AdminIndexView(tables.PagedTableMixin, tables.DataTableView):
|
||||||
exceptions.handle(self.request, ignore=True)
|
exceptions.handle(self.request, ignore=True)
|
||||||
return {}
|
return {}
|
||||||
|
|
||||||
|
def _get_images_by_name(self, image_name):
|
||||||
|
result = api.glance.image_list_detailed(
|
||||||
|
self.request, filters={'name': image_name})
|
||||||
|
images = result[0]
|
||||||
|
return dict((image.id, image) for image in images)
|
||||||
|
|
||||||
def _get_flavors(self):
|
def _get_flavors(self):
|
||||||
# Gather our flavors to correlate against IDs
|
# Gather our flavors to correlate against IDs
|
||||||
try:
|
try:
|
||||||
|
@ -151,22 +157,32 @@ class AdminIndexView(tables.PagedTableMixin, tables.DataTableView):
|
||||||
|
|
||||||
self._needs_filter_first = False
|
self._needs_filter_first = False
|
||||||
|
|
||||||
instances = self._get_instances(search_opts, sort_dir)
|
|
||||||
results = futurist_utils.call_functions_parallel(
|
results = futurist_utils.call_functions_parallel(
|
||||||
(self._get_images, [tuple(instances)]),
|
|
||||||
self._get_flavors,
|
self._get_flavors,
|
||||||
self._get_tenants)
|
self._get_tenants)
|
||||||
image_dict, flavor_dict, tenant_dict = results
|
flavor_dict, tenant_dict = results
|
||||||
|
|
||||||
non_api_filter_info = (
|
non_api_filter_info = [
|
||||||
('project', 'tenant_id', tenant_dict.values()),
|
('project', 'tenant_id', tenant_dict.values()),
|
||||||
('image_name', 'image', image_dict.values()),
|
|
||||||
('flavor_name', 'flavor', flavor_dict.values()),
|
('flavor_name', 'flavor', flavor_dict.values()),
|
||||||
)
|
]
|
||||||
|
|
||||||
|
filter_by_image_name = 'image_name' in search_opts
|
||||||
|
if filter_by_image_name:
|
||||||
|
image_dict = self._get_images_by_name(search_opts['image_name'])
|
||||||
|
non_api_filter_info.append(
|
||||||
|
('image_name', 'image', image_dict.values())
|
||||||
|
)
|
||||||
|
|
||||||
if not views.process_non_api_filters(search_opts, non_api_filter_info):
|
if not views.process_non_api_filters(search_opts, non_api_filter_info):
|
||||||
self._more = False
|
self._more = False
|
||||||
return []
|
return []
|
||||||
|
|
||||||
|
instances = self._get_instances(search_opts, sort_dir)
|
||||||
|
|
||||||
|
if not filter_by_image_name:
|
||||||
|
image_dict = self._get_images(tuple(instances))
|
||||||
|
|
||||||
# Loop through instances to get image, flavor and tenant info.
|
# Loop through instances to get image, flavor and tenant info.
|
||||||
for inst in instances:
|
for inst in instances:
|
||||||
if hasattr(inst, 'image') and isinstance(inst.image, dict):
|
if hasattr(inst, 'image') and isinstance(inst.image, dict):
|
||||||
|
|
Loading…
Reference in New Issue