diff --git a/Orchestrator/ControlPanel_Template.py b/Orchestrator/ControlPanel_Template.py
index 0b4bcd11..04c0c312 100644
--- a/Orchestrator/ControlPanel_Template.py
+++ b/Orchestrator/ControlPanel_Template.py
@@ -16,6 +16,39 @@ gRobotToOrchestratorKeyList = ["Storage",gRobotKeyStr,"RobotToOrchestrator"]
gOrchestratorToRobotResetKeyList = ["Storage",gRobotKeyStr,"OrchestratorToRobotReset"]
gOrchestratorToRobotResetSafeStopKeyList = gOrchestratorToRobotResetKeyList+["SafeTurnOffBool"]
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
+# Activity list
+## Robot START (create RDP session, send CMD to start process)
+gActivityROBOTStartTimeHH_MMStr = "03:00" # Time "HH:MM" [Server time] to execute activity, example "05:10"
+gActivityROBOTStartWeekdayList = [0,1,2,3,4] # WeekdayList when atcivity is starting, default [0,1,2,3,4,5,6]
+gActivityROBOTStartList = [
+ { # Start RDP Session
+ "DefNameStr":"RDPSessionConnect", # Function name in RobotRDPActive.Processor
+ "ArgList":[], # Args list
+ "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr, "inHostStr": gRDPSessionHostStr, "inPortStr": gRDPSessionPortStr, "inLoginStr": gRobotADLoginStr, "inPasswordStr": gRobotADPasswordStr} # Args dictionary
+ },
+ { # Run robot file in RDP session
+ "DefNameStr":"RDPSessionProcessStartIfNotRunning", # Function name in RobotRDPActive.Processor
+ "ArgList":[], # Args list
+ "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr, "inProcessNameWEXEStr": f"{gRobotProcessNameWOEXEStr}.exe", "inFilePathStr": gRobotStartFilePathStr, "inFlagGetAbsPathBool": False} # Args dictionary
+ }
+]
+## Robot FORCE STOP (send CMD to stop process, logoff)
+gActivityROBOTStopTimeHH_MMStr = "08:00" # Time "HH:MM" [Server time] to execute activity, example "05:10"
+gActivityROBOTStopWeekdayList = [0,1,2,3,4] # WeekdayList when atcivity is starting, default [0,1,2,3,4,5,6]
+gActivityROBOTStopList = [
+ { # Kill process
+ "DefNameStr":"RDPSessionProcessStop", # Function name in RobotRDPActive.Processor
+ "ArgList":[], # Args list
+ "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr, "inProcessNameWEXEStr":f"{gRobotProcessNameWOEXEStr}.exe","inFlagForceCloseBool": True} # Args dictionary
+ },
+ { # Logoff RDP Session
+ "DefNameStr":"RDPSessionLogoff", # Function name in RobotRDPActive.Processor
+ "ArgList":[], # Args list
+ "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr} # Args dictionary
+ }
+]
+# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Function, which is generate Dict for front-endswith
def ControlPanelRenderDict(inGSettings):
"""result={
@@ -37,35 +70,11 @@ def ControlPanelRenderDict(inGSettings):
}"""
# START :: Create activities :: START #
## Robot START (create RDP session, send CMD to start process)
- lActivityROBOTStartList = [
- { # Start RDP Session
- "DefNameStr":"RDPSessionConnect", # Function name in RobotRDPActive.Processor
- "ArgList":[], # Args list
- "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr, "inHostStr": gRDPSessionHostStr, "inPortStr": gRDPSessionPortStr, "inLoginStr": gRobotADLoginStr, "inPasswordStr": gRobotADPasswordStr} # Args dictionary
- },
- { # Run robot file in RDP session
- "DefNameStr":"RDPSessionProcessStartIfNotRunning", # Function name in RobotRDPActive.Processor
- "ArgList":[], # Args list
- "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr, "inProcessNameWEXEStr": f"{gRobotProcessNameWOEXEStr}.exe", "inFilePathStr": gRobotStartFilePathStr, "inFlagGetAbsPathBool": False} # Args dictionary
- }
- ]
- lActivityROBOTStartEscaped = f"mGlobal.Processor.ServerValueSet({json.dumps(['RobotRDPActive','ActivityList'])},{json.dumps(lActivityROBOTStartList)});".replace("\"","\'")
+ lActivityROBOTStartEscaped = f"mGlobal.Processor.ServerValueSet({json.dumps(['RobotRDPActive','ActivityList'])},{json.dumps(gActivityROBOTStartList)});".replace("\"","\'")
## Robot SAFE STOP (SAFE STOP COMMAND (FROM ROBOT RULES), Logoff must do robot when safe turn off)
lActivityROBOTSafeStopEscaped = f"mGlobal.Processor.ServerValueSet({json.dumps(gOrchestratorToRobotResetSafeStopKeyList)},true);".replace("\"","\'")
- ## Robot FORCE STOP (create RDP session, send CMD to start process)
- lActivityROBOTStopList = [
- { # Kill process
- "DefNameStr":"RDPSessionProcessStop", # Function name in RobotRDPActive.Processor
- "ArgList":[], # Args list
- "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr, "inProcessNameWEXEStr":f"{gRobotProcessNameWOEXEStr}.exe","inFlagForceCloseBool": True} # Args dictionary
- },
- { # Logoff RDP Session
- "DefNameStr":"RDPSessionLogoff", # Function name in RobotRDPActive.Processor
- "ArgList":[], # Args list
- "ArgDict":{"inRDPSessionKeyStr": gRDPSessionKeyStr} # Args dictionary
- }
- ]
- lActivityROBOTStopEscaped = f"mGlobal.Processor.ServerValueSet({json.dumps(['RobotRDPActive','ActivityList'])},{json.dumps(lActivityROBOTStopList)});".replace("\"","\'")
+ ## Robot FORCE STOP (send CMD to stop process, logoff)
+ lActivityROBOTStopEscaped = f"mGlobal.Processor.ServerValueSet({json.dumps(['RobotRDPActive','ActivityList'])},{json.dumps(gActivityROBOTStopList)});".replace("\"","\'")
# END :: Create activities :: END #
# START :: Init result dict template :: START #
# lBodyKeyValue_r3_start=f'Start'
@@ -117,8 +126,32 @@ def TechDictKeyList_ItemGet(inDict, inKeyList, inDefault={}):
lResult=inDefault
return lResult
# # # # # # # # # # # # # # # # # # # # # # # #
+# Scheduler to start/stop process
+## Start ROBOT at time
+lActivityTimeItemRobotStart = {
+ "TimeHH:MM": gActivityROBOTStartTimeHH_MMStr, #Time [HH:MM] to trigger activity
+ "WeekdayList": gActivityROBOTStartWeekdayList, #List of the weekday index when activity is applicable, Default [1,2,3,4,5,6,7]
+ "Activity":{
+ "Type": "GlobalDictKeyListValueSet", #Activity type
+ "KeyList": ['RobotRDPActive','ActivityList'] # RobotRDP Active ActivityList
+ "Value": gActivityROBOTStartList # ActivityList - see upper
+ }
+}
+## Force stop ROBOT at time
+lActivityTimeItemRobotStop = {
+ "TimeHH:MM": gActivityROBOTStopTimeHH_MMStr, #Time [HH:MM] to trigger activity
+ "WeekdayList": gActivityROBOTStopWeekdayList, #List of the weekday index when activity is applicable, Default [1,2,3,4,5,6,7]
+ "Activity":{
+ "Type": "GlobalDictKeyListValueSet", #Activity type
+ "KeyList": ['RobotRDPActive','ActivityList'] # RobotRDP Active ActivityList
+ "Value": gActivityROBOTStopList # ActivityList - see upper
+ }
+}
#Orchestrator settings update
def SettingsUpdate(inGSettings):
#Add RobotRDPActive in control panel
inGSettings["ControlPanelDict"]["RobotList"].append({"RenderFunction": ControlPanelRenderDict, "KeyStr": gControlPanelKeyStr})
+ # Add scheduler activity in Scheduler.ActivityTimeList
+ inGSettings["Scheduler"]["ActivityTimeList"].append(lActivityTimeItemRobotStart)
+ inGSettings["Scheduler"]["ActivityTimeList"].append(lActivityTimeItemRobotStop)
return inGSettings
\ No newline at end of file
diff --git a/Orchestrator/ProcessorTypes.txt b/Orchestrator/ProcessorTypes.txt
new file mode 100644
index 00000000..a62af5c0
--- /dev/null
+++ b/Orchestrator/ProcessorTypes.txt
@@ -0,0 +1,69 @@
+#Input arg
+# [
+# {
+# "Type": ,
+# host: ,
+# port: ,
+# bodyObject: