def executeCommand(gearman_worker, gearman_job): try: execute = gearman_job.task print "executing:", execute, "{", gearman_job.unique, "}" data = cPickle.loads(gearman_job.data) utcDate = databaseInterface.getUTCDate() arguments = data["arguments"]#.encode("utf-8") if isinstance(arguments, unicode): arguments = arguments.encode("utf-8") #if isinstance(arguments, str): # arguments = unicode(arguments) sInput = "" clientID = gearman_worker.worker_client_id #if True: # print clientID, execute, data logTaskAssignedSQL(gearman_job.unique.__str__(), clientID, utcDate) if execute not in supportedModules: output = ["Error!", "Error! - Tried to run and unsupported command." ] exitCode = -1 return cPickle.dumps({"exitCode" : exitCode, "stdOut": output[0], "stdError": output[1]}) command = supportedModules[execute] replacementDic["%date%"] = utcDate replacementDic["%jobCreatedDate%"] = data["createdDate"] #Replace replacement strings for key in replacementDic.iterkeys(): command = command.replace ( key, replacementDic[key] ) arguments = arguments.replace ( key, replacementDic[key] ) key = "%taskUUID%" value = gearman_job.unique.__str__() arguments = arguments.replace(key, value) #execute command command += " " + arguments printOutputLock.acquire() print >>sys.stderr, "<processingCommand>{" + gearman_job.unique + "}" + command.__str__() + "</processingCommand>" printOutputLock.release() exitCode, stdOut, stdError = executeOrRun("command", command, sInput, printing=False) return cPickle.dumps({"exitCode" : exitCode, "stdOut": stdOut, "stdError": stdError}) #catch OS errors except OSError, ose: traceback.print_exc(file=sys.stdout) printOutputLock.acquire() print >>sys.stderr, "Execution failed:", ose printOutputLock.release() output = ["Config Error!", ose.__str__() ] exitCode = 1 return cPickle.dumps({"exitCode" : exitCode, "stdOut": output[0], "stdError": output[1]})
def executeCommand(gearman_worker, gearman_job): try: execute = gearman_job.task print "executing:", execute, "{", gearman_job.unique, "}" data = cPickle.loads(gearman_job.data) utcDate = databaseInterface.getUTCDate() arguments = data["arguments"]#.encode("utf-8") if isinstance(arguments, unicode): arguments = arguments.encode("utf-8") #if isinstance(arguments, str): # arguments = unicode(arguments) sInput = "" clientID = gearman_worker.worker_client_id sql = """SELECT Tasks.taskUUID FROM Tasks WHERE taskUUID='%s' AND startTime != 0;""" % (gearman_job.unique.__str__()) rows = databaseInterface.queryAllSQL(sql) if len(rows): exitCode = -1 stdOut = "" stdError = """Detected this task has already started! Unable to determine if it completed successfully.""" return cPickle.dumps({"exitCode" : exitCode, "stdOut": stdOut, "stdError": stdError}) logTaskAssignedSQL(gearman_job.unique.__str__(), clientID, utcDate) if execute not in supportedModules: output = ["Error!", "Error! - Tried to run and unsupported command." ] exitCode = -1 return cPickle.dumps({"exitCode" : exitCode, "stdOut": output[0], "stdError": output[1]}) command = supportedModules[execute] replacementDic["%date%"] = utcDate replacementDic["%jobCreatedDate%"] = data["createdDate"] #Replace replacement strings for key in replacementDic.iterkeys(): command = command.replace ( key, replacementDic[key] ) arguments = arguments.replace ( key, replacementDic[key] ) key = "%taskUUID%" value = gearman_job.unique.__str__() arguments = arguments.replace(key, value) #execute command command += " " + arguments printOutputLock.acquire() print "<processingCommand>{" + gearman_job.unique + "}" + command.__str__() + "</processingCommand>" printOutputLock.release() exitCode, stdOut, stdError = executeOrRun("command", command, sInput, printing=False) return cPickle.dumps({"exitCode" : exitCode, "stdOut": stdOut, "stdError": stdError}) #catch OS errors except OSError, ose: traceback.print_exc(file=sys.stdout) printOutputLock.acquire() print >>sys.stderr, "Execution failed:", ose printOutputLock.release() output = ["Archivematica Client Error!", ose.__str__() ] exitCode = 1 return cPickle.dumps({"exitCode" : exitCode, "stdOut": output[0], "stdError": output[1]})
def executeCommand(gearman_worker, gearman_job): try: execute = gearman_job.task print "executing:", execute, "{", gearman_job.unique, "}" data = cPickle.loads(gearman_job.data) utcDate = databaseInterface.getUTCDate() arguments = data["arguments"] #.encode("utf-8") if isinstance(arguments, unicode): arguments = arguments.encode("utf-8") #if isinstance(arguments, str): # arguments = unicode(arguments) sInput = "" clientID = gearman_worker.worker_client_id sql = """SELECT Tasks.taskUUID FROM Tasks WHERE taskUUID='%s' AND startTime != 0;""" % ( gearman_job.unique.__str__()) rows = databaseInterface.queryAllSQL(sql) if len(rows): exitCode = -1 stdOut = "" stdError = """Detected this task has already started! Unable to determine if it completed successfully.""" return cPickle.dumps({ "exitCode": exitCode, "stdOut": stdOut, "stdError": stdError }) logTaskAssignedSQL(gearman_job.unique.__str__(), clientID, utcDate) if execute not in supportedModules: output = [ "Error!", "Error! - Tried to run and unsupported command." ] exitCode = -1 return cPickle.dumps({ "exitCode": exitCode, "stdOut": output[0], "stdError": output[1] }) command = supportedModules[execute] replacementDic["%date%"] = utcDate replacementDic["%jobCreatedDate%"] = data["createdDate"] #Replace replacement strings for key in replacementDic.iterkeys(): command = command.replace(key, replacementDic[key]) arguments = arguments.replace(key, replacementDic[key]) key = "%taskUUID%" value = gearman_job.unique.__str__() arguments = arguments.replace(key, value) #execute command command += " " + arguments printOutputLock.acquire() print "<processingCommand>{" + gearman_job.unique + "}" + command.__str__( ) + "</processingCommand>" printOutputLock.release() exitCode, stdOut, stdError = executeOrRun("command", command, sInput, printing=False) return cPickle.dumps({ "exitCode": exitCode, "stdOut": stdOut, "stdError": stdError }) #catch OS errors except OSError, ose: traceback.print_exc(file=sys.stdout) printOutputLock.acquire() print >> sys.stderr, "Execution failed:", ose printOutputLock.release() output = ["Archivematica Client Error!", ose.__str__()] exitCode = 1 return cPickle.dumps({ "exitCode": exitCode, "stdOut": output[0], "stdError": output[1] })