This is an automated email from the git hooks/post-receive script. x2go pushed a commit to branch master in repository x2gobroker. commit db17a98b723fb5bcc62b00f904903bb5abac4ba5 Author: Mike Gabriel <mike.gabriel@das-netzwerkteam.de> Date: Mon Mar 30 13:22:05 2015 +0200 rename checkload() -> check_load in agent.py/loadchecker.py, handle reported errors in loadchecker.check_load() --- x2gobroker/agent.py | 4 ++-- x2gobroker/loadchecker.py | 41 +++++++++++++++++++++++++++-------------- 2 files changed, 29 insertions(+), 16 deletions(-) diff --git a/x2gobroker/agent.py b/x2gobroker/agent.py index aa73a87..203b66c 100644 --- a/x2gobroker/agent.py +++ b/x2gobroker/agent.py @@ -400,7 +400,7 @@ def find_busy_servers(username, remote_agent=None, logger=None, **kwargs): tasks['findbusyservers'] = find_busy_servers -def checkload(remote_agent=None, logger=None, **kwargs): +def check_load(remote_agent=None, logger=None, **kwargs): """\ Query X2Go Broker Agent for a summary of system load specific parameters. @@ -440,7 +440,7 @@ def checkload(remote_agent=None, logger=None, **kwargs): pass return load_factor -tasks['checkload'] = checkload +tasks['checkload'] = check_load def add_authorized_key(username, pubkey_hash, authorized_keys_file='%h/.x2go/authorized_keys', remote_agent=None, logger=None, **kwargs): """\ diff --git a/x2gobroker/loadchecker.py b/x2gobroker/loadchecker.py index 61ada88..435e53e 100644 --- a/x2gobroker/loadchecker.py +++ b/x2gobroker/loadchecker.py @@ -29,49 +29,62 @@ import x2gobroker.config from x2gobroker.loggers import logger_broker -def checkload(backend, profile_id, hostname=None): +def check_load(backend, profile_id, hostname=None): s = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) - logger_broker.debug('loadchecker.checkload(): connecting to load checker service socket {socket}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET)) + logger_broker.debug('loadchecker.check_load(): connecting to load checker service socket {socket}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET)) try: s.connect(x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET) except socket.error, e: - logger_broker.error('loadchecker.checkload(): failure when connecting to the load checker service socket {socket}: {errmsg}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET, errmsg=str(e))) + logger_broker.error('loadchecker.check_load(): failure when connecting to the load checker service socket {socket}: {errmsg}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET, errmsg=str(e))) if hostname is not None: load_factor = 'LOAD-UNAVAILABLE' - logger_broker.debug('loadchecker.checkload(): sending backend={backend}, profile_id={profile_id}, hostname={hostname} to load checker service'.format(backend=backend, profile_id=profile_id, hostname=hostname)) + logger_broker.debug('loadchecker.check_load(): sending backend={backend}, profile_id={profile_id}, hostname={hostname} to load checker service'.format(backend=backend, profile_id=profile_id, hostname=hostname)) try: s.send('{backend}\r{profile_id}\r{hostname}\n'.format(backend=backend, profile_id=profile_id, hostname=hostname)) load_factor = s.recv(1024) s.close() except socket.error, e: - logger_broker.error('loadchecker.checkload(): failure when sending data to the load checker service socket {socket}: {errmsg}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET, errmsg=str(e))) + logger_broker.error('loadchecker.check_load(): failure when sending data to the load checker service socket {socket}: {errmsg}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET, errmsg=str(e))) if load_factor.startswith('LOAD-UNAVAILABLE'): - logger_broker.warning('loadchecker.checkload(): load unavailable for backend={backend}, profile_id={profile_id}, hostname={hostname}'.format(backend=backend, profile_id=profile_id, hostname=hostname)) - return None + logger_broker.warning('loadchecker.check_load(): load unavailable for backend={backend}, profile_id={profile_id}, hostname={hostname}'.format(backend=backend, profile_id=profile_id, hostname=hostname)) + return 'LOAD-UNAVAILABLE' + + try: + load_factor = long(load_factor) + except ValueError: + logger_broker.warning('loadchecker.check_load(): load data for backend={backend}, profile_id={profile_id}, hostname={hostname} contained bogus (»{lf}«)'.format(backend=backend, profile_id=profile_id, hostname=hostname, lf=load_factor)) + return 'LOAD-DATA-BOGUS' - logger_broker.info('loadchecker.checkload(): load factor for backend={backend}, profile_id={profile_id}, hostname={hostname} is: {lf}'.format(backend=backend, profile_id=profile_id, hostname=hostname, lf=load_factor)) + logger_broker.info('loadchecker.check_load(): load factor for backend={backend}, profile_id={profile_id}, hostname={hostname} is: {lf}'.format(backend=backend, profile_id=profile_id, hostname=hostname, lf=load_factor)) return load_factor else: raw_output = "" - logger_broker.debug('loadchecker.checkload(): sending backend={backend}, profile_id={profile_id} to load checker service'.format(backend=backend, profile_id=profile_id, hostname=hostname)) + logger_broker.debug('loadchecker.check_load(): sending backend={backend}, profile_id={profile_id} to load checker service'.format(backend=backend, profile_id=profile_id, hostname=hostname)) try: s.send('{backend}\r{profile_id}\r\n'.format(backend=backend, profile_id=profile_id)) raw_output = s.recv(1024) s.close() except socket.error, e: - logger_broker.error('loadchecker.checkload(): failure when sending data to the load checker service socket {socket}: {errmsg}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET, errmsg=str(e))) + logger_broker.error('loadchecker.check_load(): failure when sending data to the load checker service socket {socket}: {errmsg}'.format(socket=x2gobroker.defaults.X2GOBROKER_LOADCHECKER_SOCKET, errmsg=str(e))) load_factors = {} items = raw_output.split('\n') for item in items: if ":" in item: key, val = item.split(':', 1) - load_factors[key] = val - - logger_broker.info('loadchecker.checkload(): load metrics for backend={backend}, profile_id={profile_id} are: {lf}'.format(backend=backend, profile_id=profile_id, hostname=hostname, lf=load_factors)) + try: + if val not in ('HOST-UNREACHABLE', 'LOAD-UNAVAILABLE', 'LOAD-DATA-BOGUS'): + load_factors[key] = long(val) + else: + load_factors[key] = val + except ValueError: + logger_broker.warning('loadchecker.check_load(): load data for backend={backend}, profile_id={profile_id}, hostname={hostname} contained bogus (»{lf}«)'.format(backend=backend, profile_id=profile_id, hostname=hostname, lf=val)) + load_factors[key] = 'LOAD-DATA-BOGUS' + + logger_broker.info('loadchecker.check_load(): load metrics for backend={backend}, profile_id={profile_id} are: {lf}'.format(backend=backend, profile_id=profile_id, hostname=hostname, lf=load_factors)) return load_factors @@ -176,7 +189,7 @@ class LoadChecker(threading.Thread): self.server_load[backend][profile_id] = {} remote_agents = self.brokers[backend].get_all_remote_agents(profile_id) for remote_agent in remote_agents: - _load_factor = x2gobroker.agent.checkload(remote_agent, logger=self.logger) + _load_factor = x2gobroker.agent.check_load(remote_agent, logger=self.logger) num_queries += 1 if _load_factor is None: if self.logger: self.logger.info('LoadChecker.loadchecker(): backend={backend}, profile_id={profile_id}, hostname={hostname}, load factor not available'.format(backend=backend, profile_id=profile_id, hostname=remote_agent[u'hostname'])) -- Alioth's /srv/git/code.x2go.org/x2gobroker.git//..//_hooks_/post-receive-email on /srv/git/code.x2go.org/x2gobroker.git