summaryrefslogtreecommitdiffstats
path: root/jenkins_jobs/builder.py
diff options
context:
space:
mode:
authorMalcolm Brooks <mail@malcolmbrooks.co.uk>2017-08-07 23:02:54 +0100
committerSorin Sbarnea <ssbarnea@redhat.com>2018-04-04 19:01:50 +0100
commitfc1f6fde548e2f3f008aab1ed0f8c85b9a4cd608 (patch)
tree60a19d96c909e50334a9c8c296a2c53ed288bbc2 /jenkins_jobs/builder.py
parenta67c4cab87d133c3067b5696ab2ddc6554dd8fe9 (diff)
downloadpython-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.py30
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