From 8a812fe1901cfec41e21a73499222f7a34a43fdb Mon Sep 17 00:00:00 2001 From: Herbert Wolverson Date: Sat, 27 Jan 2024 09:46:46 -0600 Subject: [PATCH] Update the parts of the Sonar configuration that are ported. Still have to figure out some types. --- src/integrationSonar.py | 11 ++++++----- src/rust/lqos_python/src/lib.rs | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 5 deletions(-) diff --git a/src/integrationSonar.py b/src/integrationSonar.py index 18fc9399d..8de142882 100644 --- a/src/integrationSonar.py +++ b/src/integrationSonar.py @@ -2,7 +2,8 @@ checkPythonVersion() import requests import subprocess -from ispConfig import sonar_api_url,sonar_api_key,sonar_airmax_ap_model_ids,sonar_active_status_ids,sonar_ltu_ap_model_ids,snmp_community +from liblqos_python import sonar_api_key, sonar_api_url, snmp_community +from ispConfig import sonar_airmax_ap_model_ids,sonar_active_status_ids,sonar_ltu_ap_model_ids all_models = sonar_airmax_ap_model_ids + sonar_ltu_ap_model_ids from integrationCommon import NetworkGraph, NetworkNode, NodeType from multiprocessing.pool import ThreadPool @@ -26,7 +27,7 @@ def sonarRequest(query,variables={}): - r = requests.post(sonar_api_url, json={'query': query, 'variables': variables}, headers={'Authorization': 'Bearer ' + sonar_api_key}, timeout=10) + r = requests.post(sonar_api_url(), json={'query': query, 'variables': variables}, headers={'Authorization': 'Bearer ' + sonar_api_key()}, timeout=10) r_json = r.json() # Sonar responses look like this: {"data": {"accounts": {"entities": [{"id": '1'},{"id": 2}]}}} @@ -247,11 +248,11 @@ def mapApCpeMacs(ap): macs = [] macs_output = None if ap['model'] in sonar_airmax_ap_model_ids: #Tested with Prism Gen2AC and Rocket M5. - macs_output = subprocess.run(['snmpwalk', '-Os', '-v', '1', '-c', snmp_community, ap['ip'], '.1.3.6.1.4.1.41112.1.4.7.1.1.1'], capture_output=True).stdout.decode('utf8') + macs_output = subprocess.run(['snmpwalk', '-Os', '-v', '1', '-c', snmp_community(), ap['ip'], '.1.3.6.1.4.1.41112.1.4.7.1.1.1'], capture_output=True).stdout.decode('utf8') if ap['model'] in sonar_ltu_ap_model_ids: #Tested with LTU Rocket - macs_output = subprocess.run(['snmpwalk', '-Os', '-v', '1', '-c', snmp_community, ap['ip'], '.1.3.6.1.4.1.41112.1.10.1.4.1.11'], capture_output=True).stdout.decode('utf8') + macs_output = subprocess.run(['snmpwalk', '-Os', '-v', '1', '-c', snmp_community(), ap['ip'], '.1.3.6.1.4.1.41112.1.10.1.4.1.11'], capture_output=True).stdout.decode('utf8') if macs_output: - name_output = subprocess.run(['snmpwalk', '-Os', '-v', '1', '-c', snmp_community, ap['ip'], '.1.3.6.1.2.1.1.5.0'], capture_output=True).stdout.decode('utf8') + name_output = subprocess.run(['snmpwalk', '-Os', '-v', '1', '-c', snmp_community(), ap['ip'], '.1.3.6.1.2.1.1.5.0'], capture_output=True).stdout.decode('utf8') ap['name'] = name_output[name_output.find('"')+1:name_output.rfind('"')] for mac_line in macs_output.splitlines(): mac = mac_line[mac_line.find(':')+1:] diff --git a/src/rust/lqos_python/src/lib.rs b/src/rust/lqos_python/src/lib.rs index 35cf75e7e..d0340d676 100644 --- a/src/rust/lqos_python/src/lib.rs +++ b/src/rust/lqos_python/src/lib.rs @@ -75,6 +75,9 @@ fn liblqos_python(_py: Python, m: &PyModule) -> PyResult<()> { m.add_wrapped(wrap_pyfunction!(powercode_api_key))?; m.add_wrapped(wrap_pyfunction!(powercode_api_url))?; m.add_wrapped(wrap_pyfunction!(automatic_import_sonar))?; + m.add_wrapped(wrap_pyfunction!(sonar_api_url))?; + m.add_wrapped(wrap_pyfunction!(sonar_api_key))?; + m.add_wrapped(wrap_pyfunction!(snmp_community))?; Ok(()) } @@ -560,4 +563,22 @@ fn powercode_api_url() -> PyResult { fn automatic_import_sonar() -> PyResult { let config = lqos_config::load_config().unwrap(); Ok(config.sonar_integration.enable_sonar) +} + +#[pyfunction] +fn sonar_api_url() -> PyResult { + let config = lqos_config::load_config().unwrap(); + Ok(config.sonar_integration.sonar_api_url) +} + +#[pyfunction] +fn sonar_api_key() -> PyResult { + let config = lqos_config::load_config().unwrap(); + Ok(config.sonar_integration.sonar_api_key) +} + +#[pyfunction] +fn snmp_community() -> PyResult { + let config = lqos_config::load_config().unwrap(); + Ok(config.sonar_integration.snmp_community) } \ No newline at end of file