+from jenkinsapi.exceptions import UnknownQueueItem
+
class Invocation(object):
"""
Represents the state and consequences of a single attempt to start a job.
def __init__(self, job):
self.job = job
self.initial_builds = None
+ self.initial_queue_item = None
def __enter__(self):
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
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):
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__)
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))
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: