summaryrefslogtreecommitdiffstats
path: root/jenkins_jobs/builder.py
diff options
context:
space:
mode:
authorZuul <zuul@review.openstack.org>2018-04-12 19:59:13 +0000
committerGerrit Code Review <review@openstack.org>2018-04-12 19:59:13 +0000
commit60602ea938e3b75076ff3d4196d010626107a640 (patch)
tree71b37d855dfe51e7fb90f21d0fb6ce3984d21aae /jenkins_jobs/builder.py
parentd0b438cf253d5d88a6d690d0d9ccaf6bbf95c666 (diff)
parentfc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608 (diff)
downloadpython-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.py30
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