Skip to content

Commit 82fc7a6

Browse files
authored
Added filtering logic to send filtered fields from DB event (sonic-net#307)
Signed-off-by: Mihir Patel <[email protected]> Signed-off-by: Mihir Patel <[email protected]>
1 parent 8a2dad9 commit 82fc7a6

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

sonic-xcvrd/xcvrd/xcvrd_utilities/port_mapping.py

+8-5
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,12 @@ def subscribe_port_update_event(namespaces, logger):
134134
port_tbl, list(d.values())[0], namespace))
135135
return sel, asic_context
136136

137+
def apply_filter_to_fvp(filter, fvp):
138+
if filter is not None:
139+
for key in fvp.copy().keys():
140+
if key not in (set(filter) | set({'index', 'key', 'asic_id', 'op'})):
141+
del fvp[key]
142+
137143
def handle_port_update_event(sel, asic_context, stop_event, logger, port_change_event_handler):
138144
"""
139145
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_
175181
diff = {}
176182
filter = fvp['FILTER']
177183
del fvp['FILTER']
184+
apply_filter_to_fvp(filter, fvp)
185+
178186
if key in PortChangeEvent.PORT_EVENT:
179187
diff = dict(set(fvp.items()) - set(PortChangeEvent.PORT_EVENT[key].items()))
180188
# Ignore duplicate events
181189
if not diff:
182190
PortChangeEvent.PORT_EVENT[key] = fvp
183191
continue
184-
# Ensure only interested field update gets through for processing
185-
if filter is not None:
186-
if not (set(filter) & set(diff.keys())):
187-
PortChangeEvent.PORT_EVENT[key] = fvp
188-
continue
189192
PortChangeEvent.PORT_EVENT[key] = fvp
190193

191194
if fvp['op'] == swsscommon.SET_COMMAND:

0 commit comments

Comments
 (0)