X-Git-Url: http://mmka.chem.univ.gda.pl/gitweb/?a=blobdiff_plain;f=qcg%2Fservice.py;h=99fdf36eee87de7590fcce58dcc758f2aef537f0;hb=586209a600ac5767a48c57cae1f566c0d6aaf48a;hp=787ea38aef81fa4196241e4bd814cc2e545531dd;hpb=368ebd66507c4d45cbc6e77cb3d45624172d0995;p=qcg-portal.git diff --git a/qcg/service.py b/qcg/service.py index 787ea38..99fdf36 100644 --- a/qcg/service.py +++ b/qcg/service.py @@ -5,11 +5,12 @@ from django.db import transaction from django.utils.functional import SimpleLazyObject from django.utils.timezone import now from pyqcg import QCG -from pyqcg.service import Registry +from pyqcg.service import Registry, JobFactory from pyqcg.utils import Credential, TimePeriod, JobStatus, TaskStatus from qcg.models import User, Job, Task, Allocation, NodeInfo +__all__ = ['update_user_data', 'update_job', 'submit', 'cancel', 'clean', 'fetch_resources'] logger = logging.getLogger(__name__) @@ -129,6 +130,22 @@ def update_job(job, proxy): elapsed, job.job_id, elapsed_job, job.tasks.count(), elapsed_tasks, elapsed_py) +def submit(obj, proxy): + ts = time.time() + QCG.start() + cred = Credential(proxy) + + jts = time.time() + result = obj.submit(cred) + elapsed_submit = time.time() - jts + + elapsed = time.time() - ts + elapsed_py = elapsed - elapsed_submit + logger.info('(%.3f) JOB = %s, REMOTE = %.3f, LOCAL = %.3f', elapsed, result.job_id, elapsed_submit, elapsed_py) + + return result + + def cancel(obj, proxy): ts = time.time() QCG.start() @@ -142,7 +159,7 @@ def cancel(obj, proxy): elapsed = time.time() - ts elapsed_py = elapsed - elapsed_cancel - logger.info('(%.3f) OBJ = %s (%.3f), TIME = %.3f', elapsed, obj, elapsed_cancel, elapsed_py) + logger.info('(%.3f) OBJ = %s, REMOTE = %.3f, LOCAL = %.3f', elapsed, obj, elapsed_cancel, elapsed_py) def clean(obj, proxy): @@ -158,4 +175,27 @@ def clean(obj, proxy): elapsed = time.time() - ts elapsed_py = elapsed - elapsed_clean - logger.info('(%.3f) OBJ = %s (%.3f), TIME = %.3f', elapsed, obj, elapsed_clean, elapsed_py) + logger.info('(%.3f) OBJ = %s, REMOTE = %.3f, LOCAL = %.3f', elapsed, obj, elapsed_clean, elapsed_py) + + +def fetch_resources(proxy): + ts = time.time() + QCG.start() + cred = Credential(proxy) + + rts = time.time() + resources = list(JobFactory().resources(False, cred)) + elapsed_query = time.time() - rts + + pts = time.time() + hosts = [res.name for res in resources] + storage = [res.storage for res in resources] + applications = {m for res in resources for m in res.applications} + modules = {m for res in resources for m in res.modules if m.startswith('plgrid')} + elapsed_pp = time.time() - pts + + elapsed = time.time() - ts + logger.info('(%.3f) HOSTS = %d, APPS = %d, MODULES = %d, QUERY = %.3f, PROC = %.3f', + elapsed, len(hosts), len(applications), len(modules), elapsed_query, elapsed_pp) + + return hosts, storage, applications, modules