Files
rmmanager/core/execution/operation/operation.py
T

71 lines
2.3 KiB
Python

import logging
import pprint
from core.runtime.managefailure import manageFailure
from core.runtime.stopsignals import checkDependency
from core.execution.processregistry import registerProcess
#from tqdm import tqdm
from rich.progress import track
outputs = {}
def buildOperation(definition, outputs):
from core.execution.executioncontract import executeContract
actions = definition.actions
outputs = registerProcess(definition, outputs)
responses = []
#for action in tqdm(
# actions,
# desc=definition.name,
# unit="action"
#):
if getattr(definition, "track", False):
actions = track(
actions,
#description=definition.name
description=f"[green]{definition.name}[/green]"
)
for action in actions:
#Check if dependencies are in stop signal registry
stop = checkDependency(action, outputs, definition)
if stop:
continue
#Register action before its execution
if action.kind == "action":
outputs["processes"][definition.name][action.name] = {}
#Pass the definition through to the action so it can be passed into buildPreRuntimeAttr
#Definition should be passed through in order to give access to addStopSignal so it can write directly to the definition during buildPreRuntimeAttr
#Stop signal can optionally be engaged by doing addStopSignal inside the action definition
outputs, response = executeContract(action, outputs, definition)
responses.append(response)
#Register responses in process registry
if action.kind == "action":
outputs["processes"][definition.name][action.name]["response"] = response
#Print completion status after runtime processes
print(f"{action.name} completed")
##Append completed process to process registry
outputs["processes"][definition.name]["completed"].append(action.alias)
#For debugging purposes only
process_registry_logs = False
if process_registry_logs:
pprint.pprint(outputs["processes"])
#Temporarily disabled manageFailure functions
#except Exception as error:
#outputs = manageFailure(error, action, outputs)
return outputs, responses