extras-buildsys/common Commands.py,1.1,1.2 HTTPServer.py,1.13,1.14

Daniel Williams (dcbw) fedora-extras-commits at redhat.com
Wed May 3 04:04:30 UTC 2006


Author: dcbw

Update of /cvs/fedora/extras-buildsys/common
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv15275/common

Modified Files:
	Commands.py HTTPServer.py 
Log Message:
2006-05-03  Dan Williams  <dcbw at redhat.com>

    More builder/server comm rework;
    - Add job status command
    - implement repo unlock command
    - fix bugs




Index: Commands.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/common/Commands.py,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Commands.py	28 Apr 2006 03:17:40 -0000	1.1
+++ Commands.py	3 May 2006 04:04:28 -0000	1.2
@@ -28,6 +28,12 @@
 CMD_NAME_SLOTS = "Slots"
 CMD_NAME_NEW_JOB_REQ = "NewJob"
 CMD_NAME_NEW_JOB_ACK = "NewJobAck"
+CMD_NAME_UNLOCK_REPO = "UnlockRepo"
+CMD_NAME_JOB_FILES_REQ = "JobFiles"
+CMD_NAME_JOB_FILES_ACK = "JobFilesAck"
+CMD_NAME_BUILDING_JOBS = "BuildingJobs"
+CMD_NAME_JOB_STATUS_REQ = "JobStatus"
+CMD_NAME_JOB_STATUS_ACK = "JobStatusAck"
 
 
 class SequenceGenerator(object):
@@ -119,6 +125,8 @@
             cmd = PlgCommandNewJobReq._deserialize(args)
         elif name == CMD_NAME_NEW_JOB_ACK:
             cmd = PlgCommandNewJobAck._deserialize(args)
+        elif name == CMD_NAME_BUILDING_JOBS:
+            cmd = PlgCommandBuildingJobs._deserialize(args)
 
         # If command creation was successful, set the sequence
         # number from the command stream on the command.  We don't
@@ -376,3 +384,138 @@
     def message(self):
         return self._msg
 
+
+class PlgCommandUnlockRepo(PlgCommand):
+    def __init__(self, archjob_id, seq=0):
+        PlgCommand.__init__(self, CMD_NAME_UNLOCK_REPO, seq)
+        self._archjob_id = archjob_id
+
+    def _deserialize(args):
+        try:
+            archjob_id = args['archjob_id']
+        except ValueError, TypeError:
+            raise ValueError("No 'archjob_id' argument found.")
+        return PlgCommandUnlockRepo(archjob_id)
+
+    _deserialize = staticmethod(_deserialize)
+
+    def serialize(self):
+        args = {}
+        args['archjob_id'] = self._archjob_id
+        return PlgCommand._serialize(self, args)
+
+    def archjob_id(self):
+        return self._archjob_id
+
+    def __str__(self):
+        return "%s(seq: %d, archjob_id: %s)" % (self._name, self._seq, self._archjob_id)
+
+
+class PlgCommandBuildingJobs(PlgCommand):
+    def __init__(self, seq=0):
+        PlgCommand.__init__(self, CMD_NAME_BUILDING_JOBS, seq)
+        self._jobs = []
+
+    def _deserialize(args):
+        try:
+            jobs = args['jobs']
+        except ValueError, TypeError:
+            raise ValueError("No 'jobs' argument found.")
+
+        # Basic sanity
+        if type(jobs) != type([]):
+            print "Jobs is type %s" % type(jobs)
+            raise ValueError("jobs wasn't a list.")
+        try:
+            for job in jobs:
+                archjob_id = job['archjob_id']
+                status = job['status']
+        except KeyError, e:
+            raise ValueError("Required item '%s' wasn't found in jobs item.")
+
+        cmd = PlgCommandBuildingJobs()
+        for job in jobs:
+            cmd.add_job(job['archjob_id'], job['status'])
+        return cmd
+
+    _deserialize = staticmethod(_deserialize)
+
+    def serialize(self):
+        args = {}
+        args['jobs'] = self._jobs
+        return PlgCommand._serialize(self, args)
+
+    def jobs(self):
+        return self._jobs
+
+    def add_job(self, archjob_id, status):
+        self._jobs.append({'archjob_id': archjob_id, 'status': status})
+
+    def get_job(self, job):
+        return (job['archjob_id'], job['status'])
+
+    def __str__(self):
+        return "%s(seq: %d, jobs: %s)" % (self._name, self._seq, self._jobs)
+
+
+class PlgCommandJobStatus(PlgCommand):
+
+    _need_ack = True
+
+    def __init__(self, archjob_id, seq=0):
+        PlgCommand.__init__(self, CMD_NAME_JOB_STATUS_REQ, seq)
+        self._archjob_id = archjob_id
+
+    def _deserialize(args):
+        try:
+            archjob_id = args['archjob_id']
+        except KeyError, TypeError:
+            raise ValueError("No 'archjob_id' argument found.")
+
+        return PlgCommandJobStatusReq(archjob_id)
+
+    _deserialize = staticmethod(_deserialize)
+
+    def serialize(self):
+        args = {}
+        args['archjob_id'] = self._archjob_id
+        return PlgCommand._serialize(self, args)
+
+    def archjob_id(self):
+        return self._archjob_id
+
+    def __str__(self):
+        return "%s(seq: %d, target_dict: %s, srpm_url: %s)" % (self._name, self._seq, self._archjob_id)
+
+
+class PlgCommandJobStatusAck(PlgCommandAck):
+    def __init__(self, archjob_id, status, req_seq, seq=0):
+        PlgCommandAck.__init__(self, CMD_NAME_JOB_STATUS_ACK, req_seq, seq)
+        self._archjob_id = archjob_id
+        self._status = status
+
+    def _deserialize(args):
+        try:
+            archjob_id = args['archjob_id']
+        except KeyError, TypeError:
+            raise ValueError("No 'archjob_id' argument found.")
+        try:
+            status = args['status']
+        except KeyError, TypeError:
+            raise ValueError("No 'status' argument found.")
+        req_seq = PlgCommandAck._deserialize_acked_seq(args)
+        return PlgCommandJobStatusAck(archjob_id, status, req_seq)
+
+    _deserialize = staticmethod(_deserialize)
+
+    def serialize(self):
+        args = {}
+        args['archjob_id'] = self._archjob_id
+        args['status'] = self._status
+        return PlgCommandAck._serialize(self, args)
+
+    def archjob_id(self):
+        return self._archjob_id
+
+    def status(self):
+        return self._status


Index: HTTPServer.py
===================================================================
RCS file: /cvs/fedora/extras-buildsys/common/HTTPServer.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- HTTPServer.py	28 Apr 2006 03:17:40 -0000	1.13
+++ HTTPServer.py	3 May 2006 04:04:28 -0000	1.14
@@ -182,12 +182,12 @@
     def stop(self):
         self._server.stop()
         t = time.time()
-        while not self._stopped:
-            try:
+        try:
+            while not self._stopped:
                 if time.time() > t + 2:
                     break
-            except KeyboardInterrupt:
-                pass
+        except KeyboardInterrupt:
+            pass
 
 
 ###########################################################




More information about the fedora-extras-commits mailing list