From 5ace4fdf97f8939b32e2e09ec9cb8bbdca877dff Mon Sep 17 00:00:00 2001 From: Wilhelm Schonfeldt Date: Fri, 26 Sep 2025 12:45:10 +0200 Subject: [PATCH] fix(plugins): improve type checking for structured output - Split type checking into two separate conditions for clarity - Add early return when output contains non-string objects - Ensure structured output like MikrotikBGPRouteTable passes through unchanged - Prevent AttributeError on .strip() for tuple containing structured data Resolves remaining crashes when processing already-structured BGP route data. --- hyperglass/plugins/_builtin/mikrotik_garbage_output.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/hyperglass/plugins/_builtin/mikrotik_garbage_output.py b/hyperglass/plugins/_builtin/mikrotik_garbage_output.py index 447dd50..492c730 100644 --- a/hyperglass/plugins/_builtin/mikrotik_garbage_output.py +++ b/hyperglass/plugins/_builtin/mikrotik_garbage_output.py @@ -99,13 +99,17 @@ class MikrotikGarbageOutput(OutputPlugin): """ # If output is already processed/structured (not raw strings), pass it through unchanged - if not isinstance(output, (tuple, list)) or (output and not isinstance(output[0], str)): + if not isinstance(output, (tuple, list)): + return output + + # Check if the tuple/list contains non-string objects (structured data) + if output and not isinstance(output[0], str): return output cleaned_outputs = [] for raw_output in output: - # Handle non-string outputs (already processed by other plugins) + # Handle non-string outputs (already processed by other plugins) - double check if not isinstance(raw_output, str): cleaned_outputs.append(raw_output) continue