From f26eed91826c4b51e6a259f3e96b305b725fd411 Mon Sep 17 00:00:00 2001 From: snehal tembhurne Date: Thu, 21 Apr 2022 19:07:24 -0700 Subject: [PATCH] Populate network mtu for erspan Change-Id: Ic4753ba768080149b54f391c44185ec27e006044 --- .../drivers/apic_aim/mechanism_driver.py | 19 +++++++++++++++++++ .../unit/plugins/ml2plus/test_apic_aim.py | 8 ++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/gbpservice/neutron/plugins/ml2plus/drivers/apic_aim/mechanism_driver.py b/gbpservice/neutron/plugins/ml2plus/drivers/apic_aim/mechanism_driver.py index 5df33d63f..0dfbb2e91 100644 --- a/gbpservice/neutron/plugins/ml2plus/drivers/apic_aim/mechanism_driver.py +++ b/gbpservice/neutron/plugins/ml2plus/drivers/apic_aim/mechanism_driver.py @@ -1287,6 +1287,8 @@ class ApicMechanismDriver(api_plus.MechanismDriver, cep_dn = self._map_port(session, port_db) resources = self._get_erspan_aim_resources_list(port_db, cep_dn) if resources: + self.update_summary_resource(session, resources, + port_db['network_id']) aim_resources.extend(resources) binding = (port_db.port_bindings[0] if port_db.port_bindings else None) @@ -2793,6 +2795,18 @@ class ApicMechanismDriver(api_plus.MechanismDriver, port['id'], cep_dn, erspan_config)) return resources + def update_summary_resource(self, session, resources, network_id): + for resource in resources: + if type(resource) == aim_resource.SpanVepgSummary: + with session.begin(subtransactions=True): + query = BAKERY(lambda s: s.query( + models_v2.Network)) + query += lambda q: q.filter_by( + id=network_id) + net = query(session).params().first() + if net: + resource.mtu = net.mtu + def _get_acc_bundle_for_host(self, aim_ctx, host_name): if not host_name: return None @@ -2837,6 +2851,9 @@ class ApicMechanismDriver(api_plus.MechanismDriver, for erspan_config in port.get(cisco_apic.ERSPAN_CONFIG, []): resources = self._get_erspan_aim_resources(port['id'], cep_dn, erspan_config) + if resources: + self.update_summary_resource(session, resources, + port['network_id']) # Create ERSPAN source group and source if not self.aim.get(aim_ctx, resources[0]): self.aim.create(aim_ctx, resources[0]) @@ -7228,6 +7245,8 @@ class ApicMechanismDriver(api_plus.MechanismDriver, cep_dn = self._map_port(mgr.actual_session, port_db) resources = self._get_erspan_aim_resources_list(port_db, cep_dn) + self.update_summary_resource(mgr.actual_session, resources, + port_db['network_id']) # Copy the bundle group pre-existing resources, if they # are monitored, from the actual AIM store to the validation # AIM store, so that the resource behaves as expected diff --git a/gbpservice/neutron/tests/unit/plugins/ml2plus/test_apic_aim.py b/gbpservice/neutron/tests/unit/plugins/ml2plus/test_apic_aim.py index 2fdebb481..1316c23a1 100644 --- a/gbpservice/neutron/tests/unit/plugins/ml2plus/test_apic_aim.py +++ b/gbpservice/neutron/tests/unit/plugins/ml2plus/test_apic_aim.py @@ -7777,7 +7777,7 @@ class TestExtensionAttributes(ApicAimTestCase): name=dest_name)], [aim_resource.SpanVepgSummary(vdg_name=dest_name, vd_name=dest_name, dst_ip='192.168.0.10', - flow_id='1023')]] + flow_id='1023', mtu=str(net['network']['mtu']))]] dest_resources.append([ aim_resource.InfraAccBundleGroup(name=host1_pg, span_vsource_group_names=[source_resources[0][0].name], @@ -7809,7 +7809,7 @@ class TestExtensionAttributes(ApicAimTestCase): name=dest_name)) dest_resources[2].append(aim_resource.SpanVepgSummary( vdg_name=dest_name, vd_name=dest_name, dst_ip='192.168.0.11', - flow_id='1022')) + flow_id='1022', mtu=str(net['network']['mtu']))) dest_resources[3] = [aim_resource.InfraAccBundleGroup( name=host1_pg, span_vsource_group_names=[res.name for res in source_resources[0]], @@ -7865,8 +7865,8 @@ class TestExtensionAttributes(ApicAimTestCase): [aim_resource.SpanVdest(vdg_name=dest_name, name=dest_name)], [aim_resource.SpanVepgSummary(vdg_name=dest_name, - vd_name=dest_name, dst_ip='192.168.0.10', - flow_id='1023')]] + vd_name=dest_name, dst_ip='192.168.0.10', flow_id='1023', + mtu=str(net['network']['mtu']))]] dest_resources.append([aim_resource.InfraAccBundleGroup( name=host1_pg, span_vsource_group_names=[res.name for res in source_resources[0]],