From 515fa86ae3d3438c427a8e9b930d5d51c019f54c Mon Sep 17 00:00:00 2001 From: thijs snijder <snijder@astron.nl> Date: Tue, 29 Mar 2022 10:31:34 +0200 Subject: [PATCH] initial changes after meeting --- .../tangostationcontrol/clients/snmp_client.py | 6 ++++++ .../tangostationcontrol/devices/snmp_device.py | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) diff --git a/tangostationcontrol/tangostationcontrol/clients/snmp_client.py b/tangostationcontrol/tangostationcontrol/clients/snmp_client.py index 7a7f45808..80638665d 100644 --- a/tangostationcontrol/tangostationcontrol/clients/snmp_client.py +++ b/tangostationcontrol/tangostationcontrol/clients/snmp_client.py @@ -2,6 +2,7 @@ from tangostationcontrol.clients.comms_client import CommClient from pysnmp import hlapi +from pysnmp.smi import builder import numpy import logging @@ -93,6 +94,11 @@ class SNMP_client(CommClient): return read_function, write_function + @staticmethod + def load_mib(mib_name): + mibBuilder = builder.MibBuilder() + mibBuilder.loadModule(mib_name) + class annotation_wrapper: def __init__(self, annotation): diff --git a/tangostationcontrol/tangostationcontrol/devices/snmp_device.py b/tangostationcontrol/tangostationcontrol/devices/snmp_device.py index 04d5a1425..cf079b63d 100644 --- a/tangostationcontrol/tangostationcontrol/devices/snmp_device.py +++ b/tangostationcontrol/tangostationcontrol/devices/snmp_device.py @@ -57,6 +57,11 @@ class SNMP(lofar_device): mandatory=True ) + SNMP_mib_dir = device_property( + dtype='DevString', + mandatory=False + ) + SNMP_timeout = device_property( dtype='DevDouble', mandatory=True @@ -125,6 +130,17 @@ class SNMP(lofar_device): self.snmp_manager.start() + def init_device(self): + super().init_device() + + # speeds up loading + for i in self.attr_list(): + try: + SNMP_client.load_mib(i.comms_annotation["mib"]) + except Exception as e: + raise Exception(f"Failed to load MIB file: {i.comms_annotation.get('mib')} for attribute {i.get_name()}") from e + + # -------- # Commands -- GitLab