From 6eeeaeac05c537d281ce10e9d26ca40c564b52b0 Mon Sep 17 00:00:00 2001 From: weliasz Date: Thu, 4 Nov 2021 11:16:14 +0100 Subject: [PATCH 1/4] fix: suffix parsing --- .../translator.py | 30 +++++++++++++++++-- tests/local-config.yaml | 5 +--- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/splunk_connect_for_snmp_mib_server/translator.py b/splunk_connect_for_snmp_mib_server/translator.py index 21e7656e..1c8d040a 100644 --- a/splunk_connect_for_snmp_mib_server/translator.py +++ b/splunk_connect_for_snmp_mib_server/translator.py @@ -220,7 +220,29 @@ def mib_translator(self, var_bind): else: return None - return translated_var_bind.prettyPrint().replace(" = ", "=") + index_result = self.parse_index(translated_var_bind) + return translated_var_bind.prettyPrint().replace(" = ", "="), index_result + + def parse_index(self, translated_var_bind): + object_identity, object_value = translated_var_bind + index_tuple = object_identity.getMibSymbol()[2] + family = object_identity.getMibSymbol()[0] + label_index = -1 + label = object_identity.getLabel()[label_index] + index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get(label) + index_result = dict() + + while abs(label_index) < len(object_identity.getLabel()) and type(index_row).__name__ == 'MibTableColumn': + label_index = label_index - 1 + label = object_identity.getLabel()[label_index] + index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get(label) + + if index_row and type(index_row).__name__ == 'MibTableRow': + index_tuple = [v.prettyPrint() for v in index_tuple] + index_names = [v[2] for v in index_row.getIndexNames()] + index_result = dict(zip(index_names, index_tuple)) + + return index_result # Translate SNMP PDU varBinds into MIB objects using custom translation table def custom_translator(self, oid): @@ -270,7 +292,7 @@ def format_text_event(self, var_binds: list): oid_type_string = 'oid-type{offset}="{oid_type}"'.format( offset=offset, oid_type=name_type ) - translated_mib_string = self.mib_translator(var_bind) + translated_mib_string, parsed_index = self.mib_translator(var_bind) if translated_mib_string: translated_mib_string = '{translated_oid}="{translated_value}"'.format( translated_oid=translated_mib_string.split("=")[0], @@ -329,7 +351,7 @@ def format_metric_data(self, var_bind, index=0): val_type = var_bind["val_type"] # mib translation for oid (val keep same for original, mib translation, custom translation) - translated_mib_string = self.mib_translator(var_bind) + translated_mib_string, parsed_index = self.mib_translator(var_bind) if translated_mib_string: translated_oid = translated_mib_string.split("=")[0] translated_val = translated_mib_string.split("=")[1] @@ -351,6 +373,8 @@ def format_metric_data(self, var_bind, index=0): metric_data["metric_type"] = val_type if custom_translated_oid: metric_data["custom_metric_name"] = custom_translated_oid + if parsed_index: + metric_data["parsed_index"] = parsed_index logger.debug(f"metric_data: {json.dumps(metric_data)}") return metric_data diff --git a/tests/local-config.yaml b/tests/local-config.yaml index 07a73768..aa2d3c4d 100644 --- a/tests/local-config.yaml +++ b/tests/local-config.yaml @@ -25,7 +25,4 @@ mongo: collection: "oids" mib: database: "files" - collection: "mib_files" - profile: - database: "profiles" - collection: "profiles" \ No newline at end of file + collection: "mib_files" \ No newline at end of file From d7a8535e2a2c04912ef0aebd7309559ef10bf36f Mon Sep 17 00:00:00 2001 From: weliasz Date: Thu, 4 Nov 2021 11:22:04 +0100 Subject: [PATCH 2/4] fix: build fix --- splunk_connect_for_snmp_mib_server/translator.py | 1 - 1 file changed, 1 deletion(-) diff --git a/splunk_connect_for_snmp_mib_server/translator.py b/splunk_connect_for_snmp_mib_server/translator.py index 1c8d040a..bc674f52 100644 --- a/splunk_connect_for_snmp_mib_server/translator.py +++ b/splunk_connect_for_snmp_mib_server/translator.py @@ -212,7 +212,6 @@ def mib_translator(self, var_bind): logger.debug( f"* Re-Translated PDU: {translated_var_bind.prettyPrint()}" ) - return translated_var_bind.prettyPrint().replace(" = ", "=") except Exception as e: logger.debug(f"Error happened during translation checking: {e}") From 9c04c17d6cba7b006aa71f5cccb953c359450e7c Mon Sep 17 00:00:00 2001 From: weliasz Date: Thu, 4 Nov 2021 11:26:14 +0100 Subject: [PATCH 3/4] fix: build fix --- splunk_connect_for_snmp_mib_server/translator.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/splunk_connect_for_snmp_mib_server/translator.py b/splunk_connect_for_snmp_mib_server/translator.py index bc674f52..c8acbaf5 100644 --- a/splunk_connect_for_snmp_mib_server/translator.py +++ b/splunk_connect_for_snmp_mib_server/translator.py @@ -231,12 +231,17 @@ def parse_index(self, translated_var_bind): index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get(label) index_result = dict() - while abs(label_index) < len(object_identity.getLabel()) and type(index_row).__name__ == 'MibTableColumn': + while ( + abs(label_index) < len(object_identity.getLabel()) + and type(index_row).__name__ == "MibTableColumn" + ): label_index = label_index - 1 label = object_identity.getLabel()[label_index] - index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get(label) + index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get( + label + ) - if index_row and type(index_row).__name__ == 'MibTableRow': + if index_row and type(index_row).__name__ == "MibTableRow": index_tuple = [v.prettyPrint() for v in index_tuple] index_names = [v[2] for v in index_row.getIndexNames()] index_result = dict(zip(index_names, index_tuple)) From 97fd32c23152617b913c885b1e397927e962c20c Mon Sep 17 00:00:00 2001 From: weliasz Date: Thu, 4 Nov 2021 11:31:43 +0100 Subject: [PATCH 4/4] fix: build fix --- splunk_connect_for_snmp_mib_server/translator.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/splunk_connect_for_snmp_mib_server/translator.py b/splunk_connect_for_snmp_mib_server/translator.py index c8acbaf5..ee3c81fd 100644 --- a/splunk_connect_for_snmp_mib_server/translator.py +++ b/splunk_connect_for_snmp_mib_server/translator.py @@ -215,9 +215,9 @@ def mib_translator(self, var_bind): except Exception as e: logger.debug(f"Error happened during translation checking: {e}") - return None + return None, None else: - return None + return None, None index_result = self.parse_index(translated_var_bind) return translated_var_bind.prettyPrint().replace(" = ", "="), index_result