Exemple #1
0
 def _db2job(self, dbinfo):
     '''
     Convert a dictionary of DB key value into arc Job object
     '''
     j = arc.Job()
     for attr in self.jobattrs:
         if attr not in dbinfo or dbinfo[attr] is None:
             continue
         # Some object types need special treatment
         if self.jobattrs[attr] == arc.StringList:
             l = arc.StringList()
             for item in dbinfo[attr].encode('utf-8').split('|'):
                 l.append(item)
             setattr(j, attr, l)
             continue
         if self.jobattrs[attr] == arc.StringStringMap:
             m = arc.StringStringMap()
             d = eval(dbinfo[attr])
             if not isinstance(d, dict):
                 continue
             for (k,v) in d.items():
                 m[k] = v
             setattr(j, attr, m)
             continue
         
         setattr(j, attr, self.jobattrs[attr](str(dbinfo[attr])))
     return j
Exemple #2
0
def workspec2arcjob(workspec):
    '''Convert WorkSpec.workAttributes to arc.Job object'''

    job = arc.Job()
    try:
        wsattrs = workspec.workAttributes['arcjob']
        proxyrole = workspec.workAttributes['proxyrole']
    except:
        # Job was not submitted yet
        return (job, arc.Time(), None)

    for attr in dir(job):
        if attr not in wsattrs or attr == 'CreationTime':
            continue

        attrtype = type(getattr(job, attr))
        # Some object types need special treatment
        if attrtype == arc.StringList:
            strlist = arc.StringList()
            for item in wsattrs[attr].split('|'):
                strlist.append(str(item))
            setattr(job, attr, strlist)
        elif attrtype == arc.StringStringMap:
            ssm = arc.StringStringMap()
            for (k, v) in json.loads(wsattrs[attr]).items():
                ssm[str(k)] = str(v)
            setattr(job, attr, ssm)
        else:
            setattr(job, attr, attrtype(str(wsattrs[attr])))
    return (job, arc.Time(str(wsattrs['ModificationTime'])), proxyrole)