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

Commit 85a5f84

Browse files
author
Addon Factory template
committed
fix: Typo in copy paste
1 parent 4c615c9 commit 85a5f84

File tree

1 file changed

+79
-52
lines changed

1 file changed

+79
-52
lines changed

splunk_connect_for_snmp_mib_server/translator.py

Lines changed: 79 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@
77
from splunk_connect_for_snmp_mib_server.mongo import OidsRepository, MibsRepository
88

99
from pysmi import debug as pysmi_debug
10-
pysmi_debug.setLogger(pysmi_debug.Debug('compiler'))
10+
11+
pysmi_debug.setLogger(pysmi_debug.Debug("compiler"))
1112

1213
logger = logging.getLogger(__name__)
1314

@@ -17,18 +18,24 @@ def __init__(self, server_config):
1718
self._server_config = server_config
1819
self._custom_translation_table = self.get_custom_translation_table()
1920
self._load_list = server_config["snmp"]["mibs"]["load_list"]
20-
self._mib_builder, self._mib_view_controller = self.build_mib_compiler(self._load_list)
21-
22-
self._mongo_oids_coll = self.build_oids_collection(server_config["mongo"]["oid"])
23-
self._mongo_mibs_coll = self.build_mibs_collection(server_config["mongo"]["mib"])
21+
self._mib_builder, self._mib_view_controller = self.build_mib_compiler(
22+
self._load_list
23+
)
24+
25+
self._mongo_oids_coll = self.build_oids_collection(
26+
server_config["mongo"]["oid"]
27+
)
28+
self._mongo_mibs_coll = self.build_mibs_collection(
29+
server_config["mongo"]["mib"]
30+
)
2431
# Execute the 1st translation to force mibs to be ready to use
2532
self.first_mib_translation_trigger()
26-
33+
2734
# build a oids collection in mongo
2835
def build_oids_collection(self, oid_mongo_config):
2936
oids_collection = OidsRepository(oid_mongo_config)
3037
return oids_collection
31-
38+
3239
# build a mibs collectoin in mongo
3340
def build_mibs_collection(self, mib_mongo_config):
3441
mibs_collection = MibsRepository(mib_mongo_config)
@@ -39,13 +46,13 @@ def build_mib_compiler(self, load_list):
3946
snmp_config = self._server_config["snmp"]
4047
mibBuilder = builder.MibBuilder()
4148
mibViewController = view.MibViewController(mibBuilder)
42-
compiler.addMibCompiler(mibBuilder, sources=[os.environ['MIBS_FILES_URL']])
49+
compiler.addMibCompiler(mibBuilder, sources=[os.environ["MIBS_FILES_URL"]])
4350

4451
# Optionally set an alternative path to compiled MIBs
45-
logger.debug('Setting MIB sources...')
52+
logger.debug("Setting MIB sources...")
4653
mibBuilder.addMibSources(builder.DirMibSource(snmp_config["mibs"]["dir"]))
4754
logger.debug(mibBuilder.getMibSources())
48-
logger.debug('done')
55+
logger.debug("done")
4956

5057
mib_file_path = os.path.join(os.getcwd(), self._load_list)
5158
logger.debug(f"mib_file_path {mib_file_path}")
@@ -61,34 +68,32 @@ def build_mib_compiler(self, load_list):
6168
except Exception as e:
6269
logger.error(f"Error happened during load module: {e}")
6370
pass
64-
71+
6572
logger.debug("compiler is loaded")
6673

6774
return mibBuilder, mibViewController
6875

69-
7076
def first_mib_translation_trigger(self):
7177
# This is a test TRAP PDU
7278
var_binds_list = [
7379
{
74-
"oid": '1.3.6.1.2.1.1.3.0',
80+
"oid": "1.3.6.1.2.1.1.3.0",
7581
"oid_type": "ObjectName",
7682
"val": "123",
77-
"val_type": "TimeTicks"
83+
"val_type": "TimeTicks",
7884
},
7985
{
80-
"oid": '1.3.6.1.6.3.1.1.4.1.0',
86+
"oid": "1.3.6.1.6.3.1.1.4.1.0",
8187
"oid_type": "ObjectName",
8288
"val": "1.3.6.1.6.3.1.1.5.2",
83-
"val_type": "ObjectIdentifier"
84-
}
89+
"val_type": "ObjectIdentifier",
90+
},
8591
]
8692

8793
for var_bind in var_binds_list:
8894
self.mib_translator(var_bind)
8995
logger.debug("mib_translator is ready to use!")
9096

