From: Ruslan Lutsenko Date: Tue, 3 Jan 2012 15:45:01 +0000 (+0100) Subject: revision methods added to job and build classes X-Git-Tag: v0.2.23~354^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=629f672d007e43d1a0cb30e448ab29b8c65f71fe;p=tools%2Fpython-jenkinsapi.git revision methods added to job and build classes --- diff --git a/README b/README index 2609e81..0b62cb6 100644 --- a/README +++ b/README @@ -1,3 +1,2 @@ Cloned copy of http://pyjenkinsci.googlecode.com/ - This file was modified by PyCharm 2.0.1 for binding GitHub repository diff --git a/pyjenkinsci/build.py b/pyjenkinsci/build.py index 31236f8..a3799bc 100644 --- a/pyjenkinsci/build.py +++ b/pyjenkinsci/build.py @@ -33,6 +33,10 @@ class Build(JenkinsBase): def get_status(self): return self._data["result"] + def get_revision(self): + for set in self._data["changeSet"]["revisions"]: + return set["revision"] + def get_duration(self): return self._data["duration"] diff --git a/pyjenkinsci/exceptions.py b/pyjenkinsci/exceptions.py index 6a2b6cc..9bc4e7a 100644 --- a/pyjenkinsci/exceptions.py +++ b/pyjenkinsci/exceptions.py @@ -42,3 +42,8 @@ class BadURL(ValueError): """ A URL appears to be broken """ + +class NotFound(Exception): + """ + Resource cannot be found + """ diff --git a/pyjenkinsci/job.py b/pyjenkinsci/job.py index 05b39ae..76ce08e 100644 --- a/pyjenkinsci/job.py +++ b/pyjenkinsci/job.py @@ -5,7 +5,7 @@ from datetime import time from pyjenkinsci.build import Build from pyjenkinsci.jenkinsbase import JenkinsBase -from exceptions import NoBuildData +from exceptions import NoBuildData, NotFound log = logging.getLogger(__name__) @@ -126,6 +126,14 @@ class Job(JenkinsBase): raise NoBuildData( repr(self) ) return dict( ( a["number"], a["url"] ) for a in self._data["builds"] ) + def get_revision_dict(self): + """ + Get dictionary of all revision:buildnumber available + """ + if not self._data.has_key( "builds" ): + raise NoBuildData( repr(self) ) + return dict( ( self.get_build(a["number"] ).get_revision(), a["number"] ) for a in self._data["builds"] ) + def get_build_ids(self): """ Return a sorted list of all good builds as ints. @@ -153,6 +161,18 @@ class Job(JenkinsBase): bn = self.get_last_completed_buildnumber() return self.get_build( bn ) + def get_buildnumber_for_revision(self, revision ): + """ + Returns the buildnumber for a revision + """ + if not isinstance(revision, int): + revision = int(revision) + revmap = self.get_revision_dict() + try: + return revmap[revision] + except KeyError: + raise NotFound("Couldn't find a build with that revision") + def get_build( self, buildnumber ): assert type(buildnumber) == int url = self.get_build_dict()[ buildnumber ]