X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=qcg%2Fservice.py;h=c69eee04013ac310ff15904871124ff0abd9a24d;hb=2e9ac76d9077819ede2eb7f2077cd7e364aa16dc;hp=f950aacc9a9c4057e71fe296d7525692166e6f96;hpb=e70a3ed3dfc6556ddad1bda7accb446ee5136604;p=qcg-portal.git diff --git a/qcg/service.py b/qcg/service.py index f950aac..c69eee0 100644 --- a/qcg/service.py +++ b/qcg/service.py @@ -5,7 +5,6 @@ from django.db import transaction from django.utils.functional import SimpleLazyObject from django.utils.timezone import now from pyqcg import QCG -from pyqcg.description import JobDescription from pyqcg.service import Registry from pyqcg.utils import Credential, TimePeriod, JobStatus, TaskStatus @@ -85,7 +84,7 @@ def update_user_data(user, proxy): @transaction.atomic def update_job(job, proxy): - if job.get_status_display() in [JobStatus.FINISHED, JobStatus.FAILED, JobStatus.CANCELED]: + if job.terminated and job.purged: return ts = time.time() @@ -133,34 +132,33 @@ def update_job(job, proxy): elapsed, job.job_id, elapsed_job, job.tasks.count(), elapsed_tasks, elapsed_py) -def submit_job(params, proxy): +def cancel(obj, proxy): + ts = time.time() QCG.start() - desc = JobDescription(Credential(proxy)) - direct_map = ('env_variables', 'executable', 'arguments', 'note', 'grant', 'hosts', 'properties', 'queue', 'procs', - 'wall_time', 'memory', 'memory_per_slot', 'modules', 'input', 'stage_in', 'native', 'notify', - 'preprocess', 'postprocess', 'persistent') + qcg_obj = obj.qcg_job if isinstance(obj, Job) else obj.qcg_task + qcg_obj.credential = Credential(proxy) + + jts = time.time() + qcg_obj.cancel() + elapsed_cancel = time.time() - jts - for name in direct_map: - if params[name]: - setattr(desc, name, params[name]) + elapsed = time.time() - ts + elapsed_py = elapsed - elapsed_cancel + logger.info('(%.3f) OBJ = %s (%.3f), TIME = %.3f', elapsed, obj, elapsed_cancel, elapsed_py) - if params['application']: - desc.set_application(*params['application']) - if params['nodes']: - desc.set_nodes(*params['nodes']) - if params['reservation']: - desc.set_reservation(params['reservation']) - if params['watch_output']: - desc.set_watch_output(params['watch_output'], params['watch_output_pattern']) - # TODO script - # TODO monitoring - # for prop in direct_map + ('application', 'nodes', 'env_variables', 'reservation', 'watch_output'): - # print prop, type(getattr(desc, prop)), repr(getattr(desc, prop)) +def clean(obj, proxy): + ts = time.time() + QCG.start() - # print desc.xml_description + qcg_obj = obj.qcg_job if isinstance(obj, Job) else obj.qcg_task + qcg_obj.credential = Credential(proxy) - job = desc.submit() + jts = time.time() + qcg_obj.clean() + elapsed_clean = time.time() - jts - return job.job_id + elapsed = time.time() - ts + elapsed_py = elapsed - elapsed_clean + logger.info('(%.3f) OBJ = %s (%.3f), TIME = %.3f', elapsed, obj, elapsed_clean, elapsed_py)