91-
9297
# Check if the oid was translated properly
9398
def is_not_translated(self, org_val, trans_val):
9499
# if translated value equals to original value, it was not translated at all
@@ -98,40 +103,48 @@ def is_not_translated(self, org_val, trans_val):
98103
logger.debug(f"temp: {temp}")
99104
# if the second last number of the oid is numeric, it was not translated properly
100105
return len(temp) >= 2 and temp[-2].isnumeric()
101-
106+
102107
def write_mib_to_load_list(self, mib_name):
103108
mib_file_path = os.path.join(os.getcwd(), self._load_list)
104109
logger.debug(f"mib_file_path: {mib_file_path}")
105110
try:
106-
with open(mib_file_path, 'a') as mib_list_file:
111+
with open(mib_file_path, "a") as mib_list_file:
107112
writer = csv.writer(mib_list_file)
108113
writer.writerow([mib_name])
109114
logger.debug(f"[-] Wrote {mib_name} to mib list")
110115
mib_list_file.close()
111116
except Exception as e:
112-
logger.error(f"Error happened during write the mib into mib load list file: {e}")
117+
logger.error(
118+
f"Error happened during write the mib into mib load list file: {e}"
119+
)
113120

114121
# Find mib module based on the oid
115122
def find_mib_file(self, oid):
116123
snmp_config = self._server_config["snmp"]
117-
value_tuple=str(oid).replace(".",", ")
118-
124+
value_tuple = str(oid).replace(".", ", ")
125+
119126
try:
120127
mib_name = self._mongo_mibs_coll.search_oid(value_tuple)
121128
except Exception as e:
122-
logger.error(f"Error happened during search the oid in mongo mibs collection: {e}")
129+
logger.error(
130+
f"Error happened during search the oid in mongo mibs collection: {e}"
131+
)
123132
if not mib_name:
124133
logger.warn(f"Can NOT find the mib file for the oid-{oid} -- {value_tuple}")
125134
logger.debug(f"Writing the oid-{oid} into mongo")
126135
try:
127136
self._mongo_oids_coll.add_oid(str(oid))
128-
logger.debug(f"[-] The oid - {oid} was added into mongo oids collection")
137+
logger.debug(
138+
f"[-] The oid - {oid} was added into mongo oids collection"
139+
)
129140
except Exception as e:
130-
logger.error(f"Error happened during add the oid - {oid} into mongo oids collection: {e}")
141+
logger.error(
142+
f"Error happened during add the oid - {oid} into mongo oids collection: {e}"
143+
)
131144
return
132145
mib_name = mib_name[:-3]
133146
logger.debug(f"mib_name: {mib_name}")
134-
# load the mib module
147+
# load the mib module
135148
self.load_extra_mib(mib_name, oid)
136149

137150
# Load additional mib module
@@ -142,15 +155,21 @@ def load_extra_mib(self, mib_module, oid):
142155
# add this mib module into mibs_list.csv if it was successfully loaded
143156
self.write_mib_to_load_list(mib_module)
144157
except Exception as e:
145-
logger.warn(f"Error happened during load mib module - {mib_module} for oid - {oid} : {e}")
158+
logger.warn(
159+
f"Error happened during load mib module - {mib_module} for oid - {oid} : {e}"
160+
)
146161
logger.debug(f"Writing the oid-{oid} into mongo oids collection")
147162
try:
148163
self._mongo_oids_coll.add_oid(str(oid))
149-
logger.debug(f"[-] The oid - {oid} was added into mongo oids collection")
164+
logger.debug(
165+
f"[-] The oid - {oid} was added into mongo oids collection"
166+
)
150167
except Exception as e:
151-
logger.error(f"Error happened during add the oid - {oid} into mongo oids collection: {e}")
168+
logger.error(
169+
f"Error happened during add the oid - {oid} into mongo oids collection: {e}"
170+
)
152171
pass
153-
172+
154173
# Check if the oid is already in the mongodb
155174
def check_mongo(self, oid):
156175
# TODO remove #119-121 later
@@ -159,28 +178,29 @@ def check_mongo(self, oid):
159178
# if the oid was found in mongo, then the oid is verified that there is not mapping mib module for it
160179
no_mapping_mib = True if result != 0 else False
161180
except Exception as e:
162-
logger.error(f"Error happend when finding oid in mongo oids collection: {e}")
163-
164-
return no_mapping_mib
181+
logger.error(
182+
f"Error happend when finding oid in mongo oids collection: {e}"
183+
)
165184

185+
return no_mapping_mib
166186

