diff options
author | Zuul <zuul@review.openstack.org> | 2018-04-12 19:59:13 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2018-04-12 19:59:13 +0000 |
commit | 60602ea938e3b75076ff3d4196d010626107a640 (patch) | |
tree | 71b37d855dfe51e7fb90f21d0fb6ce3984d21aae /jenkins_jobs/builder.py | |
parent | d0b438cf253d5d88a6d690d0d9ccaf6bbf95c666 (diff) | |
parent | fc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608 (diff) | |
download | python-jenkins-job-builder-60602ea938e3b75076ff3d4196d010626107a640.tar.gz python-jenkins-job-builder-60602ea938e3b75076ff3d4196d010626107a640.tar.xz python-jenkins-job-builder-60602ea938e3b75076ff3d4196d010626107a640.zip |
Merge "Add 'existing-only' argument for update subcommand"
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 b2484ce0..d446f386 100644 --- a/jenkins_jobs/builder.py +++ b/jenkins_jobs/builder.py @@ -241,8 +241,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)) @@ -294,6 +300,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 @@ -396,7 +412,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)) @@ -439,6 +455,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 |