Files
rmmanager/core/execution/recursive.py
T
2026-10-26 09:27:29 -04:00

42 lines
1.3 KiB
Python

from core.execution.action.action import buildAction
from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr
from core.apirequest import executeRequest
def buildRecursive(definition, outputs):
responses = []
from core.execution.executioncontract import executeContract
recursiveset = definition.recursiveset["actions"]
source = definition.recursiveset["source"]
items = outputs.get(source)
#print(f"RECURSIVE DEBUG DURING {definition.name}")
#print(items)
if items is None:
print(f"No items available in {source} for {definition.name}")
return outputs, None
reverse = definition.recursiveset.get("reverse", False)
if reverse:
#print("reversing")
items = reversed(items)
for item in items:
outputs[definition.recursiveset["outputlabel"]] = item
for job in recursiveset:
#print(f"RECURSIVE DEBUG DURING {job.name}")
#print(item)
#outputs, response = buildAction(job, outputs)
outputs, response = executeContract(job, outputs)
responses.append(response)
retain = definition.recursiveset.get("retain", True)
if not retain:
outputs.pop(source, None)
return outputs, responses