[apic-mapping] notify all ports in a cluster
Change-Id: I5fa5daf76db600230d5ac2d9a39bbeafe87b4d30
This commit is contained in:
parent
0696748490
commit
8a28222094
@ -2454,6 +2454,16 @@ class ApicMappingDriver(api.ResourceMappingDriver,
|
||||
pointing_pts = self.gbp_plugin.get_policy_targets(
|
||||
plugin_context.elevated(),
|
||||
{'description': [PROXY_PORT_PREFIX + port_id]})
|
||||
pt = self._port_id_to_pt(plugin_context, port_id)
|
||||
if pt:
|
||||
# Notify ports in cluster
|
||||
cluster_ids = [pt['id']]
|
||||
if pt.get('cluster_id') and pt.get('cluster_id') != pt['id']:
|
||||
cluster_ids.append(pt.get('cluster_id'))
|
||||
pointing_pts.extend(
|
||||
self.gbp_plugin.get_policy_targets(
|
||||
plugin_context.elevated(),
|
||||
{'cluster_id': cluster_ids}))
|
||||
ports = self._get_ports(
|
||||
plugin_context, {'id': [port_id] +
|
||||
[x['port_id'] for x in pointing_pts]})
|
||||
|
@ -1176,6 +1176,27 @@ class TestPolicyTarget(ApicMappingTestCase):
|
||||
self.update_policy_target_group(
|
||||
ptg['id'], description='opflex_eoc:', expected_res_status=400)
|
||||
|
||||
def test_cluster_id_notify(self):
|
||||
ptg = self.create_policy_target_group(
|
||||
name="ptg1")['policy_target_group']
|
||||
pt1 = self.create_policy_target(
|
||||
policy_target_group_id=ptg['id'])['policy_target']
|
||||
# Same cluster
|
||||
pt2 = self.create_policy_target(
|
||||
policy_target_group_id=ptg['id'],
|
||||
cluster_id=pt1['id'])['policy_target']
|
||||
self.create_policy_target(
|
||||
name='pt3', policy_target_group_id=ptg['id'], cluster_id=pt1['id'])
|
||||
self._bind_port_to_host(pt2['port_id'], 'h1')
|
||||
port = self.driver._get_port(context.get_admin_context(),
|
||||
pt2['port_id'])
|
||||
self.driver.notifier.port_update = mock.Mock()
|
||||
self.driver._notify_port_update(context.get_admin_context(),
|
||||
pt1['port_id'])
|
||||
self.driver.notifier.port_update.assert_called_once_with(mock.ANY,
|
||||
port)
|
||||
# The above guarantees that pt3 wasn't notified
|
||||
|
||||
|
||||
class TestPolicyTargetVlanNetwork(ApicMappingVlanTestCase,
|
||||
TestPolicyTarget):
|
||||
|
Loading…
x
Reference in New Issue
Block a user