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: +# }, +# { +# "Type": "CMDStart", +# "Command": "" +# }, +# { +# "Type": "OrchestratorRestart" +# }, +# { +# "Type": "GlobalDictKeyListValueSet", +# "KeyList": ["key1","key2",...], +# "Value": +# }, +# { +# "Type": "GlobalDictKeyListValueAppend", +# "KeyList": ["key1","key2",...], +# "Value": +# }, +# { +# "Type": "GlobalDictKeyListValueGet", +# "KeyList": ["key1","key2",...] +# }, +# { +# "Type":"ProcessStart", +# "Path":"", +# "ArgList":[] +# +# }, +# { +# "Type":"ProcessStartIfTurnedOff", +# "CheckTaskName":"", #Check if current task name is not active (then start process), +# "Path":"", +# "ArgList":[] +# +# }, +# { +# "Type":"ProcessStop", +# "Name":"", +# "FlagForce":True, +# "User":"" #Empty, user or %username% +# }, +# { +# "Type":"PythonStart", +# "ModuleName":"", +# "FunctionName":"", +# "ArgList":[], +# "ArgDict":{} +# }, +# { +# "Type":"WindowsLogon", +# "Domain":"", +# "User":"", +# "Password":"" +# # Return "Result": True - user is logged on, False - user is not logged on +# } +# ] +################################## +#Output result +# with attributes: +# "DateTimeUTCStringStart" +# "DateTimeUTCStringStop" +# "Result" \ No newline at end of file