diff options
author | Malcolm Brooks <mail@malcolmbrooks.co.uk> | 2017-08-07 23:02:54 +0100 |
---|---|---|
committer | Sorin Sbarnea <ssbarnea@redhat.com> | 2018-04-04 19:01:50 +0100 |
commit | fc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608 (patch) | |
tree | 60a19d96c909e50334a9c8c296a2c53ed288bbc2 /jenkins_jobs/builder.py | |
parent | a67c4cab87d133c3067b5696ab2ddc6554dd8fe9 (diff) | |
download | python-jenkins-job-builder-fc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608.tar.gz python-jenkins-job-builder-fc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608.tar.xz python-jenkins-job-builder-fc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608.zip |
Add 'existing-only' argument for update subcommand
Additional argument for the update subcommand to allow user to update
only jobs currently installed on the Jenkins server and managed by
this tool.
Change-Id: I4b0e997df01057f89896b8caa27dc00b5ca077df
Diffstat (limited to 'jenkins_jobs/builder.py')
-rw-r--r-- | jenkins_jobs/builder.py | 30 |
1 files changed, 28 insertions, 2 deletions
diff --git a/jenkins_jobs/builder.py b/jenkins_jobs/builder.py index abed1d40..39bc1159 100644 --- a/jenkins_jobs/builder.py +++ b/jenkins_jobs/builder.py @@ -230,8 +230,14 @@ class JenkinsManager(object): logger.debug("'{0}' has not changed".format(job.name)) return changed + def exists(self, job): + exists = self.jenkins.job_exists(job.name) + if not exists: + logger.debug("'{0}' does not currently exist".format(job.name)) + return exists + def update_jobs(self, xml_jobs, output=None, n_workers=None, - config_xml=False): + existing_only=None, config_xml=False): orig = time.time() logger.info("Number of jobs generated: %d", len(xml_jobs)) @@ -283,6 +289,16 @@ class JenkinsManager(object): logging.debug("Filtered for changed jobs in %ss", (time.time() - step)) + if existing_only: + # Filter out the jobs not already in the cache + logging.debug('Filtering %d jobs for existing jobs', + len(jobs)) + step = time.time() + jobs = [job for job in jobs + if self.exists(job)] + logging.debug("Filtered for existing jobs in %ss", + (time.time() - step)) + if not jobs: return [], 0 @@ -383,7 +399,7 @@ class JenkinsManager(object): self.jenkins.create_view(view_name, xml) def update_views(self, xml_views, output=None, n_workers=None, - config_xml=False): + existing_only=None, config_xml=False): orig = time.time() logger.info("Number of views generated: %d", len(xml_views)) @@ -426,6 +442,16 @@ class JenkinsManager(object): logging.debug("Filtered for changed views in %ss", (time.time() - step)) + if existing_only: + # Filter out the jobs not already in the cache + logging.debug('Filtering %d views for existing jobs', + len(views)) + step = time.time() + views = [view for view in views + if self.exists(view)] + logging.debug("Filtered for existing views in %ss", + (time.time() - step)) + if not views: return [], 0 |