Merge pull request #236 from jvale/job_folders_support
authorAleksey Maksimov <ctpeko3a@gmail.com>
Fri, 31 Jan 2014 01:45:51 +0000 (17:45 -0800)
committerAleksey Maksimov <ctpeko3a@gmail.com>
Fri, 31 Jan 2014 01:45:51 +0000 (17:45 -0800)
Add support for Job Folders (CloudBees Folders Plugin).

1  2 
jenkinsapi/jenkinsbase.py
jenkinsapi_tests/unittests/test_jenkins.py

index 052802fdfed4f75ec0e7cfd01267ee3a3d196cbc,8b6f321cd184dbc8d7faf4b0a98cde639fd32477..9803f771808ea445a2560f77545b1db4f5317088
@@@ -65,9 -66,29 +67,29 @@@ class JenkinsBase(object)
          try:
              return ast.literal_eval(response.text)
          except Exception:
 -            log.exception('Inappropriate content found at %s', url)
 +            logging.exception('Inappropriate content found at %s', url)
              raise JenkinsAPIException('Cannot parse %s' % response.content)
  
+     def resolve_job_folders(self, jobs):
+         for job in jobs:
+             if 'color' not in job.keys():
+                 jobs.remove(job)
+                 jobs += self.process_job_folder(job)
+         return jobs
+     def process_job_folder(self, folder):
+         data = self.get_data(self.python_api_url(folder['url']))
+         result = []
+         for job in data.get('jobs', []):
+             if 'color' not in job.keys():
+                 result += self.process_job_folder(job)
+             else:
+                 result.append(job)
+         return result
      @classmethod
      def python_api_url(cls, url):
          if url.endswith(config.JENKINS_API):