a ì)gtã@sfddlmZmZmZeZddlmZddl m Z ddl m Z m Z dZdZddiZd ZGd d „d ƒZd S) é)Úabsolute_importÚdivisionÚprint_function)Ú constants)Ú DataLoader)Úmodule_response_deepcopyÚstrip_internal_keys)ÚfailedÚskipped)ZattemptsÚchangedZretriesZ_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`eZdZdZddd„Zedd„ƒZdd„Zd d „Zd d „Z d d„Z ddd„Z dd„Z dd„Z 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|tƒr"| ¡|_ntƒ |¡|_|durBtƒ|_n||_dS)N) Ú_hostÚ_taskÚ isinstanceÚdictÚcopyÚ_resultrÚloadÚ _task_fields)ÚselfÚhostZtaskZ return_dataZ task_fields©rú@/usr/lib/python3.9/site-packages/ansible/executor/task_result.pyÚ__init__ s   zTaskResult.__init__cCs|j dd¡p|j ¡S)NÚname)rÚgetrZget_name©rrrrÚ task_name.szTaskResult.task_namecCs | d¡S)Nr ©Ú _check_keyrrrrÚ is_changed2szTaskResult.is_changedcCs<d|jvr.|jd}|r.tdd„|Dƒƒr.dS|j dd¡S)NÚresultscss$|]}t|tƒo| dd¡VqdS)r FN)rrr)Ú.0ÚresrrrÚ ;óz(TaskResult.is_skipped..Tr F)rÚallr)rr"rrrÚ is_skipped5s   zTaskResult.is_skippedcCsDd|jvs,d|jvr6ddd„|jdDƒvr6| d¡S| d¡SdS)NÚfailed_when_resultr"TcSsg|]}d|vrd‘qS)r)Tr)r#ÚxrrrÚ Cr&z(TaskResult.is_failed..r )rr rrrrÚ is_failedAs ÿÿ zTaskResult.is_failedcCs | d¡S)NZ unreachablerrrrrÚis_unreachableHszTaskResult.is_unreachableFcCs¢|j d¡}tjo|j d¡}d}|r>| ¡r2|r:| ¡r>d}|dvrLd}nR|dvrZd}nD|dvrt| ¡rt|std}n*|dvrŠ| ¡rŠd}n|d vrž| ¡ržd}|S) NZdebuggerÚ ignore_errorsFT)Úalways)Únever)Z on_failed)Zon_unreachable)Z on_skipped)rrÚCZTASK_DEBUGGER_IGNORE_ERRORSr,r-r()rZglobally_enabledZ _debuggerZ_ignore_errorsÚretrrrÚneeds_debuggerKs  zTaskResult.needs_debuggercCs^t|jtƒr$||jvr$|j |d¡Sd}|j dg¡D]}t|tƒr6|| |d¡O}q6|SdS)z/get a specific key from the result or its itemsFr"N)rrrr)rÚkeyÚflagr$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   dd¡rÞddi}tD]}||j vr¸|j |||<q¸||_ n>|j �rt|j ƒ|_ |D]}||j vrö|j |=qöt|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 rrrÚactionr1Z _ACTION_DEBUGÚ_IGNOREÚ _SUB_PRESERVErrZno_logÚboolrÚ _PRESERVErrÚCLEAN_EXCEPTIONSÚupdate) rÚresultÚignoreZsubsetÚsubr4r*ZpreserveZ remove_keyrrrÚ clean_copyls2   $     zTaskResult.clean_copy)N)F)Ú__name__Ú __module__Ú __qualname__Ú__doc__rÚpropertyrr!r(r,r-r3r rArrrrr s     r N)Z __future__rrrÚtypeZ __metaclass__Zansiblerr1Zansible.parsing.dataloaderrZansible.vars.cleanrrr8r;r9r<r rrrrÚs