From 842bce9d6edeb4a0e6cf1c85ea22beff83c36ccd Mon Sep 17 00:00:00 2001 From: Pim van Pelt Date: Sat, 11 Sep 2021 08:13:21 +0000 Subject: [PATCH] Add server_address to initializer, allow for unix path (starts with /) or hostname:port address --- pyagentx/__init__.py | 2 -- pyagentx/agent.py | 5 +++-- pyagentx/network.py | 14 +++++++++----- vpp-snmp-agent.py | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/pyagentx/__init__.py b/pyagentx/__init__.py index 194f475..13d6c02 100644 --- a/pyagentx/__init__.py +++ b/pyagentx/__init__.py @@ -29,8 +29,6 @@ def setup_logging(debug=False): logger.addHandler(ch) -SOCKET_PATH = "/var/agentx/master" - AGENTX_EMPTY_PDU = 1 AGENTX_OPEN_PDU = 1 AGENTX_CLOSE_PDU = 2 diff --git a/pyagentx/agent.py b/pyagentx/agent.py index 5ec21e0..8a9aa44 100644 --- a/pyagentx/agent.py +++ b/pyagentx/agent.py @@ -36,10 +36,11 @@ class AgentError(Exception): class Agent(object): - def __init__(self): + def __init__(self, server_address='/var/agentx/master'): self._updater_list = [] self._sethandlers = {} self._threads = [] + self._server_address = server_address def register(self, oid, class_, freq=10): if Updater not in inspect.getmro(class_): @@ -79,7 +80,7 @@ class Agent(object): self._threads.append(t) # Start Network oid_list = [u['oid'] for u in self._updater_list] - t = Network(update_queue, oid_list, self._sethandlers) + t = Network(update_queue, oid_list, self._sethandlers, self._server_address) t.start() self._threads.append(t) # Do nothing ... just wait for someone to stop you diff --git a/pyagentx/network.py b/pyagentx/network.py index f9a0ba0..f580877 100644 --- a/pyagentx/network.py +++ b/pyagentx/network.py @@ -32,12 +32,13 @@ from pyagentx.pdu import PDU class Network(threading.Thread): - def __init__(self, update_queue, oid_list, sethandlers): + def __init__(self, update_queue, oid_list, sethandlers, server_address): threading.Thread.__init__(self) self.stop = threading.Event() self._queue = update_queue self._oid_list = oid_list self._sethandlers = sethandlers + self._server_address = server_address self.session_id = 0 self.transaction_id = 0 @@ -49,10 +50,13 @@ class Network(threading.Thread): def _connect(self): while True: try: -# self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) -# self.socket.connect(pyagentx.SOCKET_PATH) - self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.socket.connect(("localhost",705)) + logger.info("Connecting to %s", self._server_address) + if self._server_address.startswith('/'): + self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + self.socket.connect(self._server_address) + else: + self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.socket.connect(self._server_address.split(':')) self.socket.settimeout(0.1) return except socket.error: diff --git a/vpp-snmp-agent.py b/vpp-snmp-agent.py index 8a57cff..b458d7e 100755 --- a/vpp-snmp-agent.py +++ b/vpp-snmp-agent.py @@ -501,7 +501,7 @@ def main(): return try: - a = MyAgent() + a = MyAgent(server_address='/run/vpp/agentx.sock') a.start() except Exception as e: print("Unhandled exception:", e)