From aeae5597c7dcfa4cf432009c4668dd77aa6b84a1 Mon Sep 17 00:00:00 2001 From: "Ladue, David (dl3158)" Date: Fri, 14 Sep 2018 12:36:11 -0400 Subject: v3 changes and netsnmp compat update Change-Id: Ia69f70c5e128e800623feb7c1473b6729e52ba29 Issue-ID: DCAEGEN2-630 Signed-off-by: Ladue, David (dl3158) --- snmptrap/mod/trapd_vb_types.py | 89 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 snmptrap/mod/trapd_vb_types.py (limited to 'snmptrap/mod/trapd_vb_types.py') diff --git a/snmptrap/mod/trapd_vb_types.py b/snmptrap/mod/trapd_vb_types.py new file mode 100644 index 0000000..2d01a30 --- /dev/null +++ b/snmptrap/mod/trapd_vb_types.py @@ -0,0 +1,89 @@ +# ============LICENSE_START======================================================= +# org.onap.dcae +# ================================================================================ +# Copyright (c) 2018 AT&T Intellectual Property. All rights reserved. +# ================================================================================ +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# ============LICENSE_END========================================================= +# +# ECOMP is a trademark and service mark of AT&T Intellectual Property. +# +""" +module for converting varbind types from Net-SNMP to PYSNMP + +- converts pysnmp vb type name to net-snmp for backward compatibility + +""" + +__docformat__ = 'restructuredtext' + +import json +import os +import sys +import string +import time +import traceback +import collections +import pprint + +import trapd_settings as tds +from trapd_exit import cleanup_and_exit +from trapd_io import stdout_logger, ecomp_logger + +prog_name = os.path.basename(__file__) + +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # +# module: load_snmpv3_credentials +# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # + +_pysnmp_to_netsnmp_vb_type = { + 'Integer' : 'integer', + 'Gauge32' : 'unsigned', + 'Counter32' : 'counter32', + 'OctetString' : 'octet', + 'py_type_5' : 'hex', + 'py_type_6' : 'decimal', + 'Null' : 'null', + 'ObjectIdentifier' : 'oid', + 'TimeTicks' : 'timeticks', + 'IpAddress' : 'ipaddress', + 'Bits' : 'bits' + } + +default_vb_type = "octet" + +def pysnmp_to_netsnmp_varbind_convert (_pysnmp_vb_type): + """ + Convert pysnmp varbind types to Net-SNMP nomenclature + to maintain backward compatibilty with existing solutions + :Parameters: + _pysnmp_vb_type: varbind type as presented from pysnmp + API + :Exceptions: + if _pysnmp_vb_type isn't found in dictionary, return + type that was defined by pysnmp in original call + """ + + # lookup _pysnmp_vb_type in conversion dictionary + try: + msg = ("checking for netsnmp equiv of varbind type: %s" \ + % _pysnmp_vb_type) + ecomp_logger(tds.LOG_TYPE_DEBUG, tds.SEV_INFO, tds.CODE_GENERAL, msg) + _netsnmp_vb_type = _pysnmp_to_netsnmp_vb_type[_pysnmp_vb_type] + return _netsnmp_vb_type + except Exception as e: + # if not found, return original pysnmp type + msg = ("%s not configured as pysnmp varbind type" \ + % _pysnmp_vb_type) + ecomp_logger(tds.LOG_TYPE_DEBUG, tds.SEV_INFO, tds.CODE_GENERAL, msg) + return default_vb_type -- cgit 1.2.3-korg