def cloneWorkflow(workflow, user, group, verbose=True, backfill=False, testbed=False, memory=None, bwl=None): """ clones a workflow """ # Get info about the workflow to be cloned helper = reqMgrClient.retrieveSchema(workflow, reqmgrCouchURL) # Adapt schema and add original request to it try: cache = reqMgrClient.getWorkloadCache(url, workflow) except: cache = None schema = modifySchema(helper, workflow, user, group, cache, None, None, backfill, memory) schema['OriginalRequestName'] = workflow if verbose: pprint(schema) if bwl: if 'Task1' in schema: schema['Task1']['BlockWhitelist'] = bwl.split(',') else: schema['BlockWhitelist'] = bwl.split(',') print 'Submitting workflow' # Submit cloned workflow to ReqMgr if testbed: newWorkflow = reqMgrClient.submitWorkflow(url_tb, schema, reqmgr2 = True) else: newWorkflow = reqMgrClient.submitWorkflow(url, schema, reqmgr2 = True) if verbose: print "RESPONSE", newWorkflow # find the workflow name in response if newWorkflow: print 'Cloned workflow: ' + newWorkflow if verbose: print newWorkflow print 'Approving request response:' # TODO only for debug #response = reqMgrClient.setWorkflowSplitting(url, schema) # print "RESPONSE", response #schema['requestName'] = requestName #schema['splittingTask'] = '/%s/%s' % (requestName, taskName) #schema['splittingAlgo'] = splittingAlgo # Move the request to Assignment-approved if testbed: data = reqMgrClient.setWorkflowApproved(url_tb, newWorkflow) else: data = reqMgrClient.setWorkflowApproved(url, newWorkflow) if verbose: print data # return the name of new workflow return newWorkflow else: if verbose: print newWorkflow else: print "Couldn't clone the workflow." return None
def cloneWorkflow(workflow, user, group, verbose=True, backfill=False, testbed=False, memory=None, bwl=None): """ clones a workflow """ # Get info about the workflow to be cloned helper = reqMgrClient.retrieveSchema(workflow, reqmgrCouchURL) # Adapt schema and add original request to it try: cache = reqMgrClient.getWorkloadCache(url, workflow) except: cache = None schema = modifySchema(helper, workflow, user, group, cache, None, None, backfill, memory) schema['OriginalRequestName'] = workflow if verbose: pprint(schema) if bwl: if 'Task1' in schema: schema['Task1']['BlockWhitelist'] = bwl.split(',') else: schema['BlockWhitelist'] = bwl.split(',') print 'Submitting workflow' # Submit cloned workflow to ReqMgr if testbed: newWorkflow = reqMgrClient.submitWorkflow(url_tb, schema) else: newWorkflow = reqMgrClient.submitWorkflow(url, schema) if verbose: print "RESPONSE", newWorkflow # find the workflow name in response if newWorkflow: print 'Cloned workflow: ' + newWorkflow if verbose: print newWorkflow print 'Approving request response:' # TODO only for debug #response = reqMgrClient.setWorkflowSplitting(url, schema) # print "RESPONSE", response #schema['requestName'] = requestName #schema['splittingTask'] = '/%s/%s' % (requestName, taskName) #schema['splittingAlgo'] = splittingAlgo # Move the request to Assignment-approved if testbed: data = reqMgrClient.setWorkflowApproved(url_tb, newWorkflow) else: data = reqMgrClient.setWorkflowApproved(url, newWorkflow) if verbose: print data # return the name of new workflow return newWorkflow else: if verbose: print newWorkflow else: print "Couldn't clone the workflow." return None
def cloneWorkflow(workflow, user, group, verbose=False, backfill=False, testbed=False): """ clones a workflow """ # Get info about the workflow to be cloned helper = reqMgrClient.retrieveSchema(workflow, reqmgrCouchURL) # Adapt schema and add original request to it try: cache = reqMgrClient.getWorkloadCache(url, workflow) except: cache = None schema = modifySchema(helper, user, group, cache, backfill) schema['OriginalRequestName'] = workflow if verbose: pprint(schema) print 'Submitting workflow' # Sumbit cloned workflow to ReqMgr if testbed: response = reqMgrClient.submitWorkflow(url_tb, schema) else: response = reqMgrClient.submitWorkflow(url, schema) if verbose: print "RESPONSE", response # find the workflow name in response m = re.search("details\/(.*)\'", response) if m: newWorkflow = m.group(1) print 'Cloned workflow: ' + newWorkflow if verbose: print response print 'Approving request response:' # TODO only for debug #response = reqMgrClient.setWorkflowSplitting(url, schema) # print "RESPONSE", response #schema['requestName'] = requestName #schema['splittingTask'] = '/%s/%s' % (requestName, taskName) #schema['splittingAlgo'] = splittingAlgo # Move the request to Assignment-approved if testbed: data = reqMgrClient.setWorkflowApproved(url_tb, newWorkflow) else: data = reqMgrClient.setWorkflowApproved(url, newWorkflow) if verbose: print data # return the name of new workflow return newWorkflow else: if verbose: print response else: print "Couldn't clone the workflow." return None
def testGetWorkloadCache(self): # getWorkloadCache ca = reqMgr.getWorkloadCache(url, testwf) if ca is None: self.fail("None output")