diff options
author | Ben Hutchings <ben.hutchings@codethink.co.uk> | 2020-09-15 00:48:29 +0100 |
---|---|---|
committer | Ben Hutchings <ben.hutchings@codethink.co.uk> | 2020-09-15 01:59:35 +0100 |
commit | db9192dbb033df2f306b87e0e765f3142896d013 (patch) | |
tree | 6c90c1c7c65b0b03ecb33bb0fc7e12368b246e10 | |
parent | e95db1291a4895da6dc53b28afbdbbbcaa73dec1 (diff) | |
download | lorry-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-x | lorry-controller-remove-old-jobs | 36 |
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) |