o nnh@sddlmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZddlmZdd lmZdd lmZd gZeZGd d d e ZdS) ) annotationsN)AnsibleParserError)NonInheritableFieldAttribute) TaskInclude)Role) RoleInclude)Display) string_types)Templar IncludeRolecseZdZdZedZedZedZeeBeBZe ddddd Z e ddddd Z e ddddd Z dfd d Z d d ZdddZedddZdfdd ZfddZZS)r z A Role include is derived from a regular role to handle the special circumstances related to the `- include_role: ...` )namerole) tasks_from vars_from defaults_from handlers_from)applypublicallow_duplicatesrolespec_validateboolNFT)isadefaultprivatealways_post_validatecs2tt|j|||di|_||_d|_d|_dS)N)blockr task_include)superr __init__ _from_files _parent_role _role_name _role_path)selfrr r __class__H/usr/local/lib/python3.10/dist-packages/ansible/playbook/role_include.pyr6s  zIncludeRole.__init__cCs|jp d|j|jfS)z return the name of the task z%s : %s)r actionr!)r#r&r&r'get_name?szIncludeRole.get_namec Cs"|dur |jj}n|}tj|j||||jd}|j|jO_|dur+|j||d}ni}t||d}| |j }t j|||j |d|j |j|jd} |j| j_|j| | j|_| } |} | j| _| j|| d} | D] } | | _| j| _qn| j|| d}|D]}| |_q|j||_| |fS)N)playvariable_managerloadercollection_list)r*task)r, variablesT) parent_role from_files from_includevalidaterstatic)r* dep_chain)_parent_playrloadr! collectionsvarsget_varsr templaterrr rrstatically_loadedr _metadatarolesappendr" get_dep_chainbuild_parent_blockcompileget_handler_blockshandlers)r#r*r+r,myplayriavailable_variablestemplarr1 actual_roler5p_blockblocksbrEhr&r&r'get_block_listCs8       zIncludeRole.get_block_listcCsTt|||dj|||d}t|j}|jd|jd|_|jdur.td|j|d| tj }|rFtd|jd t |f|d| tjD]!} | d } |j| } t| tshtd | t| f| |j| <qL|jd i} | r|jtjvrtd |j|dt| tstd t| |d| tjD] } t|| |j| q|S)N)r)r+r,r r z"'name' is a required field for %s.)objzInvalid options for %s: %s,_fromz+Expected a string for %s but got %s insteadrzInvalid options for %s: applyz,Expected a dict for apply but got %s instead)r load_data frozensetargskeysgetr!rr( difference VALID_ARGSjoinlist intersection FROM_ARGS removesuffix isinstancer typerC_ACTION_INCLUDE_ROLEdict OTHER_ARGSsetattr)datarr rr+r,ir my_arg_namesbad_optskeyfrom_key args_value apply_attrsoptionr&r&r'r8vs,        zIncludeRole.loadcsDtt|j||d}|j|_|j|_|j|_|j|_|j|_|S)N)exclude_parent exclude_tasks)rr copyr=rr r!r")r#rorpnew_mer$r&r'rqs zIncludeRole.copycsXtt|}|jr*||jO}|dgd|j|dgd|jj|S)Nansible_parent_role_namesransible_parent_role_paths) rr get_include_paramsr get_role_params setdefaultinsertr)r")r#vr$r&r'rus zIncludeRole.get_include_params)NNN)NNNNN)FF)__name__ __module__ __qualname____doc__rTBASEr]rdrYrrrrrr)rO staticmethodr8rqru __classcell__r&r&r$r'r "s   3 & ) __future__ransible.constants constantsraansible.errorsransible.playbook.attributeransible.playbook.task_includeransible.playbook.roleransible.playbook.role.includeransible.utils.displayransible.module_utils.sixr ansible.templater __all__displayr r&r&r&r's