def get_status(self):\r
return self._data["result"]\r
\r
+ def get_revision(self):\r
+ for set in self._data["changeSet"]["revisions"]:\r
+ return set["revision"]\r
+\r
def get_duration(self):\r
return self._data["duration"]\r
\r
from pyjenkinsci.build import Build\r
from pyjenkinsci.jenkinsbase import JenkinsBase\r
\r
-from exceptions import NoBuildData\r
+from exceptions import NoBuildData, NotFound\r
\r
log = logging.getLogger(__name__)\r
\r
raise NoBuildData( repr(self) )\r
return dict( ( a["number"], a["url"] ) for a in self._data["builds"] )\r
\r
+ def get_revision_dict(self):\r
+ """\r
+ Get dictionary of all revision:buildnumber available\r
+ """\r
+ if not self._data.has_key( "builds" ):\r
+ raise NoBuildData( repr(self) )\r
+ return dict( ( self.get_build(a["number"] ).get_revision(), a["number"] ) for a in self._data["builds"] ) \r
+\r
def get_build_ids(self):\r
"""\r
Return a sorted list of all good builds as ints.\r
bn = self.get_last_completed_buildnumber()\r
return self.get_build( bn )\r
\r
+ def get_buildnumber_for_revision(self, revision ):\r
+ """\r
+ Returns the buildnumber for a revision\r
+ """\r
+ if not isinstance(revision, int):\r
+ revision = int(revision)\r
+ revmap = self.get_revision_dict()\r
+ try:\r
+ return revmap[revision]\r
+ except KeyError:\r
+ raise NotFound("Couldn't find a build with that revision")\r
+\r
def get_build( self, buildnumber ):\r
assert type(buildnumber) == int\r
url = self.get_build_dict()[ buildnumber ]\r