From 6f425d0e57d85ec20f403df96d9b1b9cd77682cf Mon Sep 17 00:00:00 2001 From: Aleksey Maksimov Date: Fri, 19 Sep 2014 21:04:24 +0800 Subject: [PATCH] Replaced _poll_if_needed with lightweight tree calls --- jenkinsapi/jenkins.py | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/jenkinsapi/jenkins.py b/jenkinsapi/jenkins.py index 5d50863..d0708f5 100644 --- a/jenkinsapi/jenkins.py +++ b/jenkinsapi/jenkins.py @@ -104,8 +104,8 @@ class Jenkins(JenkinsBase): """ Fetch all the build-names on this Jenkins server. """ - self._poll_if_needed() - for info in self._data["jobs"]: + jobs = self.poll(tree='jobs[name,url]')['jobs'] + for info in jobs: yield info["name"], \ Job(info["url"], info["name"], jenkins_obj=self) @@ -114,8 +114,8 @@ class Jenkins(JenkinsBase): Get the jobs information :return url, name """ - self._poll_if_needed() - for info in self._data["jobs"]: + jobs = self.poll(tree='jobs[name,url]')['jobs'] + for info in jobs: yield info["url"], info["name"] def get_job(self, jobname): @@ -176,8 +176,8 @@ class Jenkins(JenkinsBase): return self.jobs.rename(jobname, newjobname) def iterkeys(self): - self._poll_if_needed() - for info in self._data["jobs"]: + jobs = self.poll(tree='jobs[name,color,url]')['jobs'] + for info in jobs: yield info["name"] def iteritems(self): @@ -223,16 +223,17 @@ class Jenkins(JenkinsBase): :param jobname: name of job, str :return: Job obj """ - self._poll_if_needed() - - for info in self._data["jobs"]: + # We have to ask for 'color' here because folder resolution + # relies on it + jobs = self.poll(tree='jobs[name,url,color]')['jobs'] + for info in jobs: if info["name"] == jobname: return Job(info["url"], info["name"], jenkins_obj=self) raise UnknownJob(jobname) def __len__(self): - self._poll_if_needed() - return len(self._data["jobs"]) + jobs = self.poll(tree='jobs[name]')['jobs'] + return len(jobs) def __contains__(self, jobname): """ -- 2.34.1