summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hutchings <ben.hutchings@codethink.co.uk>2020-09-15 00:48:29 +0100
committerBen Hutchings <ben.hutchings@codethink.co.uk>2020-09-15 01:59:35 +0100
commitdb9192dbb033df2f306b87e0e765f3142896d013 (patch)
tree6c90c1c7c65b0b03ecb33bb0fc7e12368b246e10
parente95db1291a4895da6dc53b28afbdbbbcaa73dec1 (diff)
downloadlorry-controller-db9192dbb033df2f306b87e0e765f3142896d013.tar.gz
lorry-controller-remove-old-jobs: Inline methods called by process_args()
In order to filter jobs earlier, we need to have a single loop over jobs in process_args() instead of in multiple functions that it calls. Prepare for that by inlining the methods that it calls directly. Related to #18.
-rwxr-xr-xlorry-controller-remove-old-jobs36
1 files changed, 15 insertions, 21 deletions
diff --git a/lorry-controller-remove-old-jobs b/lorry-controller-remove-old-jobs
index a69e505..d31b540 100755
--- a/lorry-controller-remove-old-jobs
+++ b/lorry-controller-remove-old-jobs
@@ -70,9 +70,21 @@ class OldJobRemover(cliapp.Application):
logging.info('Removing old jobs from Lorry Controller STATEDB')
job_ids = self.list_jobs()
- job_infos = self.get_job_infos(job_ids)
- ids_of_jobs_to_remove = self.select_for_removal(job_infos)
- self.remove_jobs(ids_of_jobs_to_remove)
+
+ job_infos = []
+ for job_id in job_ids:
+ try:
+ job_infos.append(self.get_job_info(job_id))
+ except urllib.error.HTTPError as e:
+ logging.warning(
+ 'Trouble getting job info for job %s: %s' %
+ (job_id, str(e)))
+
+ ids_of_jobs_to_remove = \
+ [job_info for job_info in job_infos if self.is_old(job_info)]
+
+ for job_info in ids_of_jobs_to_remove:
+ self.remove_job(job_info.job_id)
def list_jobs(self):
data = self.get('/1.0/list-jobs')
@@ -93,17 +105,6 @@ class OldJobRemover(cliapp.Application):
parts = (scheme, netloc, path, query, fragment)
return urllib.parse.urlunsplit(parts)
- def get_job_infos(self, job_ids):
- job_infos = []
- for job_id in job_ids:
- try:
- job_infos.append(self.get_job_info(job_id))
- except urllib.error.HTTPError as e:
- logging.warning(
- 'Trouble getting job info for job %s: %s' %
- (job_id, str(e)))
- return job_infos
-
def get_job_info(self, job_id):
data = self.get('/1.0/job/%s' % job_id)
obj = json.loads(data.decode('utf-8'))
@@ -117,9 +118,6 @@ class OldJobRemover(cliapp.Application):
def parse_timestamp(self, timestamp):
return time.mktime(time.strptime(timestamp, '%Y-%m-%d %H:%M:%S UTC'))
- def select_for_removal(self, job_infos):
- return [job_info for job_info in job_infos if self.is_old(job_info)]
-
def is_old(self, job_info):
if job_info.exit_timestamp is None:
return False
@@ -132,10 +130,6 @@ class OldJobRemover(cliapp.Application):
return self.settings['debug-now']
return time.time()
- def remove_jobs(self, job_infos):
- for job_info in job_infos:
- self.remove_job(job_info.job_id)
-
def remove_job(self, job_id):
logging.info('Removing job %s', job_id)
self.post('/1.0/remove-job', 'job_id=%s' % job_id)