Created the canonical recursive execution handler buildRecursive that now lives in the execution layer instead of the runtime. the previous recursive handlers are depreciated
This commit is contained in:
@@ -4,34 +4,34 @@ from core.runtime.runtimecontract import buildRuntimeAttr, buildPreRuntimeAttr
|
|||||||
|
|
||||||
def buildAction (action, outputs):
|
def buildAction (action, outputs):
|
||||||
|
|
||||||
if hasattr(action, "recursive"):
|
#if hasattr(action, "recursive"):
|
||||||
recursiveresponses = []
|
# recursiveresponses = []
|
||||||
items = outputs[action.recursive["source"]]
|
# items = outputs[action.recursive["source"]]
|
||||||
reverse = action.recursive.get("reverse", False)
|
# reverse = action.recursive.get("reverse", False)
|
||||||
|
#
|
||||||
|
# if reverse:
|
||||||
|
# items = reversed(items)
|
||||||
|
|
||||||
if reverse:
|
# for item in items:
|
||||||
items = reversed(items)
|
# outputs[action.recursive["label"]] = item
|
||||||
|
# outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
||||||
|
|
||||||
for item in items:
|
# if match:
|
||||||
outputs[action.recursive["label"]] = item
|
# continue
|
||||||
outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
|
||||||
|
|
||||||
if match:
|
# response, outputs = executeRequest(action, outputs, resolved)
|
||||||
continue
|
# recursiveresponses.append(response)
|
||||||
|
# outputs, response = buildRuntimeAttr(action, outputs, resolved, response)
|
||||||
|
|
||||||
response, outputs = executeRequest(action, outputs, resolved)
|
# return outputs, recursiveresponses
|
||||||
recursiveresponses.append(response)
|
|
||||||
outputs, response = buildRuntimeAttr(action, outputs, resolved, response)
|
|
||||||
|
|
||||||
return outputs, recursiveresponses
|
#else:
|
||||||
|
outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
||||||
|
|
||||||
else:
|
if match:
|
||||||
outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
return outputs, resolved
|
||||||
|
|
||||||
if match:
|
response, outputs = executeRequest(action, outputs, resolved)
|
||||||
return outputs, resolved
|
outputs, response = buildRuntimeAttr(action, outputs, resolved, response)
|
||||||
|
|
||||||
response, outputs = executeRequest(action, outputs, resolved)
|
|
||||||
outputs, response = buildRuntimeAttr(action, outputs, resolved, response)
|
|
||||||
|
|
||||||
return outputs, response
|
return outputs, response
|
||||||
|
|||||||
@@ -2,9 +2,11 @@ from core.execution.action import buildAction
|
|||||||
from core.execution.operation import buildOperation
|
from core.execution.operation import buildOperation
|
||||||
from core.execution.monitor import buildMonitor
|
from core.execution.monitor import buildMonitor
|
||||||
from core.runtime import manageFailure
|
from core.runtime import manageFailure
|
||||||
|
from core.execution.recursive import buildRecursive
|
||||||
|
|
||||||
def executeContract(module, outputs):
|
def executeContract(module, outputs):
|
||||||
|
#print("DEBUGGING")
|
||||||
|
#print(module.name)
|
||||||
if module.kind == "operation":
|
if module.kind == "operation":
|
||||||
|
|
||||||
outputs, responses = buildOperation(module, outputs)
|
outputs, responses = buildOperation(module, outputs)
|
||||||
@@ -22,5 +24,10 @@ def executeContract(module, outputs):
|
|||||||
|
|
||||||
return outputs, response
|
return outputs, response
|
||||||
|
|
||||||
|
elif module.kind == "recursiveset":
|
||||||
|
outputs, response = buildRecursive(module, outputs)
|
||||||
|
|
||||||
|
return outputs, response
|
||||||
|
|
||||||
#except Exception as error:
|
#except Exception as error:
|
||||||
#outputs = manageFailure(error, module)
|
#outputs = manageFailure(error, module)
|
||||||
@@ -1,23 +1,29 @@
|
|||||||
import logging
|
import logging
|
||||||
from core.runtime.managefailure import manageFailure
|
from core.runtime.managefailure import manageFailure
|
||||||
from core.execution.action.action import buildAction
|
from core.execution.action.action import buildAction
|
||||||
from core.runtime.skipstep import skipStep
|
#from core.runtime.skipstep import skipStep
|
||||||
from core.runtime.recursive import recursiveSet
|
#from core.runtime.recursive import recursiveSet
|
||||||
|
|
||||||
outputs = {}
|
outputs = {}
|
||||||
def buildOperation(definition, outputs):
|
def buildOperation(definition, outputs):
|
||||||
|
from core.execution.executioncontract import executeContract
|
||||||
actions = definition.actions
|
actions = definition.actions
|
||||||
responses = []
|
responses = []
|
||||||
|
|
||||||
for action in actions:
|
for action in actions:
|
||||||
|
|
||||||
if action == "recursiveset":
|
#if action == "recursiveset":
|
||||||
outputs, responses = recursiveSet(definition, outputs, responses)
|
#if hasattr(action, "recursiveset"):
|
||||||
|
# from core.runtime.recursive import recursiveSet
|
||||||
|
# outputs, responses = recursiveSet(action, outputs, responses)
|
||||||
|
|
||||||
else:
|
#else:
|
||||||
outputs, response = buildAction(action, outputs)
|
#outputs, response = buildAction(action, outputs)
|
||||||
|
outputs, response = executeContract(action, outputs)
|
||||||
|
|
||||||
responses.append(response)
|
#if hasattr(action, recursive)
|
||||||
|
|
||||||
|
responses.append(response)
|
||||||
|
|
||||||
|
|
||||||
#except Exception as error:
|
#except Exception as error:
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
from core.execution.action.action import buildAction
|
||||||
|
from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr
|
||||||
|
from core.apirequest import executeRequest
|
||||||
|
|
||||||
|
#def recursiveSet(definition, outputs, responses):
|
||||||
|
# from core.execution.executioncontract import executeContract
|
||||||
|
# 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)
|
||||||
|
# outputs, response = executeContract(job, outputs)
|
||||||
|
# responses.append(response)
|
||||||
|
#
|
||||||
|
# return outputs, responses
|
||||||
|
|
||||||
|
def buildRecursive(definition, outputs):
|
||||||
|
responses = []
|
||||||
|
from core.execution.executioncontract import executeContract
|
||||||
|
recursiveset = definition.recursiveset["actions"]
|
||||||
|
|
||||||
|
source = definition.recursiveset["source"]
|
||||||
|
|
||||||
|
items = outputs.get(source)
|
||||||
|
|
||||||
|
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:
|
||||||
|
#outputs, response = buildAction(job, outputs)
|
||||||
|
outputs, response = executeContract(job, outputs)
|
||||||
|
responses.append(response)
|
||||||
|
|
||||||
|
return outputs, responses
|
||||||
@@ -1,14 +1,17 @@
|
|||||||
from core.execution.action.action import buildAction
|
from core.execution.action.action import buildAction
|
||||||
from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr
|
from core.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr
|
||||||
from core.apirequest import executeRequest
|
from core.apirequest import executeRequest
|
||||||
|
#from core.execution.executioncontract import executeContract
|
||||||
|
|
||||||
def recursiveSet(definition, outputs, responses):
|
def recursiveSet(definition, outputs, responses):
|
||||||
|
from core.execution.executioncontract import executeContract
|
||||||
recursiveset = definition.recursiveset["actions"]
|
recursiveset = definition.recursiveset["actions"]
|
||||||
for item in outputs[definition.recursiveset["source"]]:
|
for item in outputs[definition.recursiveset["source"]]:
|
||||||
outputs[definition.recursiveset["outputlabel"]] = item
|
outputs[definition.recursiveset["outputlabel"]] = item
|
||||||
|
|
||||||
for job in recursiveset:
|
for job in recursiveset:
|
||||||
outputs, response = buildAction(job, outputs)
|
#outputs, response = buildAction(job, outputs)
|
||||||
|
outputs, response = executeContract(job, outputs)
|
||||||
responses.append(response)
|
responses.append(response)
|
||||||
|
|
||||||
return outputs, responses
|
return outputs, responses
|
||||||
@@ -2,6 +2,7 @@ import json
|
|||||||
from core.runtime.outputs import buildOutput
|
from core.runtime.outputs import buildOutput
|
||||||
from core.runtime.applyconditions import applyConditions
|
from core.runtime.applyconditions import applyConditions
|
||||||
from core.execution.operation import buildOperation
|
from core.execution.operation import buildOperation
|
||||||
|
from core.execution.executioncontract import executeContract
|
||||||
|
|
||||||
def buildListener(listener, self):
|
def buildListener(listener, self):
|
||||||
|
|
||||||
@@ -39,7 +40,7 @@ def buildListener(listener, self):
|
|||||||
print(item)
|
print(item)
|
||||||
#Process and forward to RMASS
|
#Process and forward to RMASS
|
||||||
|
|
||||||
outputs, responses = buildOperation(listener.execute, outputs)
|
outputs, responses = executeContract(listener.execute, outputs)
|
||||||
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
|||||||
@@ -6,11 +6,11 @@ kind = "action"
|
|||||||
|
|
||||||
showstatus = True
|
showstatus = True
|
||||||
|
|
||||||
recursive = {
|
#recursive = {
|
||||||
"source": "getmessage_select",
|
# "source": "getmessage_select",
|
||||||
"reverse": True,
|
# "reverse": True,
|
||||||
"label": "messageitem",
|
# "label": "messageitem",
|
||||||
}
|
#}
|
||||||
|
|
||||||
resolve = {
|
resolve = {
|
||||||
"get": {
|
"get": {
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
from plugins.rmass.actions import pullmessagelist, refresh_tokens, getmessage, synapseregister, synapseassignusername, getrmassuseravatar, rmassavatartosynapse, synapseassignavatar, synapsecreatespace, synapsegetspaceid, synapsecreatedmroom, synapseassigndmavatar, synapsegetroomid, synapseassignspace, synapsepushmessages
|
from plugins.rmass.actions import pullmessagelist, refresh_tokens, getmessage, synapseregister, synapseassignusername, getrmassuseravatar, rmassavatartosynapse, synapseassignavatar, synapsecreatespace, synapsegetspaceid, synapsecreatedmroom, synapseassigndmavatar, synapsegetroomid, synapseassignspace#, synapsepushmessages
|
||||||
|
from plugins.rmass.operations import getrmassconversations, synapsepushmessages
|
||||||
|
|
||||||
|
|
||||||
name = "Get Message List"
|
name = "Get Message List"
|
||||||
|
|
||||||
@@ -7,26 +9,26 @@ kind = "operation"
|
|||||||
actions = [
|
actions = [
|
||||||
refresh_tokens,
|
refresh_tokens,
|
||||||
pullmessagelist,
|
pullmessagelist,
|
||||||
#Recursiveset is used to reference a nested operation inside an operation whose actions are listed in the recursiveset action list
|
getrmassconversations,
|
||||||
"recursiveset",
|
synapsepushmessages,
|
||||||
]
|
]
|
||||||
|
|
||||||
recursiveset = {
|
#recursiveset = {
|
||||||
"source": "pullmessages_select",
|
# "source": "pullmessages_select",
|
||||||
"outputlabel": "messageheaders",
|
# "outputlabel": "messageheaders",
|
||||||
"actions": [
|
# "actions": [
|
||||||
synapseregister,
|
# synapseregister,
|
||||||
synapseassignusername,
|
# synapseassignusername,
|
||||||
getrmassuseravatar,
|
# getrmassuseravatar,
|
||||||
rmassavatartosynapse,
|
# rmassavatartosynapse,
|
||||||
synapseassignavatar,
|
# synapseassignavatar,
|
||||||
getmessage,
|
# getmessage,
|
||||||
#synapsecreatespace,
|
#synapsecreatespace,
|
||||||
#synapsegetspaceid,
|
#synapsegetspaceid,
|
||||||
synapsecreatedmroom,
|
# synapsecreatedmroom,
|
||||||
synapsegetroomid,
|
# synapsegetroomid,
|
||||||
synapseassigndmavatar,
|
# synapseassigndmavatar,
|
||||||
#synapseassignspace,
|
#synapseassignspace,
|
||||||
synapsepushmessages,
|
# synapsepushmessages,
|
||||||
],
|
# ],
|
||||||
}
|
#}
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
from plugins.rmass.actions import synapsepushmessages
|
||||||
|
|
||||||
|
kind = "recursiveset"
|
||||||
|
|
||||||
|
name = "Synapse Message Push Recursive Set"
|
||||||
|
|
||||||
|
recursiveset = {
|
||||||
|
"source": "getmessage_select",
|
||||||
|
"reverse": True,
|
||||||
|
"outputlabel": "messageitem",
|
||||||
|
"actions": [
|
||||||
|
synapsepushmessages,
|
||||||
|
],
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user