in automated-actions/AWS_EBS_VOLUME_LOST/stepbystep/alexa_skill.py [0:0]
def get_event():
attributes = {"state":globals()['STATE']}
payload = getLatestPhdEvent()
print(payload)
## Get Time ##
x = payload['PhdEventTime']
timeiso = getDateTimeFromISO8601String(x)
## Convert to AU/Melbourne ##
y = dateutil.parser.parse(x)
meltimeiso = y + datetime.timedelta(hours=int(os.environ['timezonedelta']))
eventtimestr = json.dumps(meltimeiso, default = date_handler)
eventtime = datetime.datetime.strptime(eventtimestr.replace("\"", ""), "%Y-%m-%d %H:%M:%S")
systemname = payload['ResourceStack']['StackName']
eventid = payload['PhdEventId']
recoverytime = payload['RestoredResources']['RestoredVolumes'][0]['CreateTime']
recoverystatus = payload['NOTIFMESSAGE']['Message']
# Compose Event time
eventdate = str(eventtime.year) + "-" + str(eventtime.month) + "-" + str(eventtime.day)
eventtimestr = str(eventtime.hour) + ":" + str(eventtime.minute)
dtime = datetime.datetime.strptime(eventtimestr, "%H:%M")
eventtime = dtime.strftime("%I:%M %p")
# Find Recovery Time
reventlist = payload['ResourceStack']['StackEvents']
for revent in reventlist:
if revent['ResourceType'] == "AWS::CloudFormation::Stack":
if revent['ResourceStatus'] == "UPDATE_COMPLETE":
rendtime = revent['Timestamp']
endtime = getDateTimeFromISO8601String(rendtime)
diff = endtime - timeiso
diffseconds = diff.total_seconds()
diffhours = diffseconds // 3600
diffminutes = (diffseconds % 3600) // 60
diffseconds = diffseconds % 60
recoveryhours = str(math.ceil(diffhours))
recoveryminutes = str(math.ceil(diffminutes))
recoveryseconds = str(math.ceil(diffseconds))
LATEST_EVENT = ( "On "+ eventdate + " at " + eventtime + "! System " + systemname + " was down! " + "System is now recovered ! " + " Total Recovery time is " + recoveryhours + " hours " + recoveryminutes + " minutes and " + recoveryseconds + " seconds " + "! Please check kibana for recovery details!")
return response(attributes, response_plain_text(LATEST_EVENT, True))