[X2Go-Commits] [x2gobroker] 02/05: rename checkload() -> check_load in agent.py/loadchecker.py, handle reported errors in loadchecker.check_load()

git-admin at x2go.org git-admin at x2go.org
Mon Mar 30 13:28:01 CEST 2015


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 at 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


More information about the x2go-commits mailing list