From d5bf04913a3d1d7dc986ac8cc44669e6e06d4d0c Mon Sep 17 00:00:00 2001 From: Sam Roberts <sam.roberts@geant.org> Date: Wed, 14 Jun 2023 11:15:40 +0000 Subject: [PATCH] only build snmp indices once per endpoint request --- inventory_provider/routes/poller.py | 8 ++++---- tox.ini | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py index 775c4e57..69a82625 100644 --- a/inventory_provider/routes/poller.py +++ b/inventory_provider/routes/poller.py @@ -67,6 +67,7 @@ import itertools import json import logging import re +from functools import partial from flask import Blueprint, Response, current_app, request, jsonify @@ -1214,9 +1215,7 @@ def _get_services_internal(service_type=None): num_threads=20): yield doc['value'] - def _add_snmp(s): - all_snmp_info = common.load_snmp_indexes( - current_app.config['INVENTORY_PROVIDER_CONFIG'], ) + def _add_snmp(s, all_snmp_info): snmp_interfaces = all_snmp_info.get(s['hostname'], {}) interface_info = snmp_interfaces.get(s['interface'], None) if interface_info: @@ -1272,7 +1271,8 @@ def _get_services_internal(service_type=None): result = filter(_wanted_in_output, result) result = map(_format_services, result) if include_snmp: - result = map(_add_snmp, result) + all_snmp_info = common.load_snmp_indexes(current_app.config['INVENTORY_PROVIDER_CONFIG']) + result = map(partial(_add_snmp, all_snmp_info=all_snmp_info), result) result = list(result) if not result: diff --git a/tox.ini b/tox.ini index 86a7ce2a..869caf12 100644 --- a/tox.ini +++ b/tox.ini @@ -3,6 +3,7 @@ envlist = py36 [flake8] exclude = venv,.tox,build +max-line-length = 120 [testenv] passenv = TEST_OPSDB_HOSTNAME,TEST_OPSDB_DBNAME,TEST_OPSDB_USERNAME,TEST_OPSDB_PASSWORD -- GitLab