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

Commit

Permalink
feat: format code
Browse files Browse the repository at this point in the history
  • Loading branch information
omrozowicz-splunk committed Aug 19, 2021
1 parent 0d3d111 commit c35f874
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 28 deletions.
4 changes: 1 addition & 3 deletions splunk_connect_for_snmp_mib_server/mib_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
# See the License for the specific language governing permissions and
# limitations under the License.
# ########################################################################
import json

from flask import Flask, request
from flask_autoindex import AutoIndex
Expand All @@ -24,7 +23,6 @@


class MibServer:

def __init__(self, args, server_config):
self._args = args
self._server_config = server_config
Expand All @@ -33,7 +31,7 @@ def __init__(self, args, server_config):
self.data_format = {
"METRIC": self._translator.format_metric_data,
"TEXT": self._translator.format_text_event,
"MULTIMETRIC": self._translator.format_multimetric_data
"MULTIMETRIC": self._translator.format_multimetric_data,
}

def build_flask_app(self):
Expand Down
13 changes: 9 additions & 4 deletions splunk_connect_for_snmp_mib_server/translator.py
Original file line number Diff line number Diff line change
Expand Up @@ -349,7 +349,9 @@ def format_text_event(self, var_binds: list):
def format_metric_data(self, var_bind: list, index=0):
"""
format one varBind object into metric format
@param var_bind: single varBind object
:param var_bind: varBind list, usually it contains only one element
:param index: index of the element we want to process
:return: translated data dictionary
"""
var_bind = var_bind[index]
metric_data = {}
Expand All @@ -376,7 +378,7 @@ def format_metric_data(self, var_bind: list, index=0):
# .. if the metric name contains a . replace with _
metric_data[
"metric_name"
] = f'sc4snmp.{translated_oid.replace(".","_").replace("::", ".")}'
] = f'sc4snmp.{translated_oid.replace(".", "_").replace("::", ".")}'
metric_data["_value"] = translated_val
metric_data["metric_type"] = val_type
if custom_translated_oid:
Expand All @@ -399,6 +401,9 @@ def format_multimetric_data(self, varbinds: list) -> dict:
"""
result_dict = self.format_metric_data(varbinds)
result_string = self.format_text_event(varbinds)
result = {'metric_name': result_dict['metric_name'], 'metric': json.dumps(result_dict),
'non_metric': result_string}
result = {
"metric_name": result_dict["metric_name"],
"metric": json.dumps(result_dict),
"non_metric": result_string,
}
return result
44 changes: 23 additions & 21 deletions tests/test_translator.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,10 @@
from unittest import TestCase, mock

import mongomock
import yaml

from splunk_connect_for_snmp_mib_server.translator import Translator
import os
import logging
import json
from pysnmp.hlapi import *

logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -91,7 +89,7 @@ def setUp(self):
"mib": {"database": "files", "collection": "mib_files"},
},
}
#server_config["snmp"]["mibs"]["dir"] = "../mibs/pysnmp"
# server_config["snmp"]["mibs"]["dir"] = "../mibs/pysnmp"
self.my_translator = Translator(server_config)

@mongomock.patch()
Expand Down Expand Up @@ -193,11 +191,13 @@ def test_format_trap_invalid_input(self):

@mongomock.patch()
def test_format_metric(self):
input_var_binds = [{
"oid": "1.3.6.1.2.1.1.3.0",
"val": "123",
"val_type": "TimeTicks",
}]
input_var_binds = [
{
"oid": "1.3.6.1.2.1.1.3.0",
"val": "123",
"val_type": "TimeTicks",
}
]
translated_dict = self.my_translator.format_metric_data(input_var_binds)
for required_key in ["metric_name", "_value", "metric_type"]:
assert required_key in translated_dict
Expand All @@ -208,11 +208,13 @@ def test_format_metric(self):

@mongomock.patch()
def test_format_non_existing_metric(self):
input_var_binds = [{
"oid": "1.3.6666.16666.26666.16666.1.3.0",
"val": "123",
"val_type": "TimeTicks",
}]
input_var_binds = [
{
"oid": "1.3.6666.16666.26666.16666.1.3.0",
"val": "123",
"val_type": "TimeTicks",
}
]
translated_dict = self.my_translator.format_metric_data(input_var_binds)
for required_key in ["metric_name", "_value", "metric_type"]:
assert required_key in translated_dict
Expand Down Expand Up @@ -279,11 +281,13 @@ def test_translate_all_snmp_simulator_data_types(self):
and len(value_types) == len(expected_translations)
)
for index in range(0, len(oids)):
input_var_binds_colons = [{
"oid": oids[index],
"val": str_values[index],
"val_type": value_types[index],
}]
input_var_binds_colons = [
{
"oid": oids[index],
"val": str_values[index],
"val_type": value_types[index],
}
]
translated_metrics = self.my_translator.format_metric_data(
input_var_binds_colons
)
Expand All @@ -309,7 +313,5 @@ def test_more_mib_files(self):
]

for i in range(0, len(input_var_binds)):
translated_dict = self.my_translator.format_metric_data(
input_var_binds, i
)
translated_dict = self.my_translator.format_metric_data(input_var_binds, i)
assert translated_dict["metric_name"] == expected_values[i]

0 comments on commit c35f874

Please sign in to comment.