s/freq/period/ to be more precies; Set default period to 30s; set wait period on reconnect to 10s; Add explicit INFO logline when replacing dataset

This commit is contained in:
Pim van Pelt
2021-09-11 12:45:28 +00:00
parent 8c9c1e2b4a
commit c72890868c
3 changed files with 13 additions and 8 deletions

View File

@ -25,14 +25,14 @@ class AgentError(Exception):
class Agent(object): class Agent(object):
def __init__(self, server_address='/var/agentx/master', freq=5): def __init__(self, server_address='/var/agentx/master', period=30.0):
self.logger = logging.getLogger('agentx.agent') self.logger = logging.getLogger('agentx.agent')
self.logger.addHandler(NullHandler()) self.logger.addHandler(NullHandler())
self._servingset = DataSet() self._servingset = DataSet()
self._workingset = DataSet() self._workingset = DataSet()
self._lastupdate = 0 self._lastupdate = 0
self._update_freq = freq self._update_period = period # Seconds
self._net = Network(server_address = server_address) self._net = Network(server_address = server_address)
@ -55,14 +55,17 @@ class Agent(object):
self.logger.info('Opening AgentX connection') self.logger.info('Opening AgentX connection')
self._net.start(self._oid_list) self._net.start(self._oid_list)
if time.time() - self._lastupdate > self._update_freq: if time.time() - self._lastupdate > self._update_period:
self._update() self._update()
try: try:
self._net.run() self._net.run()
except Exception as e: except Exception as e:
self.logger.error('An exception occurred: %s' % e) self.logger.error('An exception occurred: %s' % e)
time.sleep(1) sleep = 10
self.logger.error('Disconnecting and sleeping %d seconds' % sleep)
self._net.disconnect()
time.sleep(sleep)
def stop(self): def stop(self):
self.logger.debug('Stopping') self.logger.debug('Stopping')

View File

@ -53,7 +53,9 @@ class Network():
self.socket.connect(self._server_address) self.socket.connect(self._server_address)
else: else:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect(self._server_address.split(':')) host, port=self._server_address.split(':')
self.socket.connect((host, int(port)))
self.socket.settimeout(self._timeout) self.socket.settimeout(self._timeout)
self._connected = True self._connected = True
except socket.error: except socket.error:
@ -71,9 +73,9 @@ class Network():
def update(self, newdata): def update(self, newdata):
if len(self.data) == 0: if len(self.data) == 0:
logger.debug("Setting initial serving dataset (%d OIDs)" % len(newdata)) logger.info("Setting initial serving dataset (%d OIDs)" % len(newdata))
else: else:
logger.debug("Replacing serving dataset (%d OIDs)" % len(newdata)) logger.info("Replacing serving dataset (%d OIDs)" % len(newdata))
self.data = newdata self.data = newdata
self.data_idx = sorted(self.data.keys(), key=lambda k: tuple(int(part) for part in k.split('.'))) self.data_idx = sorted(self.data.keys(), key=lambda k: tuple(int(part) for part in k.split('.')))

View File

@ -141,7 +141,7 @@ def main():
agentx.setup_logging(debug=False) agentx.setup_logging(debug=False)
try: try:
a = MyAgent(server_address='/run/vpp/agentx.sock') a = MyAgent(server_address='localhost:705', period=30)
a.run() a.run()
except Exception as e: except Exception as e:
print("Unhandled exception:", e) print("Unhandled exception:", e)