Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@
- Enabled AOF persistence by default for data durability
- add CounterBasedGauge64 and ZeroBasedCounter64 as metrics types

### Fixed
### Fixes
- fix problem with service rendering when `traps.service.usemetallb` is set to false
- fix reusing the snmp engine for snmpv3 calls

## [1.14.1]
- update mongodb volumePermission image repository to `bitnamileagcy`
Expand Down
4 changes: 1 addition & 3 deletions splunk_connect_for_snmp/snmp/auth.py
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,5 @@ def get_auth(
return get_auth_v1(ir)
elif ir.version == "2c":
return get_auth_v2c(ir)
elif ir.version == "3":
return get_auth_v3(logger, ir, snmp_engine)
else:
raise SnmpActionError(f"Wrong SNMP version {ir.version}")
return get_auth_v3(logger, ir, snmp_engine)
26 changes: 5 additions & 21 deletions splunk_connect_for_snmp/snmp/manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -291,9 +291,9 @@ def __init__(self, **kwargs):
self.profiles_collection = ProfileCollection(self.profiles)
self.profiles_collection.process_profiles()
self.last_modified = time.time()
self.snmp_engine = SnmpEngine()
self.snmpEngine = SnmpEngine()
self.already_loaded_mibs = set()
self.builder = self.snmp_engine.getMibBuilder()
self.builder = self.snmpEngine.getMibBuilder()
self.mib_view_controller = view.MibViewController(self.builder)
compiler.addMibCompiler(self.builder, sources=[MIB_SOURCES])

Expand All @@ -315,18 +315,6 @@ def __init__(self, **kwargs):
f"Unable to load mib map from index http error {self.mib_response.status_code}"
)

def get_snmp_engine(self, version="", create_new=False) -> SnmpEngine:
"""
:returns: The new SnmpEngine with mibViewController cache attached if snmp version is 3,
else it reuses already defined snmp poller.
"""
if version == "3" or create_new:
snmp_engine = SnmpEngine()
snmp_engine.cache["mibViewController"] = self.mib_view_controller
return snmp_engine
else:
return self.snmp_engine

def do_work(
self,
ir: InventoryRecord,
Expand All @@ -347,7 +335,7 @@ def do_work(
address, walk=walk, profiles=profiles
)

auth_data = get_auth(logger, ir, self.get_snmp_engine(ir.version))
auth_data = get_auth(logger, ir, self.snmpEngine)
context_data = get_context_data()

transport = setup_transport_target(ir)
Expand Down Expand Up @@ -411,11 +399,7 @@ def run_get_request(
error_index,
varbind_table,
) in getCmd(
self.get_snmp_engine(create_new=True),
auth_data,
transport,
context_data,
*varbind_chunk,
self.snmpEngine, auth_data, transport, context_data, *varbind_chunk
):
if not _any_failure_happened(
error_indication,
Expand Down Expand Up @@ -445,7 +429,7 @@ def run_bulk_request(
error_index,
varbind_table,
) in bulkCmd(
self.get_snmp_engine(create_new=True),
self.snmpEngine,
auth_data,
transport,
context_data,
Expand Down
11 changes: 4 additions & 7 deletions test/snmp/test_do_work.py
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ class TestDoWork(TestCase):
def test_do_work_no_work_to_do(self):
poller = Poller.__new__(Poller)
poller.last_modified = 1609675634
poller.snmp_engine = None
poller.snmpEngine = None
poller.profiles_manager = MagicMock()
poller.profiles_collection = MagicMock()
poller.profiles_collection.process_profiles = MagicMock()
Expand All @@ -57,15 +57,14 @@ def test_do_work_no_work_to_do(self):
@patch("mongolock.MongoLock.release", MagicMock())
@patch("splunk_connect_for_snmp.snmp.auth.get_auth", None)
@patch("splunk_connect_for_snmp.snmp.manager.get_context_data", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.Poller.get_snmp_engine", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.setup_transport_target", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.bulkCmd")
@patch("splunk_connect_for_snmp.snmp.manager.getCmd")
@patch("splunk_connect_for_snmp.common.collection_manager.ProfilesManager")
def test_do_work_bulk(self, load_profiles, getCmd, bulkCmd):
poller = Poller.__new__(Poller)
poller.last_modified = 1609675634
poller.snmp_engine = None
poller.snmpEngine = None
poller.builder = MagicMock()
poller.profiles_manager = MagicMock()
m_process_data = MagicMock()
Expand Down Expand Up @@ -94,7 +93,6 @@ def test_do_work_bulk(self, load_profiles, getCmd, bulkCmd):
@patch("mongolock.MongoLock.release", MagicMock())
@patch("splunk_connect_for_snmp.snmp.auth.get_auth", None)
@patch("splunk_connect_for_snmp.snmp.manager.get_context_data", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.Poller.get_snmp_engine", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.setup_transport_target", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.bulkCmd")
@patch("splunk_connect_for_snmp.snmp.manager.getCmd")
Expand All @@ -104,7 +102,7 @@ def test_do_work_bulk(self, load_profiles, getCmd, bulkCmd):
def test_do_work_get(self, load_profiles, getCmd, bulkCmd):
poller = Poller.__new__(Poller)
poller.last_modified = 1609675634
poller.snmp_engine = None
poller.snmpEngine = None
poller.builder = MagicMock()
poller.process_snmp_data = MagicMock()
poller.profiles_manager = MagicMock()
Expand Down Expand Up @@ -138,7 +136,6 @@ def test_do_work_get(self, load_profiles, getCmd, bulkCmd):
@patch("mongolock.MongoLock.release", MagicMock())
@patch("splunk_connect_for_snmp.snmp.auth.get_auth", None)
@patch("splunk_connect_for_snmp.snmp.manager.get_context_data", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.Poller.get_snmp_engine", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.setup_transport_target", MagicMock())
@patch("splunk_connect_for_snmp.snmp.manager.bulkCmd")
@patch("splunk_connect_for_snmp.snmp.manager.getCmd")
Expand All @@ -148,7 +145,7 @@ def test_do_work_get(self, load_profiles, getCmd, bulkCmd):
def test_do_work_errors(self, load_profiles, getCmd, bulkCmd):
poller = Poller.__new__(Poller)
poller.last_modified = 1609675634
poller.snmp_engine = None
poller.snmpEngine = None
poller.builder = MagicMock()
poller.process_snmp_data = MagicMock()
poller.profiles_manager = MagicMock()
Expand Down
Loading