Add server_address to initializer, allow for unix path (starts with /) or hostname:port address

This commit is contained in:
Pim van Pelt
2021-09-11 08:13:21 +00:00
parent 0c0e4fc14a
commit 842bce9d6e
4 changed files with 13 additions and 10 deletions

View File

@ -29,8 +29,6 @@ def setup_logging(debug=False):
logger.addHandler(ch) logger.addHandler(ch)
SOCKET_PATH = "/var/agentx/master"
AGENTX_EMPTY_PDU = 1 AGENTX_EMPTY_PDU = 1
AGENTX_OPEN_PDU = 1 AGENTX_OPEN_PDU = 1
AGENTX_CLOSE_PDU = 2 AGENTX_CLOSE_PDU = 2

View File

@ -36,10 +36,11 @@ class AgentError(Exception):
class Agent(object): class Agent(object):
def __init__(self): def __init__(self, server_address='/var/agentx/master'):
self._updater_list = [] self._updater_list = []
self._sethandlers = {} self._sethandlers = {}
self._threads = [] self._threads = []
self._server_address = server_address
def register(self, oid, class_, freq=10): def register(self, oid, class_, freq=10):
if Updater not in inspect.getmro(class_): if Updater not in inspect.getmro(class_):
@ -79,7 +80,7 @@ class Agent(object):
self._threads.append(t) self._threads.append(t)
# Start Network # Start Network
oid_list = [u['oid'] for u in self._updater_list] 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() t.start()
self._threads.append(t) self._threads.append(t)
# Do nothing ... just wait for someone to stop you # Do nothing ... just wait for someone to stop you

View File

@ -32,12 +32,13 @@ from pyagentx.pdu import PDU
class Network(threading.Thread): 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) threading.Thread.__init__(self)
self.stop = threading.Event() self.stop = threading.Event()
self._queue = update_queue self._queue = update_queue
self._oid_list = oid_list self._oid_list = oid_list
self._sethandlers = sethandlers self._sethandlers = sethandlers
self._server_address = server_address
self.session_id = 0 self.session_id = 0
self.transaction_id = 0 self.transaction_id = 0
@ -49,10 +50,13 @@ class Network(threading.Thread):
def _connect(self): def _connect(self):
while True: while True:
try: try:
# self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) logger.info("Connecting to %s", self._server_address)
# self.socket.connect(pyagentx.SOCKET_PATH) 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 = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect(("localhost",705)) self.socket.connect(self._server_address.split(':'))
self.socket.settimeout(0.1) self.socket.settimeout(0.1)
return return
except socket.error: except socket.error:

View File

@ -501,7 +501,7 @@ def main():
return return
try: try:
a = MyAgent() a = MyAgent(server_address='/run/vpp/agentx.sock')
a.start() a.start()
except Exception as e: except Exception as e:
print("Unhandled exception:", e) print("Unhandled exception:", e)