From b84d28d0d4a26f0042caa99761f1043f38f54d01 Mon Sep 17 00:00:00 2001 From: salimfadhley Date: Sun, 23 Jun 2013 22:53:13 +0100 Subject: [PATCH] refactor continues on invocation; --- jenkinsapi/invocation.py | 11 +++++++++-- jenkinsapi/job.py | 14 ++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/jenkinsapi/invocation.py b/jenkinsapi/invocation.py index d321aba..50faeb0 100644 --- a/jenkinsapi/invocation.py +++ b/jenkinsapi/invocation.py @@ -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): diff --git a/jenkinsapi/job.py b/jenkinsapi/job.py index 68af880..a572e91 100644 --- a/jenkinsapi/job.py +++ b/jenkinsapi/job.py @@ -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: -- 2.7.4