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,28 +4,28 @@ from core.runtime.runtimecontract import buildRuntimeAttr, buildPreRuntimeAttr
|
||||
|
||||
def buildAction (action, outputs):
|
||||
|
||||
if hasattr(action, "recursive"):
|
||||
recursiveresponses = []
|
||||
items = outputs[action.recursive["source"]]
|
||||
reverse = action.recursive.get("reverse", False)
|
||||
#if hasattr(action, "recursive"):
|
||||
# recursiveresponses = []
|
||||
# items = outputs[action.recursive["source"]]
|
||||
# reverse = action.recursive.get("reverse", False)
|
||||
#
|
||||
# if reverse:
|
||||
# items = reversed(items)
|
||||
|
||||
if reverse:
|
||||
items = reversed(items)
|
||||
# for item in items:
|
||||
# outputs[action.recursive["label"]] = item
|
||||
# outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
||||
|
||||
for item in items:
|
||||
outputs[action.recursive["label"]] = item
|
||||
outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
||||
# if match:
|
||||
# continue
|
||||
|
||||
if match:
|
||||
continue
|
||||
# response, outputs = executeRequest(action, outputs, resolved)
|
||||
# recursiveresponses.append(response)
|
||||
# outputs, response = buildRuntimeAttr(action, outputs, resolved, response)
|
||||
|
||||
response, outputs = executeRequest(action, outputs, resolved)
|
||||
recursiveresponses.append(response)
|
||||
outputs, response = buildRuntimeAttr(action, outputs, resolved, response)
|
||||
# return outputs, recursiveresponses
|
||||
|
||||
return outputs, recursiveresponses
|
||||
|
||||
else:
|
||||
#else:
|
||||
outputs, resolved, match, filter = buildPreRuntimeAttr(action, outputs)
|
||||
|
||||
if match:
|
||||
|
||||
@@ -2,9 +2,11 @@ from core.execution.action import buildAction
|
||||
from core.execution.operation import buildOperation
|
||||
from core.execution.monitor import buildMonitor
|
||||
from core.runtime import manageFailure
|
||||
from core.execution.recursive import buildRecursive
|
||||
|
||||
def executeContract(module, outputs):
|
||||
|
||||
#print("DEBUGGING")
|
||||
#print(module.name)
|
||||
if module.kind == "operation":
|
||||
|
||||
outputs, responses = buildOperation(module, outputs)
|
||||
@@ -22,5 +24,10 @@ def executeContract(module, outputs):
|
||||
|
||||
return outputs, response
|
||||
|
||||
elif module.kind == "recursiveset":
|
||||
outputs, response = buildRecursive(module, outputs)
|
||||
|
||||
return outputs, response
|
||||
|
||||
#except Exception as error:
|
||||
#outputs = manageFailure(error, module)
|
||||
@@ -1,21 +1,27 @@
|
||||
import logging
|
||||
from core.runtime.managefailure import manageFailure
|
||||
from core.execution.action.action import buildAction
|
||||
from core.runtime.skipstep import skipStep
|
||||
from core.runtime.recursive import recursiveSet
|
||||
#from core.runtime.skipstep import skipStep
|
||||
#from core.runtime.recursive import recursiveSet
|
||||
|
||||
outputs = {}
|
||||
def buildOperation(definition, outputs):
|
||||
from core.execution.executioncontract import executeContract
|
||||
actions = definition.actions
|
||||
responses = []
|
||||
|
||||
for action in actions:
|
||||
|
||||
if action == "recursiveset":
|
||||
outputs, responses = recursiveSet(definition, outputs, responses)
|
||||
#if action == "recursiveset":
|
||||
#if hasattr(action, "recursiveset"):
|
||||
# from core.runtime.recursive import recursiveSet
|
||||
# outputs, responses = recursiveSet(action, outputs, responses)
|
||||
|
||||
else:
|
||||
outputs, response = buildAction(action, outputs)
|
||||
#else:
|
||||
#outputs, response = buildAction(action, outputs)
|
||||
outputs, response = executeContract(action, outputs)
|
||||
|
||||
#if hasattr(action, recursive)
|
||||
|
||||
responses.append(response)
|
||||
|
||||
|
||||
@@ -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.runtime.runtimecontract import buildPreRuntimeAttr, buildRuntimeAttr
|
||||
from core.apirequest import executeRequest
|
||||
#from core.execution.executioncontract import executeContract
|
||||
|
||||
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 = buildAction(job, outputs)
|
||||
outputs, response = executeContract(job, outputs)
|
||||
responses.append(response)
|
||||
|
||||
return outputs, responses
|
||||
@@ -2,6 +2,7 @@ import json
|
||||
from core.runtime.outputs import buildOutput
|
||||
from core.runtime.applyconditions import applyConditions
|
||||
from core.execution.operation import buildOperation
|
||||
from core.execution.executioncontract import executeContract
|
||||
|
||||
def buildListener(listener, self):
|
||||
|
||||
@@ -39,7 +40,7 @@ def buildListener(listener, self):
|
||||
print(item)
|
||||
#Process and forward to RMASS
|
||||
|
||||
outputs, responses = buildOperation(listener.execute, outputs)
|
||||
outputs, responses = executeContract(listener.execute, outputs)
|
||||
|
||||
continue
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@ kind = "action"
|
||||
|
||||
showstatus = True
|
||||
|
||||
recursive = {
|
||||
"source": "getmessage_select",
|
||||
"reverse": True,
|
||||
"label": "messageitem",
|
||||
}
|
||||
#recursive = {
|
||||
# "source": "getmessage_select",
|
||||
# "reverse": True,
|
||||
# "label": "messageitem",
|
||||
#}
|
||||
|
||||
resolve = {
|
||||
"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"
|
||||
|
||||
@@ -7,26 +9,26 @@ kind = "operation"
|
||||
actions = [
|
||||
refresh_tokens,
|
||||
pullmessagelist,
|
||||
#Recursiveset is used to reference a nested operation inside an operation whose actions are listed in the recursiveset action list
|
||||
"recursiveset",
|
||||
getrmassconversations,
|
||||
synapsepushmessages,
|
||||
]
|
||||
|
||||
recursiveset = {
|
||||
"source": "pullmessages_select",
|
||||
"outputlabel": "messageheaders",
|
||||
"actions": [
|
||||
synapseregister,
|
||||
synapseassignusername,
|
||||
getrmassuseravatar,
|
||||
rmassavatartosynapse,
|
||||
synapseassignavatar,
|
||||
getmessage,
|
||||
#recursiveset = {
|
||||
# "source": "pullmessages_select",
|
||||
# "outputlabel": "messageheaders",
|
||||
# "actions": [
|
||||
# synapseregister,
|
||||
# synapseassignusername,
|
||||
# getrmassuseravatar,
|
||||
# rmassavatartosynapse,
|
||||
# synapseassignavatar,
|
||||
# getmessage,
|
||||
#synapsecreatespace,
|
||||
#synapsegetspaceid,
|
||||
synapsecreatedmroom,
|
||||
synapsegetroomid,
|
||||
synapseassigndmavatar,
|
||||
# synapsecreatedmroom,
|
||||
# synapsegetroomid,
|
||||
# synapseassigndmavatar,
|
||||
#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