%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /lib/python3/dist-packages/cloudinit/config/__pycache__/
Upload File :
Create Path :
Current File : //lib/python3/dist-packages/cloudinit/config/__pycache__/cc_ansible.cpython-312.pyc

�

���f��
��UdZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
ddlmZm
Z
ddlmZddlmZddlmZdd	lmZmZdd
lmZddlmZdeegd
gd�Zeed<ej:e�ZdZ Gd�dejB�Z"Gd�de"�Z#Gd�de"�Z$de%dedede&ddf
d�Z'de(fd�Z)de(de(fd�Z*de"de(fd �Z+de(d
e"fd!�Z,de(d
e"fd"�Z-y)#z9ansible enables running on first boot either ansible-pull�N)�deepcopy)�Optional)�	lifecycle�subp)�Cloud)�Config)�
MetaSchema)�ALL_DISTROS�Distro)�PER_INSTANCE)�get_cfg_by_path�
cc_ansible�ansible)�id�	frequency�distros�activate_by_schema_keys�meta�ansible_configc��eZdZdefd�Zdeejfd�Zde	fd�Z
d�Zdefd�Z
d	�Zej d
��Zej de	fd��Zy
)�AnsiblePull�distroc��dg|_ddg|_||_i|_d|_t
jjdd�|jd<y)Nzansible-pullz	--version�HOMEz/root)�cmd_pull�cmd_versionr�env�run_user�os�environ�get)�selfrs  �=/usr/lib/python3/dist-packages/cloudinit/config/cc_ansible.py�__init__zAnsiblePull.__init__ sM��'�(��
�*�K�8���������'+��
��:�:�>�>�&�'�:�������returnc��|j|j�\}}|j�jd�}t	j
d|�}|r0|j
d�}tjj|�Sy)Nrz	([\d\.]+))
�do_asr�
splitlines�pop�re�search�groupr�Version�from_str)r"�stdout�_�
first_line�matches�versions      r#�get_versionzAnsiblePull.get_version+sn���J�J�t�/�/�0�	����&�&�(�,�,�Q�/�
��)�)�L�*�5����m�m�A�&�G��$�$�-�-�g�6�6�r%c�J�|jg|j�|��\}}|S�N)r(r)r"�argsr0r1s    r#�pullzAnsiblePull.pull4s(���J�J�6����6��6�7�	����
r%c�:�|j�std��y)Nz!command: ansible is not installed)�is_installed�
ValueError�r"s r#�
check_depszAnsiblePull.check_deps8s��� � �"��@�A�A�#r%�commandc��|js|j|fi|��S|jj||jfi|��Sr7)rrrr(�r"r?�kwargss   r#r(zAnsiblePull.do_as<sA���}�}��4�9�9�W�/��/�/� �t�{�{� � ��$�-�-�B�6�B�Br%c�F�tj|fd|ji|��S)N�
update_env)rrrAs   r#rzAnsiblePull.subpAs���y�y��@�T�X�X�@��@�@r%c��yr7�r=s r#r;zAnsiblePull.is_installedD���r%�pkg_namec��yr7rF�r"rHs  r#�installzAnsiblePull.installHrGr%N)�__name__�
__module__�__qualname__rr$rrr.r5�strr9r>�listr(r�abc�abstractmethodr;rKrFr%r#rrs���	;�v�	;��X�i�&7�&7�8���S��B�C�T�C�
A�	���
��
�	���
��
��
r%rc�F��eZdZdedeef�fd�Zdefd�Zdefd�Z	�xZ
S)�AnsiblePullPipr�userc� ��t�|�|�||_|jtj
ddg�\}}|�d�}|jjd�}|r!dj||g�|jd<y||jd<y)Nz-cz('import site; print(site.getuserbase())'z/bin/�PATH�:)	�superr$rr(�sys�
executablerr!�join)r"rrU�	user_baser1�ansible_path�old_path�	__class__s       �r#r$zAnsiblePullPip.__init__Ns����
���� ���
��z�z�
�^�^�T�#M�N�
��	�1�$��E�*���8�8�<�<��'���"�x�x��<�(@�A�D�H�H�V��+�D�H�H�V�r%rHc�*�|j�s�	ddl}tjdddg}tjjtjjtjd�d��r|jd�|jr|jd	�|j!g|�d
�d��|j!g|�|��yy#t$r3|jj	|jj
g�Y��wxYw)zishould cloud-init grow an interface for non-distro package
        managers? this seems reusable
        rN�-m�piprK�stdlibzEXTERNALLY-MANAGEDz--break-system-packagesz--userz	--upgrade)r;rc�ImportErrorr�install_packages�pip_package_namerZr[r�path�existsr\�	sysconfig�get_path�appendrr()r"rHrc�cmds    r#rKzAnsiblePullPip.install]s���� � �"�
M��������	�C��w�w�~�~�������&�&�x�0�2F���
�
�
�4�5��}�}��
�
�8�$��J�J�1��1�k�1�5�1�2��J�J�'��'�h�'�(�+#���
M����,�,�d�k�k�.J�.J�-K�L�
M�s�C�9D�Dr&c�V�|jtjdddg�\}}d|vS)NrbrcrPr)r(rZr[)r"r0r1s   r#r;zAnsiblePullPip.is_installedxs,���J�J�����e�V�D�E�	����F�"�"r%)rLrMrNrrrOr$rK�boolr;�
__classcell__)r`s@r#rTrTMs2���
,�v�
,�X�c�]�
,�)��)�6#�d�#r%rTc�$�eZdZdefd�Zdefd�Zy)�AnsiblePullDistrorHc�^�|j�s|jj|g�yyr7)r;rrfrJs  r#rKzAnsiblePullDistro.install~s'��� � �"��K�K�(�(�(��4�#r%r&c�>�ttjd��S)Nr)ror�whichr=s r#r;zAnsiblePullDistro.is_installed�s���D�J�J�y�)�*�*r%N)rLrMrNrOrKror;rFr%r#rrrr}s��5��5�+�d�+r%rr�name�cfg�cloudr8r&c�\�|jdi�}|jd�}|jd�}|jd�}|jd�}|jd�}	|jdd�}
|r�t|�|j}|d	k(r
t||�}nt	|�}|j|
�|j
�|jd
d�}
|
r|
|jt<|rt||�|	rt|t|	��|r
t||�yyy)Nrr�install_method�setup_controller�galaxyr9�package_name�rcr)
r!�validate_configrrTrrrKr>r�CFG_OVERRIDE�ansible_galaxy�run_ansible_pullr�ansible_controller)rvrwrxr8�ansible_cfg�ansible_userrzr{�
galaxy_cfg�pull_cfgr}rrrs              r#�handler��s�����	�2�.�K��?�?�:�.�L� �_�_�%5�6�N�"���'9�:������*�J����v�&�H��?�?�>�2�6�L����$������U�"�$�V�\�:�G�'��/�G�����%�����$���)9�2�>���(6�G�K�K��%���:�w�/���W�h�x�&8�9���/��9��-r%c�z�d}|D]}t||�r�td|�d|����|jd�r$dD]}t||�r�td|�d|����|jd�}|r9t|jd�|jd�g�std	|����|d
}|dvrtd��y)
N)rzr}zMissing required key 'z' from r9)zpull/urlzpull/playbook_namer{�repositories�run_ansiblezMissing required key from rz)rcrz Invalid install method {install})r
r<r!�any)rw�
required_keys�key�controller_cfgrKs     r#rr�s����M��I���s�C�(��5�c�U�'�#��G�H�H�I��w�w�v��3�	M�C�"�3��,� �#9�#��g�c�U�!K�L�L�	M��W�W�/�0�N����"�"�>�2��"�"�=�1�
�
��9�.�9I�J�K�K��"�#�G��'�'��;�<�<�(r%c�~�|j�D��cic]\}}|dur|jdd�|��c}}Scc}}w)zremove boolean false valuesFr1�-)�items�replace)rwr��values   r#�filter_argsr��sF�� �I�I�K���S�%����	���C���u�$����s�!9r9c��|jd�}|j�}|stjd�n^|t	j
ddd�krD|j
d�r3td|j�d|j�d|j�d	���|jgt|�j�D��cgc]\}}|d
urd|�d|��nd|����c}}�|���}|r!tjj!|��yycc}}w)
N�
playbook_namezCannot parse ansible version��r�diffzAnsible version �.z%doesn't support --diff flag, exiting.T�--�=)r*r5�LOG�warningrr.r!r<�major�minor�patchr9r�r�rZr0�write)r9rwr��vr�r�r0s       r#r�r��s������1�M�����A�����2�3�	
�Y�
�
�q�!�Q�
'�	'��7�7�6�?��"�1�7�7�)�1�Q�W�W�I�Q�q�w�w�i�7�8��
��T�Y�Y��*�#�.�4�4�6�

���U�#(�t�"3�b���Q�u�g��2�c�U��C�

��
	��F���
�
���F�8�%���


s�D	c��|jdg�}|stjd|�|D]}|j|��y)N�actionszInvalid config: %s)r!r�r�r()rwrr�r?s    r#r�r��s?���g�g�i��$�G�����(�#�.�����
�
�g��r%c
�x�|jdg�D]}|jdd|d|dg��|jdg�D]m}|jd�}|jd�}d	|gt|�j	�D��cgc]
\}}d
|�d|����c}}�}|j||���oycc}}w)
Nr��git�clone�sourcerhr��playbook_dirr�zansible-playbookr�r�)�cwd)r!r(r*r�r�)	rwr�
repositoryr8r�r�r�r�r?s	         r#r�r��s����g�g�n�b�1�
�
��
�
�
�G�Z��1�:�f�3E�F�	
�
����
�r�*�1���x�x��/������1�
���
�4?�t�3D�3J�3J�3L�
M�Z�S�%��3�%�q��� �
M�
��
	�
�
�g�<�
�0�1��Ns�	B6
).�__doc__rQ�loggingrr+rZrj�copyr�typingr�	cloudinitrr�cloudinit.cloudr�cloudinit.configr�cloudinit.config.schemar	�cloudinit.distrosr
r�cloudinit.settingsr�cloudinit.utilr
r�__annotations__�	getLoggerrLr�r��ABCrrTrrrOrPr��dictrr�r�r�r�rFr%r#�<module>r�s��?�
��	�	�
����%�!�#�.�1�+�*����}� )�{�	��j���g����!����+
�#�'�'�+
�\-#�[�-#�`+��+�":��":�6�":�%�":�t�":��":�J=��=�8�T��d��&�;�&�T�&�0���{��
1�D�
1�;�
1r%

Zerion Mini Shell 1.0