Merge "Optimization for find_ls_for_lr"
This commit is contained in:
commit
fa4d500f69
|
@ -711,20 +711,14 @@ class OvnProviderHelper():
|
|||
return self._add_lb_to_lr_association(ovn_lb, ovn_lr, lr_ref)
|
||||
|
||||
def _find_ls_for_lr(self, router):
|
||||
neutron_client = clients.get_neutron_client()
|
||||
ls = []
|
||||
for port in router.ports:
|
||||
if port.gateway_chassis:
|
||||
continue
|
||||
sids = port.external_ids.get(
|
||||
ovn_const.OVN_SUBNET_EXT_IDS_KEY, '').split(' ')
|
||||
for sid in sids:
|
||||
try:
|
||||
subnet = neutron_client.show_subnet(sid)
|
||||
ls.append(utils.ovn_name(subnet['subnet']['network_id']))
|
||||
except n_exc.NotFound:
|
||||
LOG.exception('Subnet %s not found while trying to '
|
||||
'fetch its data.', sid)
|
||||
port_network_name = port.external_ids.get(
|
||||
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY)
|
||||
if port_network_name:
|
||||
ls.append(utils.ovn_name(port_network_name))
|
||||
return ls
|
||||
|
||||
def _find_lr_of_ls(self, ovn_ls, subnet_gateway_ip=None):
|
||||
|
|
|
@ -2189,51 +2189,38 @@ class TestOvnProviderHelper(ovn_base.TestOvnOctaviaBase):
|
|||
for lb in self.network.load_balancer:
|
||||
self.assertNotIn(lb, net_lb)
|
||||
|
||||
@mock.patch('ovn_octavia_provider.common.clients.get_neutron_client')
|
||||
def test__find_ls_for_lr(self, net_cli):
|
||||
fake_subnet1 = fakes.FakeSubnet.create_one_subnet()
|
||||
fake_subnet1['network_id'] = 'foo1'
|
||||
fake_subnet2 = fakes.FakeSubnet.create_one_subnet()
|
||||
fake_subnet2['network_id'] = 'foo2'
|
||||
net_cli.return_value.show_subnet.side_effect = [
|
||||
{'subnet': fake_subnet1},
|
||||
{'subnet': fake_subnet2}]
|
||||
def test__find_ls_for_lr(self):
|
||||
p1 = fakes.FakeOVNPort.create_one_port(attrs={
|
||||
'gateway_chassis': [],
|
||||
'external_ids': {
|
||||
ovn_const.OVN_SUBNET_EXT_IDS_KEY:
|
||||
'%s %s' % (fake_subnet1.id,
|
||||
fake_subnet2.id)}})
|
||||
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}})
|
||||
p2 = fakes.FakeOVNPort.create_one_port(attrs={
|
||||
'gateway_chassis': [],
|
||||
'external_ids': {
|
||||
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo2'}})
|
||||
self.router.ports.append(p1)
|
||||
self.router.ports.append(p2)
|
||||
res = self.helper._find_ls_for_lr(self.router)
|
||||
self.assertListEqual(['neutron-foo1', 'neutron-foo2'],
|
||||
res)
|
||||
self.assertListEqual(['neutron-foo1', 'neutron-foo2'], res)
|
||||
|
||||
@mock.patch('ovn_octavia_provider.common.clients.get_neutron_client')
|
||||
def test__find_ls_for_lr_subnet_not_found(self, net_cli):
|
||||
fake_subnet1 = fakes.FakeSubnet.create_one_subnet()
|
||||
fake_subnet1['network_id'] = 'foo1'
|
||||
fake_subnet2 = fakes.FakeSubnet.create_one_subnet()
|
||||
fake_subnet2['network_id'] = 'foo2'
|
||||
net_cli.return_value.show_subnet.side_effect = [
|
||||
{'subnet': fake_subnet1},
|
||||
n_exc.NotFound]
|
||||
def test__find_ls_for_lr_net_not_found(self):
|
||||
p1 = fakes.FakeOVNPort.create_one_port(attrs={
|
||||
'gateway_chassis': [],
|
||||
'external_ids': {
|
||||
ovn_const.OVN_SUBNET_EXT_IDS_KEY:
|
||||
'%s %s' % (fake_subnet1.id,
|
||||
fake_subnet2.id)}})
|
||||
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}})
|
||||
p2 = fakes.FakeOVNPort.create_one_port(attrs={
|
||||
'gateway_chassis': [],
|
||||
'external_ids': {}})
|
||||
self.router.ports.append(p2)
|
||||
self.router.ports.append(p1)
|
||||
res = self.helper._find_ls_for_lr(self.router)
|
||||
self.assertListEqual(['neutron-foo1'], res)
|
||||
|
||||
@mock.patch('ovn_octavia_provider.common.clients.get_neutron_client')
|
||||
def test__find_ls_for_lr_gw_port(self, net_cli):
|
||||
def test__find_ls_for_lr_gw_port(self):
|
||||
p1 = fakes.FakeOVNPort.create_one_port(attrs={
|
||||
'gateway_chassis': ['foo-gw-chassis'],
|
||||
'external_ids': {
|
||||
ovn_const.OVN_SUBNET_EXT_IDS_KEY: self.member_subnet_id}})
|
||||
ovn_const.OVN_NETWORK_NAME_EXT_ID_KEY: 'foo1'}})
|
||||
self.router.ports.append(p1)
|
||||
result = self.helper._find_ls_for_lr(self.router)
|
||||
self.assertListEqual([], result)
|
||||
|
|
Loading…
Reference in New Issue