lf_check.py : path updates, font updates, email updates per lf_check_jbr.py (dank u)

Signed-off-by: Chuck SmileyRekiere <chuck.smileyrekiere@candelatech.com>
This commit is contained in:
Chuck SmileyRekiere
2021-06-02 16:24:09 -06:00
parent 0c60abb8fb
commit 297721be01

View File

@@ -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 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 import sys
if sys.version_info[0] != 3: if sys.version_info[0] != 3:
print("This script requires Python3") print("This script requires Python3")
@@ -26,17 +27,14 @@ if sys.version_info[0] != 3:
import os import os
import pexpect import socket
import logging import logging
import time import time
from time import sleep from time import sleep
import argparse import argparse
import json import json
from json import load
import configparser import configparser
from pprint import *
import subprocess import subprocess
import re
import csv import csv
import shutil import shutil
import os.path import os.path
@@ -106,15 +104,41 @@ class lf_check():
self.host_ip_test = None self.host_ip_test = None
# NOT complete : will send the email results # 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 # Following recommendation
# NOTE: https://stackoverflow.com/questions/24196932/how-can-i-get-the-ip-address-from-nic-in-python # 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' #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: try:
if(self.production_run == "TRUE"): 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) 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: 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)) print("running {}".format(command))
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) 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() args = parser.parse_args()
# output report. # 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()) current_time = time.strftime("%Y-%m-%d-%H-%M-%S", time.localtime())
csv_results = "lf_check{}-{}.csv".format(args.outfile,current_time) 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 # Generate Ouptput reports
report.set_title("LF Check: lf_check.py") report.set_title("LF Check: lf_check.py")
report.build_banner() report.build_banner()
report.start_content_div()
report.set_table_title("LF Check Test Results") report.set_table_title("LF Check Test Results")
report.build_table_title() report.build_table_title()
report.set_text("git sha: {}".format(git_sha)) 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)) print("html report: {}".format(html_report))
report.write_pdf_with_timestamp() 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. # 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 # 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_src_png = report_path + "/banner.png"
banner_dest_png = os.path.dirname(os.path.dirname(html_report))+ "/banner.png" banner_dest_png = parent_report_dir + "/banner.png"
CandelaLogo_src_png = os.path.dirname(html_report) + "/CandelaLogo2-90dpi-200x90-trans.png" CandelaLogo_src_png = report_path + "/CandelaLogo2-90dpi-200x90-trans.png"
CandelaLogo_dest_png = os.path.dirname(os.path.dirname(html_report)) + "/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 # copy one directory above
shutil.copyfile(html_report,lf_check_latest_html) shutil.copyfile(html_report, lf_check_latest_html)
shutil.copyfile(html_report,lf_check_html_report) shutil.copyfile(html_report, lf_check_html_report)
# copy banner and logo # copy banner and logo
shutil.copyfile(banner_src_png, banner_dest_png) shutil.copyfile(banner_src_png, banner_dest_png)
shutil.copyfile(CandelaLogo_src_png,CandelaLogo_dest_png) shutil.copyfile(CandelaLogo_src_png, CandelaLogo_dest_png)
print("lf_check_latest.html: {}".format(lf_check_latest_html)) shutil.copyfile(report_src_css, report_dest_css)
print("lf_check_html_report: {}".format(lf_check_html_report)) 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__': if __name__ == '__main__':
main() main()