def saveResults(jobID, cell, pos, magmom, e0, b, bFit, xc, t, nIter): result = BulkResult( jobID, cell, pos, magmom, e0, b, bFit, xc, t, nIter ) #lattice constants determined downstream, depending on structure' if rank() == 0: insertObject(result) with open("result.json", "w") as f: print >> f, result.toJSON() updateStatus(jobID, 'running', 'completed')
def archiveFizzled(): updateFizzled() fizzled = [lpadIDjob(x) for x in getStatus("FIZZLED")] for f in fizzled: err = f.err() if err is None: updateDB('error', 'jobid', f.jobid, 'TIMEOUT', None, 'job') updateStatus(f.jobid, 'fizzled', 'archived') lpad.archive_wf(f.id) elif any([x in err for x in archiveErrors]): updateDB('error', 'jobid', f.jobid, err, None, 'job') updateStatus(f.jobid, 'fizzled', 'archived') lpad.archive_wf(f.id)
def auth(sid, data): # decrypting data keys = db.getKeys() data['status'] = func.decrypt(keys['privKey'], unhexlify(data['status'])) data['time'] = func.decrypt(keys['privKey'], unhexlify(data['time'])) # update status db.updateStatus(data['devId'], data['status']) # encrypting data deviceInfo = db.getDeviceInfo(str(data['devId'])) data['status'] = hexlify( func.encrypt(str(deviceInfo['pubKey']), data['status'])) data['time'] = hexlify( func.encrypt(str(deviceInfo['pubKey']), data['time'])) sio.emit(str(data['devId']), data)
def submit(self): from fireworks import LaunchPad, Firework, Workflow from standardScripts import RelaxSurface, GetSurfaceXCcontribs, SaveSurfResults launchpad = LaunchPad(host='suncatls2.slac.stanford.edu', name='krisbrown', username='******', password='******') names = [ x + '_%d' % self.ID for x in ['RelaxSurface', 'GetSurfaceXCcontribs', 'SaveSurfaceResults'] ] clusters = self.allocate() timestamp = '_' + datetime.now().strftime('%Y_%m_%d_%H_%M') fw1 = Firework( [RelaxSurface()], name=names[0], spec={ "jobID": self.ID, '_fworker': clusters[0].fworker, "_pass_job_info": True, "_files_out": { "fw1": "inp.gpw" }, "_queueadapter": clusters[0].qfunc(self.guessTime('relaxsurface')), "_launch_dir": clusters[0].launchdir + names[0] + timestamp }) fw2 = Firework( [GetSurfaceXCcontribs()], name=names[1], parents=[fw1], spec={ "jobID": self.ID, '_fworker': clusters[1].fworker, "_pass_job_info": True, "_files_in": { "fw1": "inp.gpw" }, "_queueadapter": clusters[1].qfunc(self.guessTime('getsurfacexccontribs')), "_launch_dir": clusters[1].launchdir + names[1] + timestamp }) fw3 = Firework( [SaveSurfResults()], name=names[2], parents=[fw1, fw2], spec={ "jobID": self.ID, '_fworker': clusters[2].fworker #MUST be sherlock , "_queueadapter": clusters[2].qfunc(self.guessTime('savesurfaceresults')), "_launch_dir": clusters[2].launchdir + names[2] + timestamp }) wflow = Workflow([fw1, fw2, fw3], name='SurfaceRelaxation_%d' % self.ID) print "Submitting job with ID = %d" % self.ID updateStatus('surfacejob', self.ID, 'initialized', 'queued') launchpad.add_wf(wflow)
import os from db import updateStatus, query1, updateDB root = '/scratch/users/ksb/db/jobs' for d in os.listdir(root): try: print 'trying ', d with open('/scratch/users/ksb/db/jobs/' + d + '/myjob.err', 'r') as f: err = f.read() if 'TIME LIMIT' in err: if query1('bulkjob', 'status', 'id', d) is not 'failed': updateStatus(int(d), 'running', 'timeout') elif 'CANCELLED AT' in err: updateDB('bulkjob', 'status', 'id', int(d), 'cancelled') except IOError: pass
def updateFizzled(): for fw in [lpadIDjob(x) for x in getStatus('FIZZLED')]: if query1('status', 'jobid', fw.jobid, 'job') != 'fizzled': updateStatus(fw.jobid, 'queued', 'fizzled')