in taskcat/_cfn/_log_stack_events.py [0:0]
def write_logs(self, stack: Stack, logpath: Path):
stackname = stack.name
region = stack.region_name
# Get stack resources
cfnlogs = self.get_cfnlogs(stack)
if len(cfnlogs) != 0:
if cfnlogs[0]["ResourceStatus"] != "CREATE_COMPLETE":
if "ResourceStatusReason" in cfnlogs[0]:
reason = cfnlogs[0]["ResourceStatusReason"]
else:
reason = "Unknown"
else:
reason = "Stack launch was successful"
with open(str(logpath), "a", encoding="utf-8") as log_output:
log_output.write(
"------------------------------------------------------------------"
"-----------\n"
)
log_output.write("Region: " + region + "\n")
log_output.write("StackName: " + stackname + "\n")
log_output.write(
"******************************************************************"
"***********\n"
)
log_output.write("ResourceStatusReason: \n")
log_output.write(textwrap.fill(str(reason), 85) + "\n")
log_output.write(
"******************************************************************"
"***********\n"
)
log_output.write(
"******************************************************************"
"***********\n"
)
log_output.write("Events: \n")
log_output.writelines(tabulate.tabulate(cfnlogs, headers="keys"))
log_output.write(
"\n****************************************************************"
"*************\n"
)
log_output.write(
"------------------------------------------------------------------"
"-----------\n"
)
log_output.write(
"Tested on: "
+ datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
+ "\n"
)
log_output.write(
"------------------------------------------------------------------"
"-----------\n\n"
)
log_output.close()
for child in stack.descendants(refresh=True):
self.write_logs(child, logpath)
else:
LOG.error(
"No event logs found. Something went wrong at describe event " "call."
)