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