Delete old managed folders when calling update subcommand with --delete-old option

This should be merged first https://review.openstack.org/#/c/519340/

Change-Id: I8ed1540b024bfcfaad1221d4e4a0da4a56b56c3c
Task: 5834
Story: 2001286
This commit is contained in:
Ayoub Elhamdani 2017-11-13 16:46:54 +01:00 committed by Sorin Sbarnea
parent 3b120c3bab
commit e0f19f39cd
2 changed files with 9 additions and 6 deletions

View File

@ -122,12 +122,11 @@ class JenkinsManager(object):
self._job_format(job_name)))
self.jenkins.create_job(job_name, xml)
def is_job(self, job_name):
# first use cache
if job_name in self.job_list:
return True
def is_job(self, job_name, use_cache=True):
if use_cache:
if job_name in self.job_list:
return True
# if not exists, use jenkins
return self.jenkins.job_exists(job_name)
def get_job_md5(self, job_name):
@ -190,7 +189,9 @@ class JenkinsManager(object):
keep = []
for job in jobs:
# python-jenkins stores the folder and name as 'fullname'
if job['fullname'] not in keep:
# Check if the job was deleted when his parent folder was deleted
if job['fullname'] not in keep and \
self.is_job(job['fullname'], use_cache=False):
if self.is_managed(job['fullname']):
logger.info("Removing obsolete jenkins job {0}"
.format(job['fullname']))

View File

@ -60,11 +60,13 @@ class TestCaseTestJenkinsManager(base.BaseTestCase):
with mock.patch.multiple('jenkins_jobs.builder.JenkinsManager',
get_jobs=mock.DEFAULT,
is_job=mock.DEFAULT,
is_managed=mock.DEFAULT,
delete_job=mock.DEFAULT) as patches:
patches['get_jobs'].return_value = [{'fullname': 'job1'},
{'fullname': 'job2'}]
patches['is_managed'].side_effect = [True, True]
patches['is_job'].side_effect = [True, True]
self.builder.delete_old_managed()
self.assertEqual(patches['delete_job'].call_count, 2)