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:
@ -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')
|
||||||
|
@ -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('.')))
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
Reference in New Issue
Block a user