Add server_address to initializer, allow for unix path (starts with /) or hostname:port address
This commit is contained in:
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
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(("localhost",705))
|
||||
self.socket.connect(self._server_address.split(':'))
|
||||
self.socket.settimeout(0.1)
|
||||
return
|
||||
except socket.error:
|
||||
|
@ -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)
|
||||
|
Reference in New Issue
Block a user