diff --git a/core/runtime/recursive.py b/core/runtime/recursive.py index 12bdad6..96fc117 100644 --- a/core/runtime/recursive.py +++ b/core/runtime/recursive.py @@ -1,38 +1,39 @@ from core.execution.action.action import buildAction -from plugins.rmass.actions import synapsenotify +from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr +from core.apirequest import executeRequest def recursiveSet(definition, outputs, responses): recursiveset = definition.recursiveset["actions"] for item in outputs[definition.recursiveset["source"]]: outputs[definition.recursiveset["outputlabel"]] = item - #print("DEBUGGING recursiveset item") - #print(outputs[definition.recursiveset["outputlabel"]]) - for job in recursiveset: - outputs, response = buildAction(job, outputs) + outputs, response, match, filter = buildAction(job, outputs) responses.append(response) - #response_data = response.json() - #print(f"RECURSIVESET {job.name} DEBUG") - #print(response_data) - - #if response.status_code != 200: - #outputs, response = buildAction(synapsenotify, outputs) - #print("GETRMASSMESSAGEIDDEBUG") - #print(outputs) return outputs, responses -from core.execution.action.action import buildAction +#from core.execution.action.action import buildAction -def recursiveAction(definition, outputs): - recursiveset = definition.recursiveset["actions"] - for item in outputs[definition.recursiveset["source"]]: - outputs[definition.recursiveset["outputlabel"]] = item - #outputs["recursive"] = item +def recursiveAction(action, outputs): + recursiveresponses = [] + items = outputs[action.recursive["source"]] + reverse = action.recursive.get("reverse", False) + + if reverse: + items = reversed(items) - for job in recursiveset: - outputs, response = buildAction(job, outputs) + for item in items: + outputs[action.recursive["label"]] = item + outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs) - return outputs + if match: + continue + + response, outputs = executeRequest(action, outputs, resolved) + recursiveresponses.append(response) + + outputs, response = buildRuntimeAttr(action, outputs, resolved, response) + + return outputs, recursiveresponses, match, filter