from core.execution.action.action import buildAction 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 for job in recursiveset: outputs, response = buildAction(job, outputs) responses.append(response) return outputs, responses def recursiveAction(action, outputs): recursiveresponses = [] items = outputs[action.recursive["source"]] reverse = action.recursive.get("reverse", False) if reverse: items = reversed(items) for item in items: outputs[action.recursive["label"]] = item outputs, resolved, match, filter = buildPreRuntimeAttr(action, 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