Skip to content
This repository was archived by the owner on Dec 17, 2021. It is now read-only.

Commit 5cad4a0

Browse files
authored
fix: suffix parsing (#71)
* fix: suffix parsing * fix: build fix * fix: build fix * fix: build fix
1 parent 01949f3 commit 5cad4a0

File tree

2 files changed

+35
-10
lines changed

2 files changed

+35
-10
lines changed

splunk_connect_for_snmp_mib_server/translator.py

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -212,15 +212,41 @@ def mib_translator(self, var_bind):
212212
logger.debug(
213213
f"* Re-Translated PDU: {translated_var_bind.prettyPrint()}"
214214
)
215-
return translated_var_bind.prettyPrint().replace(" = ", "=")
216215

217216
except Exception as e:
218217
logger.debug(f"Error happened during translation checking: {e}")
219-
return None
218+
return None, None
220219
else:
221-
return None
220+
return None, None
221+
222+
index_result = self.parse_index(translated_var_bind)
223+
return translated_var_bind.prettyPrint().replace(" = ", "="), index_result
224+
225+
def parse_index(self, translated_var_bind):
226+
object_identity, object_value = translated_var_bind
227+
index_tuple = object_identity.getMibSymbol()[2]
228+
family = object_identity.getMibSymbol()[0]
229+
label_index = -1
230+
label = object_identity.getLabel()[label_index]
231+
index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get(label)
232+
index_result = dict()
233+
234+
while (
235+
abs(label_index) < len(object_identity.getLabel())
236+
and type(index_row).__name__ == "MibTableColumn"
237+
):
238+
label_index = label_index - 1
239+
label = object_identity.getLabel()[label_index]
240+
index_row = self._mib_view_controller.mibBuilder.mibSymbols[family].get(
241+
label
242+
)
243+
244+
if index_row and type(index_row).__name__ == "MibTableRow":
245+
index_tuple = [v.prettyPrint() for v in index_tuple]
246+
index_names = [v[2] for v in index_row.getIndexNames()]
247+
index_result = dict(zip(index_names, index_tuple))
222248

223-
return translated_var_bind.prettyPrint().replace(" = ", "=")
249+
return index_result
224250

225251
# Translate SNMP PDU varBinds into MIB objects using custom translation table
226252
def custom_translator(self, oid):
@@ -270,7 +296,7 @@ def format_text_event(self, var_binds: list):
270296
oid_type_string = 'oid-type{offset}="{oid_type}"'.format(
271297
offset=offset, oid_type=name_type
272298
)
273-
translated_mib_string = self.mib_translator(var_bind)
299+
translated_mib_string, parsed_index = self.mib_translator(var_bind)
274300
if translated_mib_string:
275301
translated_mib_string = '{translated_oid}="{translated_value}"'.format(
276302
translated_oid=translated_mib_string.split("=")[0],
@@ -329,7 +355,7 @@ def format_metric_data(self, var_bind, index=0):
329355
val_type = var_bind["val_type"]
330356

331357
# mib translation for oid (val keep same for original, mib translation, custom translation)
332-
translated_mib_string = self.mib_translator(var_bind)
358+
translated_mib_string, parsed_index = self.mib_translator(var_bind)
333359
if translated_mib_string:
334360
translated_oid = translated_mib_string.split("=")[0]
335361
translated_val = translated_mib_string.split("=")[1]
@@ -351,6 +377,8 @@ def format_metric_data(self, var_bind, index=0):
351377
metric_data["metric_type"] = val_type
352378
if custom_translated_oid:
353379
metric_data["custom_metric_name"] = custom_translated_oid
380+
if parsed_index:
381+
metric_data["parsed_index"] = parsed_index
354382
logger.debug(f"metric_data: {json.dumps(metric_data)}")
355383
return metric_data
356384

tests/local-config.yaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,4 @@ mongo:
2525
collection: "oids"
2626
mib:
2727
database: "files"
28-
collection: "mib_files"
29-
profile:
30-
database: "profiles"
31-
collection: "profiles"
28+
collection: "mib_files"

0 commit comments

Comments
 (0)