parent
df357e58ce
commit
938e36f8a7
@ -0,0 +1,60 @@
|
|||||||
|
import time
|
||||||
|
|
||||||
|
def RetryMark(inRDPSessionKeyStr, inGSettings):
|
||||||
|
"""
|
||||||
|
Set mark that Orch will try to reconnect to RDP
|
||||||
|
|
||||||
|
:param inRDPSessionKeyStr: RDP Session key string - to monitor retry count by the RDP Session key
|
||||||
|
:param inGSettings: Orchestrator global settings dict (singleton)
|
||||||
|
:return: None
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
lL = inGSettings.get("Logger", None) # Get the logger instance
|
||||||
|
# Create List by the RDP Session key if not exists
|
||||||
|
if inRDPSessionKeyStr not in inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"]:
|
||||||
|
inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"][inRDPSessionKeyStr] = []
|
||||||
|
inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"][inRDPSessionKeyStr].append(time.time())
|
||||||
|
|
||||||
|
def RetryIsTriggered(inRDPSessionKeyStr, inGSettings):
|
||||||
|
"""
|
||||||
|
Check if you can need to init recovery mode for the RDP
|
||||||
|
|
||||||
|
:param inRDPSessionKeyStr: RDP Session key string - to monitor retry count by the RDP Session key
|
||||||
|
:param inGSettings: Orchestrator global settings dict (singleton)
|
||||||
|
:return: True - Ready to start recovery mode - remotely restart PC; Falsew - else case
|
||||||
|
"""
|
||||||
|
lTimeNowFloat = time.time()
|
||||||
|
lResultBool = False
|
||||||
|
if inRDPSessionKeyStr in inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"]:
|
||||||
|
lTimeNewList = []
|
||||||
|
lCatchCounterInt = 0
|
||||||
|
for inTimeItemFloat in inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"][inRDPSessionKeyStr]:
|
||||||
|
lTimeDeltaFloat = lTimeNowFloat - inTimeItemFloat
|
||||||
|
# Remove item if very old
|
||||||
|
if lTimeDeltaFloat < inGSettings["RobotRDPActive"]["RecoveryDict"]["CatchPeriodSecFloat"]:
|
||||||
|
lTimeNewList.append(inTimeItemFloat)
|
||||||
|
lCatchCounterInt = lCatchCounterInt+1
|
||||||
|
# Set updated list
|
||||||
|
inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"][inRDPSessionKeyStr] = lTimeNewList
|
||||||
|
# Check if counter equal or more
|
||||||
|
if lCatchCounterInt>= inGSettings["RobotRDPActive"]["RecoveryDict"]["TriggerCountInt"]:
|
||||||
|
lResultBool = True
|
||||||
|
return lResultBool
|
||||||
|
|
||||||
|
def RetryHostClear(inHostStr, inGSettings):
|
||||||
|
"""
|
||||||
|
Clear retry stat by the host str
|
||||||
|
|
||||||
|
:param inHostStr: PC host str to be cleared (search the RDPSession keys)
|
||||||
|
:param inGSettings: Orchestrator global settings dict (singleton)
|
||||||
|
:return:
|
||||||
|
"""
|
||||||
|
|
||||||
|
for lRDPSessionKeyStr in inGSettings["RobotRDPActive"]["RDPList"]:
|
||||||
|
lRDPDict = inGSettings["RobotRDPActive"]["RDPList"][lRDPSessionKeyStr]
|
||||||
|
# Check if HOST in UPPER is equal
|
||||||
|
if lRDPDict["Host"].upper() == inHostStr.upper():
|
||||||
|
#Check if RDPSession key exist in stat
|
||||||
|
if lRDPSessionKeyStr in inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"]:
|
||||||
|
del inGSettings["RobotRDPActive"]["RecoveryDict"]["__StatisticsDict__"][lRDPSessionKeyStr]
|
Loading…
Reference in new issue