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__)
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()
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):
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