From 82fc7a6f858f2c0bb8abf0263c8002d77e91cf6a Mon Sep 17 00:00:00 2001 From: mihirpat1 <112018033+mihirpat1@users.noreply.github.com> Date: Thu, 27 Oct 2022 16:56:03 -0700 Subject: [PATCH] Added filtering logic to send filtered fields from DB event (#307) Signed-off-by: Mihir Patel Signed-off-by: Mihir Patel --- sonic-xcvrd/xcvrd/xcvrd_utilities/port_mapping.py | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/sonic-xcvrd/xcvrd/xcvrd_utilities/port_mapping.py b/sonic-xcvrd/xcvrd/xcvrd_utilities/port_mapping.py index fe8f04cdafe3..1cc1b9f8e1e4 100644 --- a/sonic-xcvrd/xcvrd/xcvrd_utilities/port_mapping.py +++ b/sonic-xcvrd/xcvrd/xcvrd_utilities/port_mapping.py @@ -134,6 +134,12 @@ def subscribe_port_update_event(namespaces, logger): port_tbl, list(d.values())[0], namespace)) return sel, asic_context +def apply_filter_to_fvp(filter, fvp): + if filter is not None: + for key in fvp.copy().keys(): + if key not in (set(filter) | set({'index', 'key', 'asic_id', 'op'})): + del fvp[key] + def handle_port_update_event(sel, asic_context, stop_event, logger, port_change_event_handler): """ Select PORT update events, notify the observers upon a port update in CONFIG_DB @@ -175,17 +181,14 @@ def handle_port_update_event(sel, asic_context, stop_event, logger, port_change_ diff = {} filter = fvp['FILTER'] del fvp['FILTER'] + apply_filter_to_fvp(filter, fvp) + if key in PortChangeEvent.PORT_EVENT: diff = dict(set(fvp.items()) - set(PortChangeEvent.PORT_EVENT[key].items())) # Ignore duplicate events if not diff: PortChangeEvent.PORT_EVENT[key] = fvp continue - # Ensure only interested field update gets through for processing - if filter is not None: - if not (set(filter) & set(diff.keys())): - PortChangeEvent.PORT_EVENT[key] = fvp - continue PortChangeEvent.PORT_EVENT[key] = fvp if fvp['op'] == swsscommon.SET_COMMAND: