def _create_job_obj(self, name, data): try: job = Job() job.state = Job.str2enum(data.pop('status'), Job.UNKNOWN) if 'id' in data: gcID = data.pop('id') if not gcID.startswith('WMSID'): # Legacy support data['legacy_gcID'] = gcID if gcID.startswith('https'): gcID = 'WMSID.GLITEWMS.%s' % gcID else: wmsID, wmsName = tuple(gcID.split('.', 1)) gcID = 'WMSID.%s.%s' % (wmsName, wmsID) job.gcID = gcID for key in ['attempt', 'submitted', 'changed']: if key in data: setattr(job, key, data[key]) if 'runtime' not in data: if 'submitted' in data and (job.submitted > 0): data['runtime'] = time.time() - float(job.submitted) else: data['runtime'] = 0 for key in irange(1, job.attempt + 1): if ('history_' + str(key)).strip() in data: job.history[key] = data['history_' + str(key)] job.dict = data except Exception: raise JobError('Unable to parse data in %s:\n%r' % (name, data)) return job
def _create_job_obj(self, name, data): try: job = Job() job.state = Job.str2enum(data.pop('status'), Job.UNKNOWN) if 'id' in data: gc_id = data.pop('id') if not gc_id.startswith('WMSID'): # Legacy support data['legacy_gc_id'] = gc_id if gc_id.startswith('https'): gc_id = 'WMSID.GLITEWMS.%s' % gc_id else: wms_id, wms_name = tuple(gc_id.split('.', 1)) gc_id = 'WMSID.%s.%s' % (wms_name, wms_id) job.gc_id = gc_id for key in ['attempt', 'submitted', 'changed']: if key in data: setattr(job, key, data[key]) if 'runtime' not in data: if 'submitted' in data and (job.submitted > 0): data['runtime'] = time.time() - float(job.submitted) else: data['runtime'] = 0 for key in irange(1, job.attempt + 1): if ('history_' + str(key)).strip() in data: job.history[key] = data['history_' + str(key)] job.set_dict(data) except Exception: raise JobError('Unable to parse data in %s:\n%r' % (name, data)) return job