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)
|
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
|
||||||
|
@ -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
|
||||||
|
@ -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_INET, socket.SOCK_STREAM)
|
self.socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
|
||||||
self.socket.connect(("localhost",705))
|
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)
|
self.socket.settimeout(0.1)
|
||||||
return
|
return
|
||||||
except socket.error:
|
except socket.error:
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user