Files
rmmanager/core/runtime/recursive.py
T

38 lines
1.2 KiB
Python

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