a )gt@sfddlmZmZmZeZddlmZddl m Z ddl m Z m Z dZdZddiZd ZGd d d Zd S) )absolute_importdivisionprint_function) constants) DataLoader)module_response_deepcopystrip_internal_keys)failedskipped)ZattemptschangedZretriesZ_ansible_delegated_vars)Z ansible_hostZ ansible_portZ ansible_userZansible_connection)Z_ansible_verbose_alwaysZ_ansible_item_label_ansible_no_logZ_ansible_verbose_overridec@s`eZdZdZdddZeddZddZd d Zd d Z d dZ dddZ ddZ ddZ dS) TaskResultz This class is responsible for interpreting the resulting data from an executed task, and provides helper methods for determining the result of a given task. NcCsL||_||_t|tr"||_nt||_|durBt|_n||_dS)N) _host_task isinstancedictcopy_resultrload _task_fields)selfhostZtaskZ return_dataZ task_fieldsr@/usr/lib/python3.9/site-packages/ansible/executor/task_result.py__init__ s   zTaskResult.__init__cCs|jddp|jS)Nname)rgetrZget_namerrrr task_name.szTaskResult.task_namecCs |dS)Nr  _check_keyrrrr is_changed2szTaskResult.is_changedcCs<d|jvr.|jd}|r.tdd|Dr.dS|jddS)Nresultscss$|]}t|to|ddVqdS)r FN)rrr).0resrrr ;z(TaskResult.is_skipped..Tr F)rallr)rr"rrr is_skipped5s   zTaskResult.is_skippedcCsDd|jvs,d|jvr6ddd|jdDvr6|dS|dSdS)Nfailed_when_resultr"TcSsg|]}d|vrdqS)r)Tr)r#xrrr Cr&z(TaskResult.is_failed..r )rr rrrr is_failedAs  zTaskResult.is_failedcCs |dS)NZ unreachablerrrrris_unreachableHszTaskResult.is_unreachableFcCs|jd}tjo|jd}d}|r>|r2|r:|r>d}|dvrLd}nR|dvrZd}nD|dvrt|rt|std}n*|dvr|rd}n|d vr|rd}|S) NZdebugger ignore_errorsFT)always)never)Z on_failed)Zon_unreachable)Z on_skipped)rrCZTASK_DEBUGGER_IGNORE_ERRORSr,r-r()rZglobally_enabledZ _debuggerZ_ignore_errorsretrrrneeds_debuggerKs  zTaskResult.needs_debuggercCs^t|jtr$||jvr$|j|dSd}|jdgD]}t|tr6|||dO}q6|SdS)z/get a specific key from the result or its itemsFr"N)rrrr)rkeyflagr$rrrr `s zTaskResult._check_keyc Cs,t|j|ji|j}|jr2|jjtjvr2td}nt}i}tD]H}||j vr>i||<t|D](}||j |vr\|j |||||<q\q>t |jj t r|jj s|j ddrddi}tD]}||j vr|j |||<q||_ n>|j rt|j |_ |D]}||j vr|j |=qt|j td|j ||S)z# returns 'clean' taskresult object )Z invocationr FZcensoredz\the output has been hidden due to the fact that 'no_log: true' was specified for this result) exceptions)r rrractionr1Z _ACTION_DEBUG_IGNORE _SUB_PRESERVErrZno_logboolr _PRESERVErrCLEAN_EXCEPTIONSupdate) rresultignoreZsubsetsubr4r*ZpreserveZ remove_keyrrr clean_copyls2   $     zTaskResult.clean_copy)N)F)__name__ __module__ __qualname____doc__rpropertyrr!r(r,r-r3r rArrrrr s     r N)Z __future__rrrtypeZ __metaclass__Zansiblerr1Zansible.parsing.dataloaderrZansible.vars.cleanrrr8r;r9r<r rrrrs