changeset 66:df40a4eb7553

Use the standard {{{platform}}} module for reporting of system info by slaves. Closes #6.
author cmlenz
date Tue, 28 Jun 2005 23:15:55 +0000
parents 5f9bcb4966b7
children 6ffa99b442bf
files bitten/master.py bitten/slave.py
diffstat 2 files changed, 18 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/bitten/master.py
+++ b/bitten/master.py
@@ -121,6 +121,10 @@
         self.name = None
 
     def handle_disconnect(self):
+        if self.name is None:
+            # Slave didn't successfully register before disconnecting
+            return
+
         del self.master.slaves[self.name]
 
         for build in Build.select(self.master.env, slave=self.name,
@@ -143,10 +147,11 @@
             for child in elem.children():
                 if child.name == 'platform':
                     platform = child.gettext()
+                    processor = child.attr.get('processor')
                 elif child.name == 'os':
                     os = child.gettext()
-                    os_family = child.attr['family']
-                    os_version = child.attr['version']
+                    os_family = child.attr.get('family')
+                    os_version = child.attr.get('version')
 
             self.name = elem.attr['name']
             self.master.slaves[self.name] = self
--- a/bitten/slave.py
+++ b/bitten/slave.py
@@ -20,7 +20,7 @@
 
 import logging
 import os
-import sys
+import platform
 import tempfile
 import time
 
@@ -64,13 +64,16 @@
                 raise beep.TerminateSession, 'Registration failed!'
             logging.info('Registration successful')
 
-        sysname, nodename, release, version, machine = os.uname()
+        
+        system, node, release, version, machine, processor = platform.uname()
+        system, release, version = platform.system_alias(system, release,
+                                                         version)
         if self.session.name is not None:
-            nodename = self.session.name
-        logging.info('Registering with build master as %s', nodename)
-        xml = xmlio.Element('register', name=nodename)[
-            xmlio.Element('platform')[machine],
-            xmlio.Element('os', family=os.name, version=release)[sysname]
+            node = self.session.name
+        logging.info('Registering with build master as %s', node)
+        xml = xmlio.Element('register', name=node)[
+            xmlio.Element('platform', processor=processor)[machine],
+            xmlio.Element('os', family=os.name, version=release)[system]
         ]
         self.channel.send_msg(beep.MIMEMessage(xml), handle_reply)
 
@@ -149,6 +152,7 @@
                                         description=step.description)[e]
                     self.channel.send_ans(msgno, beep.MIMEMessage(xml))
 
+            logging.info('Build completed')
             self.channel.send_nul(msgno)
 
         except InvalidRecipeError, e:
Copyright (C) 2012-2017 Edgewall Software