3 =\"@sRddlZddlZddlmZddlmZddlmZddlm Z GdddZ dS)N)requests)PrintMsg) CommonTools)TaskCatExceptionc@s eZdZdZddZddZdS) ReportBuilderz0 This class generates the test report. cCs"||_||_||_||_||_dS)N)dashboard_filename test_dataversion _boto_clienttaskcat)selfrrr Z boto_clientr r q/private/var/folders/pf/wv4htv3x0qs2c2mp0dnn0kchsvlck3/T/pip-install-emcbgzcf/taskcat/taskcat/generate_reports.py__init__s zReportBuilder.__init__csDtj}dd}fdd}|j}|j}d}d}d}tj|j} d} |d |d `|jd d d |jd ddd|ddd|| WdQRX|d|dWdQRXWdQRX|dtjd} |dd|d|dd|d|dz|d|d  |d!|||jd"WdQRX|d| d  |d#|| |jd"WdQRX|d$|| WdQRX|dd%"|d&||WdQRXWdQRXWdQRXWdQRXWdQRXWdQRXWdQRX|jd'|dd(|d|d)|d|dd*d+|d,WdQRX|dd-d.|d/WdQRX|dd-d0|d1WdQRX|dd-d2|d3WdQRX|dd-d4|d5WdQRXxj D]} |dd6$|dd7|d8WdQRXWdQRX| j } t t j d9t t j d:j| xF| jD]8}t d;jt|d<t|d<j}||d=|d>\}}|d|dd?"|d&|| WdQRXWdQRX|dd-||d>WdQRX|dd-||d=WdQRX|d||t|WdQRX|dd-:||d>|d=d@}|d|d |dAWdQRXWdQRXWdQRXqBWqW|dd62|dd7dBjdj}||WdQRXWdQRXWdQRX|jd't dCWdQRXWdQRXWdQRXtj|jdDdEdFdG}tjdH}|j||j|SQRXdS)INcSsHd}|dkr$dj||d|}t|S|dkrDdj||d|}t|SdS)Nz.txtcfnlogz {}-{}-{}{}ZcfnlogsZ resource_log resources)formatstr)region stack_nameZ resource_type extensionlocationr r rget_output_filesz6ReportBuilder.generate_report..get_output_filecsd}d}y~jjd|}|j|d}x^|dD]R}|jd}|dkrJd}q.|dkr|d}d j_jjrjjd krd j_q.d}q.WWnbtk rYnNtk r}z2t t j d |t t j t |d }d }WYdd}~XnX||fS)NZcloudformation)Z StackNameZStacksZ StackStatusZCREATE_COMPLETEzclass=test-greenZ CREATE_FAILEDzclass=test-redTFz"Error describing stack named [%s] ZMANUALLY_DELETEDzclass=test-orange)r getZdescribe_stacksr Zone_or_more_tests_failedZretain_if_failedZ run_cleanupr ExceptionprintrERRORDEBUGr)Z stacknamerZrstatusZ status_cssZ cfn_clientZ test_queryresulte)r r r get_teststate$s.    z4ReportBuilder.generate_report..get_teststater z)https://github.com/aws-quickstart/taskcatz`https://raw.githubusercontent.com/aws-quickstart/taskcat/master/assets/css/taskcat_reporting.csszhttp://taskcat.iohtmlheadmetazutf-8)charsetZviewportzwidth=device-width)namecontentstyleztext/css)typetitlezTaskCat Reportbodyz%A - %b,%d,%Y @ %H:%M:%Stablezclass=header-table-filltbodythz colspan=2trtda)hrefz GitHub Repo: brzDocumentation: z Tested on: zclass=taskcat-logoh3pzclass=table-fillthreadzclass=text-centerz width=25%z Test Namezclass=text-leftz width=10%z Tested Regionz width=30%z Stack Namez width=20%zTested Resultsz width=15%z Test Logszclass= test-footerz colspan=5z(Generating Reports)z - Processing {}zReporting on {}ZStackIdrrzclass=test-inforz View Logs zGenerated by {} {} z z T) indentationnewlineZ indent_textw)yattagZDoctagtextrrZstagtimestrftimerZ get_test_namerrINFOrZget_test_stacksrrZparse_stack_infor indentgetvalueopenrwriteclose)r docrr r<r=ZlogoZ repo_linkZcss_urlZ output_cssZdoc_linkZ tested_ontestZtestnamestackZstack_idstatuscssZclogZvtagZ html_outputfiler )r rgenerate_reports               N         2  & &   zReportBuilder.generate_reportN)__name__ __module__ __qualname____doc__rrLr r r rr sr) r>r;Zbotocore.vendoredrZtaskcat.colored_consolerZtaskcat.common_utilsrZtaskcat.exceptionsrrr r r rs