167187
# Translate SNMP PDU varBinds into MIB objects using MIB
168188
def mib_translator(self, var_bind):
169-
189+
170190
# Run var-binds through MIB resolver
171191
try:
172192
name = var_bind["oid"]
173193
val = var_bind["val"]
174194
varBind = rfc1902.ObjectType(
175195
rfc1902.ObjectIdentity(name), val
176196
).resolveWithMib(self._mib_view_controller)
177-
197+
178198
logger.debug(f"* Translated PDU: {varBind.prettyPrint()}")
179199
trans_string = varBind.prettyPrint().replace(" = ", "=")
180200
trans_oid = trans_string.split("=")[0]
181201
trans_val = trans_string.split("=")[1]
182202
valType = var_bind["val_type"]
183-
203+
184204
try:
185205
# Check if oid exists in mongo oids collection and if oid was translated properly
186206
no_mapping_mib_oid = self.check_mongo(name)
@@ -192,31 +212,31 @@ def mib_translator(self, var_bind):
192212
if valType == "ObjectIdentifier" or valType == "ObjectIdentity":
193213
no_mapping_mib_val = self.check_mongo(val)
194214
logger.debug(f"no_mapping_mib_val: {no_mapping_mib_val}")
195-
if not no_mapping_mib_val and self.is_not_translated(val, trans_val):
215+
if not no_mapping_mib_val and self.is_not_translated(
216+
val, trans_val
217+
):
196218
self.find_mib_file(val)
197219

198-
# Re-translated with the extra mibs
220+
# Re-translated with the extra mibs
199221
varBind = rfc1902.ObjectType(
200-
rfc1902.ObjectIdentity(name), val
201-
).resolveWithMib(self._mib_view_controller)
222+
rfc1902.ObjectIdentity(name), val
223+
).resolveWithMib(self._mib_view_controller)
202224
logger.debug(f"* Re-Translated PDU: {varBind.prettyPrint()}")
203225

204226
except Exception as e:
205227
logger.debug(f"Error happended during translation checking: {e}")
206-
pass
207-
228+
pass
229+
208230
return varBind.prettyPrint().replace(" = ", "=")
209231
except Exception as e:
210232
logger.error(f"Error happended in translation: {e}")
211233
finally:
212234
pass
213235

214-
215236
# Translate SNMP PDU varBinds into MIB objects using custom translation table
216237
def custom_translator(self, oid):
217238
return self._custom_translation_table.get(oid, None)
218239

219-
220240
# Read the custom mib translation table into memory
221241
def get_custom_translation_table(self):
222242
translation_table = {}
@@ -260,10 +280,13 @@ def format_trap_event(self, var_binds):
260280
# translated_mib_string = self.mib_translator(name, val)
261281
translated_mib_string = self.mib_translator(var_bind)
262282
if translated_mib_string:
263-
translated_mib_string = '{translated_oid}="{translated_value}"'.format(translated_oid=translated_mib_string.split("=")[0], translated_value=translated_mib_string.split("=")[1])
283+
translated_mib_string = '{translated_oid}="{translated_value}"'.format(
284+
translated_oid=translated_mib_string.split("=")[0],
285+
translated_value=translated_mib_string.split("=")[1],
286+
)
264287
else:
265288
translated_mib_string = ""
266-
289+
267290
if custom_translated_oid:
268291
custom_translated_mib_string = (
269292
'{custom_translated_oid}="{custom_translated_value}"'.format(
@@ -275,7 +298,9 @@ def format_trap_event(self, var_binds):
275298
else:
276299
custom_translated_mib_string = ""
277300

278-
original_value = 'value{offset}="{value}"'.format(offset=offset, value=value)
301+
original_value = 'value{offset}="{value}"'.format(
302+
offset=offset, value=value
303+
)
279304
val_type_string = 'value{offset}-type="{val_type}"'.format(
280305
offset=offset, val_type=valType
281306
)
@@ -296,15 +321,15 @@ def format_trap_event(self, var_binds):
296321
logger.debug(f"--- Trap Event String ---")
297322
logger.debug(trap_event_string)
298323
return trap_event_string
299-
324+
300325
# Format and translate the metric data
301326
def format_metric_data(self, var_bind):
302327
"""
303328
format one varBind object into metric format
304329
@param var_bind: single varBind object
305330
"""
306331
metric_data = {}
307-
332+
308333
# extract oid and value
309334
oid = var_bind["oid"]
310335
value = var_bind["val"]
@@ -323,9 +348,11 @@ def format_metric_data(self, var_bind):
323348

324349
# custom translation for oid
325350
custom_translated_oid = self.custom_translator(oid)
326-
351+
327352
# Construct metric data
328-
metric_data["metric_name"] = 'sc4snmp.{translated_oid.replace(".","_").replace("::", ".")}',
353+
metric_data[
354+
"metric_name"
355+
] = f'sc4snmp.{translated_oid.replace(".","_").replace("::", ".")}'
329356
metric_data["_value"] = translated_val
330357
metric_data["metric_type"] = valType
331358
if custom_translated_oid:

0 commit comments

Comments
 (0)