Udated runtime contract to stop doing unnecessary imports and introduced dedicated process registry. Confirmed working.
This commit is contained in:
@@ -5,7 +5,7 @@ from rich.console import Console
|
|||||||
|
|
||||||
from core.runtime.managefailure import manageFailure
|
from core.runtime.managefailure import manageFailure
|
||||||
from core.runtime.stopsignals import checkDependency
|
from core.runtime.stopsignals import checkDependency
|
||||||
from core.execution.processregistry import registerProcess
|
from core.execution import processregistry
|
||||||
from core.console import console
|
from core.console import console
|
||||||
|
|
||||||
outputs = {}
|
outputs = {}
|
||||||
@@ -16,7 +16,8 @@ def buildOperation(definition, outputs):
|
|||||||
from core.execution.executioncontract import executeContract
|
from core.execution.executioncontract import executeContract
|
||||||
|
|
||||||
actions = definition.actions
|
actions = definition.actions
|
||||||
registerProcess(definition, outputs)
|
currentOp = processregistry.registerProcess(definition)
|
||||||
|
|
||||||
responses = []
|
responses = []
|
||||||
|
|
||||||
if getattr(definition, "track", False):
|
if getattr(definition, "track", False):
|
||||||
@@ -27,44 +28,44 @@ def buildOperation(definition, outputs):
|
|||||||
)
|
)
|
||||||
|
|
||||||
for action in actions:
|
for action in actions:
|
||||||
|
processregistry.registeredOp = currentOp
|
||||||
|
|
||||||
stop = checkDependency(action, outputs, definition)
|
stop = checkDependency(action)
|
||||||
|
|
||||||
if stop:
|
if stop:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
if action.kind == "action":
|
if action.kind == "action":
|
||||||
outputs["processes"][definition.name][action.name] = {}
|
currentOp[action.name] = {}
|
||||||
|
|
||||||
response = executeContract(action, outputs, definition)
|
response = executeContract(action, outputs)
|
||||||
|
|
||||||
responses.append(response)
|
responses.append(response)
|
||||||
|
|
||||||
if action.kind == "action":
|
if action.kind == "action":
|
||||||
outputs["processes"][definition.name][action.name]["response"] = response
|
currentOp[action.name]["response"] = response
|
||||||
|
|
||||||
##Append completed process to process registry
|
if action.alias in currentOp["stopsignals"]:
|
||||||
outputs["processes"][definition.name]["completed"].append(action.alias)
|
continue
|
||||||
|
currentOp["completed"].append(action.alias)
|
||||||
|
|
||||||
#Temporarily disabled manageFailure functions
|
#Temporarily disabled manageFailure functions
|
||||||
#except Exception as error:
|
#except Exception as error:
|
||||||
#outputs = manageFailure(error, action, outputs)
|
#outputs = manageFailure(error, action, outputs)
|
||||||
|
|
||||||
#Print completion status after runtime processes
|
|
||||||
if process_log:
|
if process_log:
|
||||||
stopsignal_count = len(outputs["processes"][definition.name]["stopsignals"])
|
completed_count = len(currentOp["completed"])
|
||||||
completed_count = len(outputs["processes"][definition.name]["completed"])
|
|
||||||
|
|
||||||
if completed_count == 1 and stopsignal_count == 1:
|
if completed_count == 0:
|
||||||
logging.info(f"{definition.name} bypassed")
|
logging.info(f"{definition.name} bypassed")
|
||||||
else:
|
else:
|
||||||
logging.info(f"{definition.name} completed")
|
logging.info(f"{definition.name} completed")
|
||||||
|
|
||||||
#For debugging purposes only
|
|
||||||
process_registry_logs = False
|
process_registry_logs = False
|
||||||
|
|
||||||
if process_registry_logs:
|
if process_registry_logs:
|
||||||
pprint.pprint(outputs["processes"])
|
import pprint
|
||||||
|
pprint.pprint(processregistry.processes)
|
||||||
|
|
||||||
|
|
||||||
return responses
|
return responses
|
||||||
|
|||||||
@@ -1,12 +1,14 @@
|
|||||||
def registerProcess(module, outputs):
|
processes = {}
|
||||||
if not "processes" in outputs:
|
registeredOp = {}
|
||||||
outputs["processes"] = {}
|
|
||||||
|
|
||||||
if not module.name in outputs["processes"]:
|
def registerProcess(module):
|
||||||
outputs["processes"][module.name] = {}
|
global registeredOp
|
||||||
|
|
||||||
#outputs["processes"][module.name] = {}
|
processes[module.name] = {}
|
||||||
outputs["processes"][module.name]["stopsignals"] = []
|
|
||||||
outputs["processes"][module.name]["completed"] = []
|
|
||||||
|
|
||||||
return
|
registeredOp = processes[module.name]
|
||||||
|
|
||||||
|
processes[module.name]["stopsignals"] = []
|
||||||
|
processes[module.name]["completed"] = []
|
||||||
|
|
||||||
|
return registeredOp
|
||||||
+18
-24
@@ -2,7 +2,7 @@ import logging
|
|||||||
import os
|
import os
|
||||||
|
|
||||||
from core.runtime.stopsignals import checkDependency
|
from core.runtime.stopsignals import checkDependency
|
||||||
from core.execution.processregistry import registerProcess
|
from core.execution import processregistry
|
||||||
from rich.progress import track
|
from rich.progress import track
|
||||||
from core.console import console
|
from core.console import console
|
||||||
|
|
||||||
@@ -10,8 +10,6 @@ def buildRecursive(definition, outputs):
|
|||||||
process_log = True
|
process_log = True
|
||||||
recursive_log = os.environ.get("LOGS_RECURSIVE", "false").lower() == "true"
|
recursive_log = os.environ.get("LOGS_RECURSIVE", "false").lower() == "true"
|
||||||
|
|
||||||
#print(outputs[definition.recursiveset["source"]])
|
|
||||||
|
|
||||||
source = outputs.get(definition.recursiveset["source"])
|
source = outputs.get(definition.recursiveset["source"])
|
||||||
|
|
||||||
if source is None or source == []:
|
if source is None or source == []:
|
||||||
@@ -19,7 +17,7 @@ def buildRecursive(definition, outputs):
|
|||||||
logging.debug(f"No items available in {source} for {definition.name}")
|
logging.debug(f"No items available in {source} for {definition.name}")
|
||||||
return outputs, []
|
return outputs, []
|
||||||
|
|
||||||
registerProcess(definition, outputs)
|
currentOp = processregistry.registerProcess(definition)
|
||||||
|
|
||||||
responses = []
|
responses = []
|
||||||
from core.execution.executioncontract import executeContract
|
from core.execution.executioncontract import executeContract
|
||||||
@@ -32,7 +30,6 @@ def buildRecursive(definition, outputs):
|
|||||||
reverse = definition.recursiveset.get("reverse", False)
|
reverse = definition.recursiveset.get("reverse", False)
|
||||||
|
|
||||||
if reverse:
|
if reverse:
|
||||||
#print("reversing")
|
|
||||||
items = reversed(items)
|
items = reversed(items)
|
||||||
|
|
||||||
for item in track(
|
for item in track(
|
||||||
@@ -46,37 +43,28 @@ def buildRecursive(definition, outputs):
|
|||||||
|
|
||||||
outputs["stopsignals"] = []
|
outputs["stopsignals"] = []
|
||||||
for job in recursiveset:
|
for job in recursiveset:
|
||||||
|
processregistry.registeredOp = currentOp
|
||||||
|
|
||||||
stop = checkDependency(job, outputs, definition)
|
stop = checkDependency(job)
|
||||||
|
|
||||||
#print(f"STOP SIGNAL DEBUGGING during {job.name}")
|
|
||||||
#print(outputs["stopsignals"])
|
|
||||||
#print(stop)
|
|
||||||
|
|
||||||
if stop:
|
if stop:
|
||||||
#outputs["processes"][definition.name]["stopsignals"].append(job.alias)
|
|
||||||
#print("STOP SIGNAL DETECTED")
|
|
||||||
#print(f"Stopping {job.name} due to stop signal")
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
#print(f"RECURSIVE DEBUG DURING {job.name}")
|
|
||||||
#print(item)
|
|
||||||
#outputs, response = buildAction(job, outputs)
|
|
||||||
if job.kind == "action":
|
if job.kind == "action":
|
||||||
outputs["processes"][definition.name][job.name] = {}
|
currentOp[job.name] = {}
|
||||||
|
|
||||||
response = executeContract(job, outputs, definition)
|
response = executeContract(job, outputs)
|
||||||
responses.append(response)
|
responses.append(response)
|
||||||
if job.kind == "action":
|
|
||||||
outputs["processes"][definition.name][job.name]["response"] = response
|
|
||||||
|
|
||||||
outputs["processes"][definition.name]["completed"].append(job.alias)
|
if job.kind == "action":
|
||||||
|
currentOp[job.name]["response"] = response
|
||||||
|
|
||||||
|
currentOp["completed"].append(job.alias)
|
||||||
|
|
||||||
if process_log:
|
if process_log:
|
||||||
stopsignal_count = len(outputs["processes"][definition.name]["stopsignals"])
|
completed_count = len(currentOp["completed"])
|
||||||
completed_count = len(outputs["processes"][definition.name]["completed"])
|
|
||||||
|
|
||||||
if completed_count == 1 and stopsignal_count == 1:
|
if completed_count == 0:
|
||||||
logging.info(f"{definition.name} bypassed")
|
logging.info(f"{definition.name} bypassed")
|
||||||
else:
|
else:
|
||||||
logging.info(f"{definition.name} completed")
|
logging.info(f"{definition.name} completed")
|
||||||
@@ -88,4 +76,10 @@ def buildRecursive(definition, outputs):
|
|||||||
|
|
||||||
outputs.pop("stopsignals", None)
|
outputs.pop("stopsignals", None)
|
||||||
|
|
||||||
|
process_registry_logs = False
|
||||||
|
|
||||||
|
if process_registry_logs:
|
||||||
|
import pprint
|
||||||
|
pprint.pprint(processregistry.processes)
|
||||||
|
|
||||||
return responses
|
return responses
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import logging
|
|||||||
|
|
||||||
from core.runtime.stopsignals import addStopSignal
|
from core.runtime.stopsignals import addStopSignal
|
||||||
|
|
||||||
def buildPreRuntimeAttr(action, outputs, process):
|
def buildPreRuntimeAttr(action, outputs):
|
||||||
from core.runtime import loadSave, readRow
|
from core.runtime import loadSave, readRow
|
||||||
from core.runtime.applyconditions import applyConditions
|
from core.runtime.applyconditions import applyConditions
|
||||||
from core.runtime.resolver import resolveItem
|
from core.runtime.resolver import resolveItem
|
||||||
@@ -17,12 +17,12 @@ def buildPreRuntimeAttr(action, outputs, process):
|
|||||||
|
|
||||||
if match:
|
if match:
|
||||||
logging.info(filter.get("print"))
|
logging.info(filter.get("print"))
|
||||||
addStopSignal(action, outputs, process)
|
addStopSignal(action)
|
||||||
|
|
||||||
return resolved, match, filter
|
return resolved, match, filter
|
||||||
|
|
||||||
|
|
||||||
def buildRuntimeAttr(action, outputs, resolved, response, process):
|
def buildRuntimeAttr(action, outputs, resolved, response):
|
||||||
from core.runtime.resolver import extractItem
|
from core.runtime.resolver import extractItem
|
||||||
from core.runtime.responsepolicy import responsePolicy
|
from core.runtime.responsepolicy import responsePolicy
|
||||||
from core.runtime.image import buildImage
|
from core.runtime.image import buildImage
|
||||||
@@ -33,7 +33,7 @@ def buildRuntimeAttr(action, outputs, resolved, response, process):
|
|||||||
buildOutput(response, action, outputs)
|
buildOutput(response, action, outputs)
|
||||||
|
|
||||||
if not response.ok:
|
if not response.ok:
|
||||||
addStopSignal(action, outputs, process)
|
addStopSignal(action)
|
||||||
return outputs, response
|
return outputs, response
|
||||||
|
|
||||||
extractItem(action, outputs, resolved)
|
extractItem(action, outputs, resolved)
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#def checkDependency(action, outputs):
|
#from core.execution.processregistry import registeredOp
|
||||||
def checkDependency(action, outputs, operation):
|
|
||||||
|
def checkDependency(action):
|
||||||
|
from core.execution.processregistry import registeredOp
|
||||||
if hasattr(action, "depends"):
|
if hasattr(action, "depends"):
|
||||||
stop = any(
|
stop = any(
|
||||||
dependency in outputs["processes"][operation.name]["stopsignals"]
|
dependency in registeredOp["stopsignals"]
|
||||||
#dependency in outputs["stopsignals"]
|
|
||||||
for dependency in action.depends
|
for dependency in action.depends
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -12,9 +13,10 @@ def checkDependency(action, outputs, operation):
|
|||||||
|
|
||||||
return False
|
return False
|
||||||
|
|
||||||
#def addStopSignal(action, outputs):
|
def addStopSignal(action):
|
||||||
def addStopSignal(action, outputs, operation):
|
from core.execution.processregistry import registeredOp
|
||||||
|
|
||||||
if hasattr(action, "depends"):
|
if hasattr(action, "depends"):
|
||||||
outputs["processes"][operation.name]["stopsignals"].append(action.alias)
|
|
||||||
#outputs["stopsignals"].append(action.alias)
|
registeredOp["stopsignals"].append(action.alias)
|
||||||
return
|
return
|
||||||
Reference in New Issue
Block a user