diff --git a/py-scripts/tools/lf_check.py b/py-scripts/tools/lf_check.py index 4fbf17e9..1189e0e9 100755 --- a/py-scripts/tools/lf_check.py +++ b/py-scripts/tools/lf_check.py @@ -18,7 +18,8 @@ Before using lf_check.py 2. update lf_check_config.ini to enable (TRUE) tests to be run in the TEST_DICTIONARY , the TEST_DICTIONARY needs to be passed in ''' - +import datetime +import pprint import sys if sys.version_info[0] != 3: print("This script requires Python3") @@ -26,17 +27,14 @@ if sys.version_info[0] != 3: import os -import pexpect +import socket import logging import time from time import sleep import argparse import json -from json import load import configparser -from pprint import * import subprocess -import re import csv import shutil import os.path @@ -106,15 +104,41 @@ class lf_check(): self.host_ip_test = None # NOT complete : will send the email results - def send_results_email(self): + def send_results_email(self, report_file=None): + if (report_file is None): + print( "No report file, not sending email.") + return + report_url=report_file.replace('/home/lanforge/', '') + if report_url.startswith('/'): + report_url = report_url[1:] # Following recommendation # NOTE: https://stackoverflow.com/questions/24196932/how-can-i-get-the-ip-address-from-nic-in-python #command = 'echo "$HOSTNAME mail system works!" | mail -s "Test: $HOSTNAME $(date)" chuck.rekiere@candelatech.com' + hostname = socket.gethostname() + ip = socket.gethostbyname(hostname) + message_txt = """Results from {hostname}:\\n +http://{ip}/{report}\\n +NOTE: for now to see stdout and stderr remove /home/lanforge from path.\\n +""".format(hostname=hostname, ip=ip, report=report_url) + + + mail_subject = "Regression Test [{hostname}] {date}".format(hostname=hostname, + date=datetime.datetime.now()) try: - if(self.production_run == "TRUE"): - command = 'echo "Results from $HOSTNAME {}/html-reports/lf_check_latest.html NOTE: for now to see stdout and stderr remove /home/lanforge from path " | mail -s "Regression Test Results from: $HOSTNAME $(date)" {}'.format(self.host_ip_production,self.email_list_production) + if self.production_run == "TRUE": + msg = message_txt.format(ip=self.host_ip_production) + command = "echo \"{message}\" | mail -s \"{subject}\" {address}".format( + message=msg, + subject=mail_subject, + ip=self.host_ip_production, + address=self.email_list_production) else: - command = 'echo "Results from $HOSTNAME {}/html-reports/lf_check_latest.html NOTE: for now to see stdout and stderr remove /home/lanforge from path" | mail -s "Regression Test Results from: $HOSTNAME $(date)" {}'.format(self.host_ip_test,self.email_list_test) + msg = message_txt.format(ip=ip) + command = "echo \"{message}\" | mail -s \"{subject}\" {address}".format( + message=msg, + subject=mail_subject, + ip=ip, #self.host_ip_test, + address=self.email_list_test) print("running {}".format(command)) process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) @@ -432,7 +456,9 @@ for running scripts listed in lf_check_config.ini args = parser.parse_args() # output report. - report = lf_report(_results_dir_name = "lf_check",_output_html="lf_check.html",_output_pdf="lf-check.pdf") + report = lf_report(_results_dir_name="lf_check", + _output_html="lf_check.html", + _output_pdf="lf-check.pdf") current_time = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime()) csv_results = "lf_check{}-{}.csv".format(args.outfile,current_time) @@ -473,6 +499,7 @@ for running scripts listed in lf_check_config.ini # Generate Ouptput reports report.set_title("LF Check: lf_check.py") report.build_banner() + report.start_content_div() report.set_table_title("LF Check Test Results") report.build_table_title() report.set_text("git sha: {}".format(git_sha)) @@ -484,28 +511,51 @@ for running scripts listed in lf_check_config.ini print("html report: {}".format(html_report)) report.write_pdf_with_timestamp() + + report_path = os.path.dirname(html_report) + parent_report_dir = os.path.dirname(report_path) + # copy results to lastest so someone may see the latest. - lf_check_latest_html = os.path.dirname(os.path.dirname(html_report)) + "/lf_check_latest.html" + lf_check_latest_html = parent_report_dir + "/lf_check_latest.html" # duplicates html_report file up one directory - lf_check_html_report = os.path.dirname(os.path.dirname(html_report)) + "/{}.html".format(outfile) + lf_check_html_report = parent_report_dir + "/{}.html".format(outfile) # - banner_src_png = os.path.dirname(html_report)+ "/banner.png" - banner_dest_png = os.path.dirname(os.path.dirname(html_report))+ "/banner.png" - CandelaLogo_src_png = os.path.dirname(html_report) + "/CandelaLogo2-90dpi-200x90-trans.png" - CandelaLogo_dest_png = os.path.dirname(os.path.dirname(html_report)) + "/CandelaLogo2-90dpi-200x90-trans.png" + banner_src_png = report_path + "/banner.png" + banner_dest_png = parent_report_dir + "/banner.png" + CandelaLogo_src_png = report_path + "/CandelaLogo2-90dpi-200x90-trans.png" + CandelaLogo_dest_png = parent_report_dir + "/CandelaLogo2-90dpi-200x90-trans.png" + report_src_css = report_path + "/report.css" + report_dest_css = parent_report_dir + "/report.css" + custom_src_css = report_path + "/custom.css" + custom_dest_css = parent_report_dir + "/custom.css" + font_src_woff = report_path + "/CenturyGothic.woff" + font_dest_woff = parent_report_dir + "/CenturyGothic.woff" + + #pprint.pprint([ + # ('banner_src', banner_src_png), + # ('banner_dest', banner_dest_png), + # ('CandelaLogo_src_png', CandelaLogo_src_png), + # ('CandelaLogo_dest_png', CandelaLogo_dest_png), + # ('report_src_css', report_src_css), + # ('custom_src_css', custom_src_css) + #]) # copy one directory above - shutil.copyfile(html_report,lf_check_latest_html) - shutil.copyfile(html_report,lf_check_html_report) + shutil.copyfile(html_report, lf_check_latest_html) + shutil.copyfile(html_report, lf_check_html_report) # copy banner and logo - shutil.copyfile(banner_src_png, banner_dest_png) - shutil.copyfile(CandelaLogo_src_png,CandelaLogo_dest_png) - print("lf_check_latest.html: {}".format(lf_check_latest_html)) - print("lf_check_html_report: {}".format(lf_check_html_report)) + shutil.copyfile(banner_src_png, banner_dest_png) + shutil.copyfile(CandelaLogo_src_png, CandelaLogo_dest_png) + shutil.copyfile(report_src_css, report_dest_css) + shutil.copyfile(custom_src_css, custom_dest_css) + shutil.copyfile(font_src_woff, font_dest_woff) - check.send_results_email() + print("lf_check_latest.html: "+lf_check_latest_html) + print("lf_check_html_report: "+lf_check_html_report) + + check.send_results_email(report_file=lf_check_html_report) if __name__ == '__main__': main()