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)
SOCKET_PATH = "/var/agentx/master"
AGENTX_EMPTY_PDU = 1
AGENTX_OPEN_PDU = 1
AGENTX_CLOSE_PDU = 2

View File

@ -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

View File

@ -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:

View File

@ -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)