??????????????
Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 173

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 174

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 175

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 176

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 177

Warning: Cannot modify header information - headers already sent by (output started at /home/mybf1/public_html/mentol.bf1.my/SS1.php:4) in /home/mybf1/public_html/mentol.bf1.my/SS1.php on line 178
ó àUdac@`s^ddlmZmZmZeZdZddlZddlZddl Z ddl m Z ddl mZmZddlmZy ddlmZmZeZWnek r»eZnXyddlmZeZWnEek ryddlmZeZWqek reZqXnXd efd „ƒYZd dd „ƒYZd dd„ƒYZdS(i(tabsolute_importtdivisiontprint_functions callback: junit type: aggregate short_description: write playbook output to a JUnit file. version_added: historical description: - This callback writes playbook output to a JUnit formatted XML file. - "Tasks show up in the report as follows: 'ok': pass 'failed' with 'EXPECTED FAILURE' in the task name: pass 'failed' with 'TOGGLE RESULT' in the task name: pass 'ok' with 'TOGGLE RESULT' in the task name: failure 'failed' due to an exception: error 'failed' for other reasons: failure 'skipped': skipped" options: output_dir: name: JUnit output dir default: ~/.ansible.log description: Directory to write XML files to. env: - name: JUNIT_OUTPUT_DIR task_class: name: JUnit Task class default: False description: Configure the output to be one class per yaml file env: - name: JUNIT_TASK_CLASS task_relative_path: name: JUnit Task relative path default: none description: Configure the output to use relative paths to given directory version_added: "2.8" env: - name: JUNIT_TASK_RELATIVE_PATH fail_on_change: name: JUnit fail on change default: False description: Consider any tasks reporting "changed" as a junit test failure env: - name: JUNIT_FAIL_ON_CHANGE fail_on_ignore: name: JUnit fail on ignore default: False description: Consider failed tasks as a junit test failure even if ignore_on_error is set env: - name: JUNIT_FAIL_ON_IGNORE include_setup_tasks_in_report: name: JUnit include setup tasks in report default: True description: Should the setup tasks be included in the final report env: - name: JUNIT_INCLUDE_SETUP_TASKS_IN_REPORT hide_task_arguments: name: Hide the arguments for a task default: False description: Hide the arguments for a task version_added: "2.8" env: - name: JUNIT_HIDE_TASK_ARGUMENTS test_case_prefix: name: Prefix to find actual test cases default: description: Consider a task only as test case if it has this value as prefix. Additionaly failing tasks are recorded as failed test cases. version_added: "2.8" env: - name: JUNIT_TEST_CASE_PREFIX requirements: - whitelist in configuration - junit_xml (python lib) N(t constants(tto_bytestto_text(t CallbackBase(t TestSuitetTestCase(t OrderedDicttCallbackModulecB`sÂeZdZdZdZdZeZd„Zd„Z d„Z d„Z d„Z d „Z d „Zd „Zd „Zd „Zd„Zd„Zed„Zd„Zd„Zd„Zd„ZRS(s8 This callback writes playbook output to a JUnit formatted XML file. Tasks show up in the report as follows: 'ok': pass 'failed' with 'EXPECTED FAILURE' in the task name: pass 'failed' with 'TOGGLE RESULT' in the task name: pass 'ok' with 'TOGGLE RESULT' in the task name: failure 'failed' due to an exception: error 'failed' for other reasons: failure 'skipped': skipped This plugin makes use of the following environment variables: JUNIT_OUTPUT_DIR (optional): Directory to write XML files to. Default: ~/.ansible.log JUNIT_TASK_CLASS (optional): Configure the output to be one class per yaml file Default: False JUNIT_TASK_RELATIVE_PATH (optional): Configure the output to use relative paths to given directory Default: none JUNIT_FAIL_ON_CHANGE (optional): Consider any tasks reporting "changed" as a junit test failure Default: False JUNIT_FAIL_ON_IGNORE (optional): Consider failed tasks as a junit test failure even if ignore_on_error is set Default: False JUNIT_INCLUDE_SETUP_TASKS_IN_REPORT (optional): Should the setup tasks be included in the final report Default: True JUNIT_HIDE_TASK_ARGUMENTS (optional): Hide the arguments for a task Default: False JUNIT_TEST_CASE_PREFIX (optional): Consider a task only as test case if it has this value as prefix. Additionaly failing tasks are recorded as failed test cases. Default: Requires: junit_xml g@t aggregatetjunitcC`sŽtt|ƒjƒtjdtjjdƒƒ|_tjddƒjƒ|_ tjddƒ|_ tjddƒjƒ|_ tjddƒjƒ|_ tjd d ƒjƒ|_ tjd dƒjƒ|_tjd dƒ|_d|_d|_d|_d|_t|_ts4t|_|jjd ƒntrItƒ|_nt|_|jjdƒtjj|jƒsŠtj|jƒndS(NtJUNIT_OUTPUT_DIRs~/.ansible.logtJUNIT_TASK_CLASStFalsetJUNIT_TASK_RELATIVE_PATHttJUNIT_FAIL_ON_CHANGEtJUNIT_FAIL_ON_IGNOREt#JUNIT_INCLUDE_SETUP_TASKS_IN_REPORTtTruetJUNIT_HIDE_TASK_ARGUMENTStJUNIT_TEST_CASE_PREFIXsVThe `junit_xml` python module is not installed. Disabling the `junit` callback plugin.sXThe `ordereddict` python module is not installed. Disabling the `junit` callback plugin.(tsuperR t__init__tostgetenvtpatht expandusert _output_dirtlowert _task_classt_task_relative_patht_fail_on_changet_fail_on_ignoret_include_setup_tasks_in_reportt_hide_task_argumentst_test_case_prefixtNonet_playbook_patht_playbook_namet _play_namet _task_dataRtdisabledt HAS_JUNIT_XMLRt_displaytwarningtHAS_ORDERED_DICTR texiststmakedirs(tself((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyR“s.!       cC`sÄ|j}||jkrdS|j}|jƒjƒ}|jƒ}|j}|j r¡|jdkr¡dj d„|j j ƒDƒƒ}|r¡|d|7}q¡nt |||||ƒ|j|Âst ( t_uuidR+R*tget_nametstriptget_pathtactiontno_logR%tjointargstitemstTaskData(R3ttasktuuidtplaytnameRR<R?((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyt _start_task´s    "c C`s,|jj}t|dƒr6|jj}|jj}n d}d}|j|}|jdkrˆ|dkrˆ|jjdt ƒrˆd}n|dkr¬d|jkr¬d}n<d|jkrè|dkrÐd}qè|dkrèd}qèn|jj |j ƒs |dkr(|j t ||||ƒƒnd S( s0 record the results of a task for a single host t_hosttincludettruetoktchangedtfailedsEXPECTED FAILUREs TOGGLE RESULTN(t_taskR8thasattrRGRER+R"t_resulttgetRt startswithR&tadd_hosttHostData(R3tstatustresultt task_uuidt host_uuidt host_namet task_data((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyt _finish_taskÈs$   0      !c C`sõd|j|j|jf}|j|j}|jrStjj|j|jƒ}n |j}|jdkrƒt j dd|ƒ}n|j dkr¨t ||||j ƒS|j j}|jddƒ}|j|ddƒ}|j|ƒ}|j d kr t ||||ƒSt |||ƒ} |j d kr³d |krs|d jƒjd ƒd } |d } | j| | ƒqñd|krœ|d} | j| |ƒqñ| jd||ƒn>|j dkrñd|krÛ|d} nd} | j| ƒn| S(s7 build a TestCase from the given TaskData and HostData s [%s] %s: %sRIs \.yml:[0-9]+$RtincludedtrcitindentRJRLt exceptions iÿÿÿÿtmsgsrc=%stskippedt skip_reason(RERDtfinishtstartR!RRtrelpathR tretsubRTRRURORPt _dump_resultst_cleanse_stringR:tsplittadd_error_infotadd_failure_infotadd_skipped_info( R3RYt host_dataREtdurationtjunit_classnametresR\tdumpt test_casetmessagetoutput((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyt_build_test_caseås>         cC`stt|ddƒddƒS(s] convert surrogate escapes to the unicode replacement character to avoid XML encoding errors terrorstsurrogateescapetreplace(RR(R3tvalue((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyRhsc C`s g}x}|jjƒD]l\}}|jtjkrI|jdkrIqnx6|jjƒD]%\}}|j|j||ƒƒqYWqWt |j |ƒ}t j |gƒ}t j j|jd|j tjƒfƒ}t|dƒ } | jt|ddƒƒWdQXdS(sF generate a TestSuite report from the collected TaskData and HostData R4s %s-%s.xmltwbRvtsurrogate_or_strictN(R+R@R<tCt _ACTION_SETUPR$RmtappendRuRR)t to_xml_stringRRR>RttimetopentwriteR( R3t test_casesRVRYRWRmt test_suitetreportt output_filetxml((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyt_generate_reports!!+cC`s8|j|_tjjtjj|jƒƒd|_dS(Ni(t _file_nameR(RRtsplitexttbasenameR)(R3tplaybook((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_playbook_on_start+s cC`s|jƒ|_dS(N(R9R*(R3RD((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_playbook_on_play_start/scC`s|j|ƒdS(N(RF(R3RB((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_runner_on_no_hosts2scC`s|j|ƒdS(N(RF(R3RBtis_conditional((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_playbook_on_task_start5scC`s|j|ƒdS(N(RF(R3RB((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyt!v2_playbook_on_cleanup_task_start8scC`s|j|ƒdS(N(RF(R3RB((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyt!v2_playbook_on_handler_task_start;scC`s<|r(|jdkr(|jd|ƒn|jd|ƒdS(NRIRJRL(R#RZ(R3RUt ignore_errors((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_runner_on_failed>scC`s|jd|ƒdS(NRJ(RZ(R3RU((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_runner_on_okDscC`s|jd|ƒdS(NR`(RZ(R3RU((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_runner_on_skippedGscC`s|jd|ƒdS(NR[(RZ(R3t included_file((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_playbook_on_includeJscC`s|jƒdS(N(Rˆ(R3tstats((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pytv2_playbook_on_statsMs(t__name__t __module__t__doc__tCALLBACK_VERSIONt CALLBACK_TYPEt CALLBACK_NAMERtCALLBACK_NEEDS_WHITELISTRRFRZRuRhRˆRRŽRR‘R’R“RR•R–R—R™R›(((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyR is,# !   .            RAcB`s eZdZd„Zd„ZRS(s( Data about an individual task. cC`sU||_||_||_||_d|_tƒ|_tjƒ|_||_ dS(N( RCRERRDR'RcR RmR€R<(R3RCRERRDR<((sB/usr/lib/python2.7/site-packages/ansible/plugins/callback/junit.pyRVs      cC`s†|j|jkrr|jdkrGd|j|jj|jf|_qrtd|j|j|j|jfƒ‚n||j|js2H          è