Merge "Show ports from shared nets in floating IP assoc"
This commit is contained in:
commit
a701edf2b8
@ -429,7 +429,11 @@ class FloatingIpManager(network_base.FloatingIpManager):
|
|||||||
if ((p.device_owner in
|
if ((p.device_owner in
|
||||||
ROUTER_INTERFACE_OWNERS)
|
ROUTER_INTERFACE_OWNERS)
|
||||||
and (p.device_id in gw_routers))])
|
and (p.device_id in gw_routers))])
|
||||||
return reachable_subnets
|
# we have to include any shared subnets as well because we may not
|
||||||
|
# have permission to see the router interface to infer connectivity
|
||||||
|
shared = set([s.id for n in network_list(self.request, shared=True)
|
||||||
|
for s in n.subnets])
|
||||||
|
return reachable_subnets | shared
|
||||||
|
|
||||||
def list_targets(self):
|
def list_targets(self):
|
||||||
tenant_id = self.request.user.tenant_id
|
tenant_id = self.request.user.tenant_id
|
||||||
|
@ -688,17 +688,23 @@ class NetworkApiNeutronFloatingIpTests(NetworkApiNeutronTestBase):
|
|||||||
'addr': port['fixed_ips'][0]['ip_address']}
|
'addr': port['fixed_ips'][0]['ip_address']}
|
||||||
return 'server_%(svrid)s: %(addr)s' % param
|
return 'server_%(svrid)s: %(addr)s' % param
|
||||||
|
|
||||||
|
def _subs_from_port(self, port):
|
||||||
|
return [ip['subnet_id'] for ip in port['fixed_ips']]
|
||||||
|
|
||||||
@override_settings(OPENSTACK_NEUTRON_NETWORK={'enable_lb': True})
|
@override_settings(OPENSTACK_NEUTRON_NETWORK={'enable_lb': True})
|
||||||
def test_floating_ip_target_list(self):
|
def test_floating_ip_target_list(self):
|
||||||
ports = self.api_ports.list()
|
ports = self.api_ports.list()
|
||||||
# Port on the first subnet is connected to a router
|
# Port on the first subnet is connected to a router
|
||||||
# attached to external network in neutron_data.
|
# attached to external network in neutron_data.
|
||||||
subnet_id = self.subnets.first().id
|
subnet_id = self.subnets.first().id
|
||||||
target_ports = [(self._get_target_id(p),
|
shared_nets = [n for n in self.api_networks.list() if n['shared']]
|
||||||
self._get_target_name(p)) for p in ports
|
shared_subnet_ids = [s for n in shared_nets for s in n['subnets']]
|
||||||
if (not p['device_owner'].startswith('network:') and
|
target_ports = [
|
||||||
subnet_id in [ip['subnet_id']
|
(self._get_target_id(p), self._get_target_name(p)) for p in ports
|
||||||
for ip in p['fixed_ips']])]
|
if (not p['device_owner'].startswith('network:') and
|
||||||
|
(subnet_id in self._subs_from_port(p) or
|
||||||
|
(set(shared_subnet_ids) & set(self._subs_from_port(p)))))
|
||||||
|
]
|
||||||
filters = {'tenant_id': self.request.user.tenant_id}
|
filters = {'tenant_id': self.request.user.tenant_id}
|
||||||
self.qclient.list_ports(**filters).AndReturn({'ports': ports})
|
self.qclient.list_ports(**filters).AndReturn({'ports': ports})
|
||||||
servers = self.servers.list()
|
servers = self.servers.list()
|
||||||
@ -714,7 +720,11 @@ class NetworkApiNeutronFloatingIpTests(NetworkApiNeutronTestBase):
|
|||||||
.AndReturn({'networks': ext_nets})
|
.AndReturn({'networks': ext_nets})
|
||||||
self.qclient.list_routers().AndReturn({'routers':
|
self.qclient.list_routers().AndReturn({'routers':
|
||||||
self.api_routers.list()})
|
self.api_routers.list()})
|
||||||
|
self.qclient.list_networks(shared=True).AndReturn({'networks':
|
||||||
|
shared_nets})
|
||||||
|
shared_subs = [s for s in self.api_subnets.list()
|
||||||
|
if s['id'] in shared_subnet_ids]
|
||||||
|
self.qclient.list_subnets().AndReturn({'subnets': shared_subs})
|
||||||
self.qclient.list_vips().AndReturn({'vips': self.vips.list()})
|
self.qclient.list_vips().AndReturn({'vips': self.vips.list()})
|
||||||
|
|
||||||
self.mox.ReplayAll()
|
self.mox.ReplayAll()
|
||||||
|
Loading…
Reference in New Issue
Block a user