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):
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.addHandler(NullHandler())
self._servingset = DataSet()
self._workingset = DataSet()
self._lastupdate = 0
self._update_freq = freq
self._update_period = period # Seconds
self._net = Network(server_address = server_address)
@ -55,14 +55,17 @@ class Agent(object):
self.logger.info('Opening AgentX connection')
self._net.start(self._oid_list)
if time.time() - self._lastupdate > self._update_freq:
if time.time() - self._lastupdate > self._update_period:
self._update()
try:
self._net.run()
except Exception as 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):
self.logger.debug('Stopping')

View File

@ -53,7 +53,9 @@ class Network():
self.socket.connect(self._server_address)
else:
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._connected = True
except socket.error:
@ -71,9 +73,9 @@ class Network():
def update(self, newdata):
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:
logger.debug("Replacing serving dataset (%d OIDs)" % len(newdata))
logger.info("Replacing serving dataset (%d OIDs)" % len(newdata))
self.data = newdata
self.data_idx = sorted(self.data.keys(), key=lambda k: tuple(int(part) for part in k.split('.')))