refactor continues on invocation;
authorsalimfadhley <sal@stodge.org>
Sun, 23 Jun 2013 21:53:13 +0000 (22:53 +0100)
committersalimfadhley <sal@stodge.org>
Sun, 23 Jun 2013 21:53:13 +0000 (22:53 +0100)
jenkinsapi/invocation.py
jenkinsapi/job.py

index d321aba2bd60d17cc10511cfad6572584b80f429..50faeb08455d3466072d180e7997551d69a133c1 100644 (file)
@@ -1,3 +1,5 @@
+from jenkinsapi.exceptions import UnknownQueueItem
+
 class Invocation(object):
     """
     Represents the state and consequences of a single attempt to start a job.
@@ -11,6 +13,7 @@ class Invocation(object):
     def __init__(self, job):
         self.job = job
         self.initial_builds = None
+        self.initial_queue_item = None
 
 
     def __enter__(self):
@@ -20,6 +23,11 @@ class Invocation(object):
         self.job.poll()
         self.initial_builds = set(self.job.get_build_dict().keys())
 
+        try:
+            self.initial_queue_item = self.job.get_queue_item()
+        except UnknownQueueItem:
+            pass
+
     def __exit__(self, type, value, traceback):
         """
         Finish watching the job - it will track which new queue items or builds have
@@ -28,8 +36,7 @@ class Invocation(object):
         self.job.poll()
         newly_created_builds = set(self.job.get_build_dict().keys())
 
-        import ipdb
-        ipdb.set_trace() 
+        queueItem = self.job.get_queue_item()
 
 
     def get_build_number(self):
index 68af88036f58b817f783ac954ea239767ae58459..a572e91262bbade5e90aecef8afd5f4a490f1913 100644 (file)
@@ -7,10 +7,9 @@ from time import sleep
 from jenkinsapi.build import Build
 from jenkinsapi.invocation import Invocation
 from jenkinsapi.jenkinsbase import JenkinsBase
-from jenkinsapi import exceptions
+from jenkinsapi.queue import QueueItem
 from jenkinsapi.mutable_jenkins_thing import MutableJenkinsThing
-
-from jenkinsapi.exceptions import NoBuildData, NotFound, NotInQueue, WillNotBuild
+from jenkinsapi.exceptions import NoBuildData, NotFound, NotInQueue, WillNotBuild, UnknownQueueItem
 
 log = logging.getLogger(__name__)
 
@@ -101,7 +100,6 @@ class Job(JenkinsBase, MutableJenkinsThing):
             build_params.items()) or {}  # Via POSTed JSON
         params = {}  # Via Get string
 
-
         with invocation:
             if self.is_queued():
                 raise WillNotBuild('%s is already queued' % repr(self))
@@ -278,6 +276,14 @@ class Job(JenkinsBase, MutableJenkinsThing):
         self.poll()
         return self._data["inQueue"]
 
+    def get_queue_item(self):
+        """
+        Return a QueueItem if this object is in a queue, otherwise raise an exception
+        """
+        if not self.is_queued():
+            raise UnknownQueueItem()
+        return QueueItem(self.jenkins, **self._data['queueItem'])
+
     def is_running(self):
         self.poll()
         try: