'installer_ip': args["installer_ip"],
'pod_name': args["pod_name"],
'suite_name': args["suite_name"],
- 'deadline': args["deadline"],
+ 'max-minutes': args["max-minutes"],
'type': args["type"],
'start-time': str(datetime.now()),
'end-time': None,
def delete_job(job_id):
if job_id in jobs.keys():
- jobs[job_id]['end_time'] = datetime.now()
+ jobs[job_id]['end_time'] = str(datetime.now())
jobs[job_id]['state'] = 'terminated'
return True
else:
return jobs[job_id]
else:
return None
+
+
+def finish_job(job_id, state):
+ jobs[job_id]['end-time'] = str(datetime.now())
+ jobs[job_id]['state'] = state
+
+
+def update_job_state_detail(job_id, state_detail):
+ jobs[job_id][state_detail] = state_detail
+
+
+def update_job_result(job_id, result):
+ jobs[job_id][result] = result
+
+
+def is_job_timeout(job_id):
+ period = datetime.now() - datetime.strptime(jobs[job_id]['start_time'],
+ "%Y-%m-%d %H:%M:%S.%f")
+ return True if jobs[job_id]['max-minutes'] * 60 < period.total_seconds()\
+ else False
resource_fields = {
'installer_type': fields.String,
'installer_ip': fields.String,
- 'deadline': fields.Integer,
+ 'max-minutes': fields.Integer,
'pod_name': fields.String,
'suite_name': fields.String,
'type': fields.String
"installer_ip": The installer ip of the pod,
-"deadline": If specified, the maximum duration in minutes
+"max-minutes": If specified, the maximum duration in minutes
for any single test iteration, default is '10',
"pod_name": If specified, the Pod name, default is 'default',
parser = reqparse.RequestParser()
parser.add_argument('installer_type', type=str, required=True, help='Installer_type is required')
parser.add_argument('installer_ip', type=str, required=True, help='Installer_ip is required')
- parser.add_argument('deadline', type=int, required=False, default=10, help='dealine should be integer')
+ parser.add_argument('max-minutes', type=int, required=False, default=10, help='max-minutes should be integer')
parser.add_argument('pod_name', type=str, required=False, default='default', help='pod_name should be string')
parser.add_argument('suite_name', type=str, required=False, default='all', help='suite_name should be string')
parser.add_argument('type', type=str, required=False, default='BM', help='type should be BM, VM and ALL')