Merge "Fix duplicating <network_entity>_list() calls in api.network"
This commit is contained in:
commit
cd931258b4
|
@ -19,6 +19,7 @@ introduced to abstract the differences between them for seamless consumption by
|
|||
different dashboard implementations.
|
||||
"""
|
||||
|
||||
from horizon.utils.memoized import memoized
|
||||
from openstack_dashboard.api import base
|
||||
from openstack_dashboard.api import neutron
|
||||
|
||||
|
@ -49,6 +50,7 @@ def floating_ip_pools_list(request):
|
|||
return NetworkClient(request).floating_ips.list_pools()
|
||||
|
||||
|
||||
@memoized
|
||||
def tenant_floating_ip_list(request, all_tenants=False):
|
||||
return NetworkClient(request).floating_ips.list(all_tenants=all_tenants)
|
||||
|
||||
|
@ -99,6 +101,7 @@ def floating_ip_supported(request):
|
|||
return nwc.enabled and nwc.floating_ips.is_supported()
|
||||
|
||||
|
||||
@memoized
|
||||
def security_group_list(request):
|
||||
return NetworkClient(request).secgroups.list()
|
||||
|
||||
|
|
|
@ -616,7 +616,7 @@ def list_resources_with_long_filters(list_method,
|
|||
# We consider only the filter condition from (filter_attr,
|
||||
# filter_values) and do not consider other filter conditions
|
||||
# which may be specified in **params.
|
||||
if type(filter_values) != list:
|
||||
if not isinstance(filter_values, (list, tuple, set, frozenset)):
|
||||
filter_values = [filter_values]
|
||||
|
||||
# Length of each query filter is:
|
||||
|
@ -753,6 +753,7 @@ def network_delete(request, network_id):
|
|||
|
||||
|
||||
@profiler.trace
|
||||
@memoized
|
||||
def subnet_list(request, **params):
|
||||
LOG.debug("subnet_list(): params=%s", params)
|
||||
subnets = neutronclient(request).list_subnets(**params).get('subnets')
|
||||
|
@ -889,6 +890,7 @@ def subnetpool_delete(request, subnetpool_id):
|
|||
|
||||
|
||||
@profiler.trace
|
||||
@memoized
|
||||
def port_list(request, **params):
|
||||
LOG.debug("port_list(): params=%s", params)
|
||||
ports = neutronclient(request).list_ports(**params).get('ports')
|
||||
|
@ -1133,18 +1135,23 @@ def servers_update_addresses(request, servers, all_tenants=False):
|
|||
|
||||
# Get all (filtered for relevant servers) information from Neutron
|
||||
try:
|
||||
# NOTE(e0ne): we need tuple here to work with @memoized decorator.
|
||||
# @memoized works with hashable arguments only.
|
||||
ports = list_resources_with_long_filters(
|
||||
port_list, 'device_id', [instance.id for instance in servers],
|
||||
port_list, 'device_id',
|
||||
tuple([instance.id for instance in servers]),
|
||||
request=request)
|
||||
fips = FloatingIpManager(request)
|
||||
if fips.is_supported():
|
||||
floating_ips = list_resources_with_long_filters(
|
||||
fips.list, 'port_id', [port.id for port in ports],
|
||||
fips.list, 'port_id', tuple([port.id for port in ports]),
|
||||
all_tenants=all_tenants)
|
||||
else:
|
||||
floating_ips = []
|
||||
# NOTE(e0ne): we need frozenset here to work with @memoized decorator.
|
||||
# @memoized works with hashable arguments only
|
||||
networks = list_resources_with_long_filters(
|
||||
network_list, 'id', set([port.network_id for port in ports]),
|
||||
network_list, 'id', frozenset([port.network_id for port in ports]),
|
||||
request=request)
|
||||
except Exception as e:
|
||||
LOG.error('Unable to connect to Neutron: %s', e)
|
||||
|
|
|
@ -115,10 +115,10 @@ class NetworkApiNeutronTests(NetworkApiNeutronTestBase):
|
|||
tenant_id = self.request.user.tenant_id
|
||||
|
||||
servers = self.servers.list()
|
||||
server_ids = [server.id for server in servers]
|
||||
server_ids = tuple([server.id for server in servers])
|
||||
server_ports = [p for p in self.api_ports.list()
|
||||
if p['device_id'] in server_ids]
|
||||
server_port_ids = [p['id'] for p in server_ports]
|
||||
server_port_ids = tuple([p['id'] for p in server_ports])
|
||||
if router_enabled:
|
||||
assoc_fips = [fip for fip in self.api_floating_ips.list()
|
||||
if fip['port_id'] in server_port_ids]
|
||||
|
@ -134,7 +134,7 @@ class NetworkApiNeutronTests(NetworkApiNeutronTestBase):
|
|||
.AndReturn({'floatingips': assoc_fips})
|
||||
self.qclient.list_ports(tenant_id=tenant_id) \
|
||||
.AndReturn({'ports': self.api_ports.list()})
|
||||
self.qclient.list_networks(id=set(server_network_ids)) \
|
||||
self.qclient.list_networks(id=frozenset(server_network_ids)) \
|
||||
.AndReturn({'networks': server_networks})
|
||||
self.qclient.list_subnets() \
|
||||
.AndReturn({'subnets': self.api_subnets.list()})
|
||||
|
|
Loading…
Reference in New Issue