HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/cloudinit/sources/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/cloudinit/sources/__pycache__/DataSourceMAAS.cpython-312.pyc
�

�f�<���ddlZddlZddlZddlZddlmZmZmZddlm	Z	ddl
mZeje
�ZdZgd�ZGd�dej"�ZGd	�d
e�Zd�Zd�Zd
�Zddeddfd�Zd�ZGd�de�ZGd�de�Zeej8ffeej8ej:ffgZd�Ze
dk(rd�Z e �yy)�N)�sources�
url_helper�util)�KlibcNetworkConfigSource)�NetworkConfigSourcez
2012-03-01))�meta-data/instance-idrFF)�meta-data/local-hostnamer	FF)�meta-data/public-keysr
FT)zmeta-data/vendor-data�vendor-dataTT)�	user-datarTTc�V�eZdZdZdZdZdZd�Zed��Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zy)�DataSourceMAASz�
    DataSourceMAAS reads instance information from MAAS.
    Given a config metadata_url, and oauth tokens, it expects to find
    files under the root named:
      instance-id
      user-data
      hostname
      vendor-data
    �MAASNc���tjj||||�d|_tj
j
|jd�|_t|j�|_
y)N�maas)r�
DataSource�__init__�base_url�os�path�join�seed_dir�get_id_from_ds_cfg�ds_cfg�id_hash)�self�sys_cfg�distro�pathss    �B/usr/lib/python3/dist-packages/cloudinit/sources/DataSourceMAAS.pyrzDataSourceMAAS.__init__.sM�����#�#�D�'�6�5�A���
������U�^�^�V�<��
�)�$�+�+�6���c�f�|jst|j�|_|jS�N)�
_oauth_helper�get_oauth_helperr�rs r �oauth_helperzDataSourceMAAS.oauth_helper4s(���!�!�!1�$�+�+�!>�D���!�!�!r!c�d�tjj|�}|�d|j�d�S)Nz [�])rr�__str__r)r�roots  r r*zDataSourceMAAS.__str__:s'���!�!�)�)�$�/�� �$�-�-�0�0r!c	��|j}	|j|jt|j��y#t$rYn2t
$r'}tjd|j|��d}~wwxYw|jdd�}|sy	|j|�sy|j|t||jj|jd���y#t$rtj td|�YywxYw)NTz%s was malformed: %s�metadata_urlF�)�read_file_or_urlr�retriesz$Failed fetching metadata from url %s)r�	_set_datar�read_maas_seed_dir�MAASSeedDirNone�MAASSeedDirMalformed�LOG�warning�get�wait_for_metadata_service�read_maas_seed_urlr'�readurlr�	Exceptionr�logexc)r�mcfg�exc�urls    r �	_get_datazDataSourceMAAS._get_data>s����{�{��	��N�N�4�=�=�*<�T�]�]�*K�L����	��#�	��K�K�.��
�
�s�C���	��
�h�h�~�t�,����	�
�1�1�#�6���N�N��"��%)�%6�%6�%>�%>��*�*��	�
����	��K�K��C�S�I��	�s3�/>�	A8�	A8�"A3�3A8�C!�#=C!�!$D�Dc���||_|\}}}||_||_||_|r	t	j
|�|_yy#t$r'}tjd|�d|_Yd}~yd}~wwxYw)Nz"Invalid content in vendor-data: %s)
r�userdata_raw�metadata�vendordata_purer�convert_vendordata�vendordata_raw�
ValueErrorr5r6)rr?�data�ud�md�vd�es       r r1zDataSourceMAAS._set_dataesw����
��
��B�������
�!���
�
+�&-�&@�&@��&D��#����
+����@�!�D�&*��#�#��
+�s�A�	A2�A-�-A2c� �d|jzS)z/Return the subplatform metadata source details.z
seed-dir (%s))rr&s r �_get_subplatformzDataSourceMAAS._get_subplatformss������.�.r!c���|j}d}	t|jd|��}|dk(ryd}	||vrt|jd|��}tj�}|jd	�r|dd
}|�d	t�d�}|g}|jj|||��\}}|r!tjd
|�t|�Stjd|ttj�|z
��t|�S#t$rt	j
td|�Y��wxYw#t$rtjd|�Y��
wxYw)N�x�max_waitz Failed to get max wait. using %srF�2�timeoutzFailed to get timeout, using %s�/���z/meta-data/instance-id)�urlsrQrSzUsing metadata source: '%s'z(Giving up on md from %s after %i seconds)r�intr7r;rr<r5r6�time�endswith�
MD_VERSIONr'�wait_for_url�debug�critical�bool)	rr?r=rQrS�	starttime�	check_urlrV�	_responses	         r r8z(DataSourceMAAS.wait_for_metadata_servicewsQ���{�{����	K��4�8�8�J��9�:�H��q�=����	D��$���d�h�h�y�'�:�;���I�I�K�	��<�<����c�r�(�C�58�*�E�	��{���*�*�7�7���'�8�
���Y���I�I�3�S�9��C�y��

�L�L�:���D�I�I�K�)�+�,�
��C�y���?�	K��K�K��?��J�	K���	D��K�K�9�7�C�	D�s"�D�D;�$D8�7D8�;E�Ec��|j�ytj|d|jfi�}|jt	|�k(S)alocally check if the current system is the same instance.

        MAAS doesn't provide a real instance-id, and if it did, it is
        still only available over the network.  We need to check based
        only on local resources.  So compute a hash based on Oauth tokens.F�
datasource)rr�get_cfg_by_path�dsnamer)rr�ncfgs   r �check_instance_idz DataSourceMAAS.check_instance_id�sC���<�<����#�#�G�l�D�K�K�-H�"�M���|�|�1�$�7�7�7r!)�__name__�
__module__�__qualname__�__doc__rerr$r�propertyr'r*r@r1rNr8rg�r!r rrsQ����F��G��M�7��"��"�
1�%�N+�/�$�L	8r!rc�z��eZdZejej
ejejfZ�fd�Z	�xZ
S)�DataSourceMAASLocalc���t�j�stjd�ytjd�t�|��S)NzNo initramfs applicable configFz!Found initramfs applicable config)r�
is_applicabler5r\�superr@)r�	__class__s �r r@zDataSourceMAASLocal._get_data�s?���'�)�7�7�9�
�I�I�6�7���	�	�5�6��w� �"�"r!)rhrirjr�CMD_LINE�
SYSTEM_CFG�DS�	INITRAMFS�network_config_sourcesr@�
__classcell__)rss@r roro�s9����$�$��&�&�����%�%�	��#�#r!roc	��d}t|D�cgc]}||j|�f��c}�}tjdi|��Scc}w)z�Return an oauth helper instance for values in cfg.

    @raises ValueError from OauthUrlHelper if some required fields have
            true-ish values but others do not.)�consumer_key�consumer_secret�	token_key�token_secretrm)�dictr7r�OauthUrlHelper)�cfg�keys�r�kwargss    r r%r%�sD��
L�D�
�D�1�q�A�s�w�w�q�z�?�1�
2�F��$�$�.�v�.�.��2s�Ac	���d}dj|D�cgc]}|j|d���c}�}dtj|j	d��j�zScc}w)z;Given a config, generate a unique identifier for this node.)r{r}r~��zv1:zutf-8)rr7�hashlib�sha256�encode�	hexdigest)r�fields�f�idstrs    r rr�sX��
:�F��I�I�&�9�Q�v�z�z�!�R�(�9�:�E��7�>�>�%�,�,�w�"7�8�B�B�D�D�D��:s�A'c���|jd�r|dd}tjj|�r!t	tj
|��dk(rt
d��td|zd��S)N�file://�rz%s: not a directoryz	file://%s)�version)�
startswithrr�isdir�len�listdirr3r9)�seed_ds r r2r2�s`��
����#������
�7�7�=�=�� �C��
�
�6�(:�$;�q�$@��3�4�4��k�F�2�D�A�Ar!c�n�|�tj}|jd�r|dd}i}tD]�\}}}	}
|�|�d|��}n
|�d|�d|��}	t	j
|�}|||||��}
|
j
�r5|	r|
j||<nDt	j|
j�||<n!tjd||
j���t||�S#tj$r>}|jdk(r|
std|�d|���|�|jdk7r|�Yd}~��d}~wwxYw)	a�
    Read the maas datasource at seed_url.
      read_file_or_url is a method that should provide an interface
      like util.read_file_or_url

    Expected format of seed_url is are the following files:
      * <seed_url>/<version>/meta-data/instance-id
      * <seed_url>/<version>/meta-data/local-hostname
      * <seed_url>/<version>/user-data
    If version is None, then <version>/ will not be used.
    NrTrU)r0rS�ssl_detailsz4Fetching from %s resulted in an invalid http code %si�zMissing required z: )rr/rY�	DS_FIELDSr�fetch_ssl_details�ok�contents�
decode_binaryr5r6�code�UrlErrorr4�check_seed_contents)�seed_urlr/rSr�rr0rJr�	_dictname�binary�optionalr?r��resprLs               r r9r9�s?��&��%�6�6��������C�R�=��	�B�-6��)��i����?�%�t�,�C� (�'�4�8�C�	��0�0��7�K�#��W�g�;��D��w�w�y��#�}�}�B�t�H�#�1�1�$�-�-�@�B�t�H����J���I�I���!�:�r�8�,�,���"�"�	��v�v��}�X�*�15�q�9�������3������	�s�BC#�#D4�64D/�/D4c��i}g}tD]U\}}}}||vr|s|j|�� d|vr*|jd�\}}	}
||vri||<|||||
<�N||||<�Wt|�dk(rt	d|z��|rt|�d|����d}|j
d�rDt�}tj|j
d�|t��}||urtd��|j
d	�|j
d
�|fS)z�Validate if dictionary content valid as a return for a datasource.
    Either return a (userdata, metadata, vendordata) tuple or
    Raise MAASSeedDirMalformed or MAASSeedDirNone
    rTrz%s: no data files foundz: missing files Nr)�default�allowedz%vendor-data was not loadable as yaml.r�	meta-data)
r��append�	partitionr�r3r4r7�objectr�	load_yaml)
�content�seed�ret�missing�spath�dpath�_binaryr��top�_�p�vd_data�errs
             r r�r�s$��

�C��G�+4�(�'��u�g�x��������u�%���%�<�����,�I�C��A��#�~���C��!�%�.�C��H�Q�K� ���C��J�(��3�x�1�}��7�$�>�?�?��"�T�7�#K�L�L��G�
�w�w�}���h���.�.��G�G�M�"�C�&�
���c�>�&�'N�O�O��7�7�;������!5�w�>�>r!c��eZdZy)r3N�rhrirjrmr!r r3r39���r!r3c��eZdZy)r4Nr�rmr!r r4r4=r�r!r4c�6�tj|t�Sr#)r�list_from_depends�datasources)�dependss r �get_datasource_listr�Is���$�$�W�k�:�:r!�__main__c������ddl}ddl}ddl}|jd��}|j	dddd��|j	d	d
dd��|j	dd
d
d��|j	dddd��|j	dddd��|j	dddt
��|j
dd��}dD]-\}}|j||��}|j	dddd���/|j�}|j|j|j|jd �}	|j�yd!D]t}
d"|
zd#z}tjj!|�s�+tj"|tj$�s�P|j&j)d$|z�||_
�v|jrmt+j,|j�}d%|vr|d%d&}|	j/�D]}
|
|vs�|	|
��||
|	|
<�|j0�d'|vr
|d'|_|j0�,|j&j)d(�|j3d)�t5|	���fd*���fd+�����fd,��|j6d-k(�r|j&j)d.|j0z��j8}|j0dd/k(s|j0j;d0�rt=|j0�\}}}n't?|j0|j@|d1�2�\}}}tCd3�tC|�d4n|jE��tCd5�|j|�tCd6�|j|�d4�y|�y|j6d7k(r�|j0�y|j6d8k(rB|j0jGd/�sd9|j0z|_�|j0�yy):z�
        Call with single argument of directory or http or https url.
        If url is given additional arguments are allowed, which will be
        interpreted as consumer_key, token_key, token_secret, consumer_secret
        rNzInteract with MAAS DS)�descriptionz--config�filezspecify DS config file)�metavar�helpr�z--ckey�keyzthe consumer key to auth withz--tkeyzthe token key to auth withz--csec�secretzthe consumer secret (likely '')r�z--tseczthe token secret to auth withz--apiverr�z the apiver to use ( can be used)�subcommands�subcmd)�title�dest))�crawlzcrawl the datasource)r7zdo a single GET of provided url)�
check-seedzread and verify seed at url)r�r?zthe datasource url�?)r��nargsr�)r{r}r~r|)�91_kernel_cmdline_url�90_dpkg_maasz/etc/cloud/cloud.cfg.d/z.cfgzUsed config in %s.
rcrr-z)Must provide a url or a config with url.
r.c�>���j|d��jS)Nr.)r0)r:r�)r?r's �r �geturlzmain.<locals>.geturl�s����'�'��Q�'�7�@�@�@r!c�R��td|�d�|�j��d��y)Nz== z ==
�
)�print�decode)r?r�s �r �printurlzmain.<locals>.printurl�s����c�6�#�;�+=�+=�+?�@�Ar!c���|jd�rf�|�j�j�D]>}|jd�r
�|�|����!|dk(r
�|�d����3�|�|����@y�|�y)NrTr�z
meta-data/)rYr��
splitlines)r?�liner�r�r�s  ���r r�zmain.<locals>.crawl�sx����|�|�C� �"�3�K�.�.�0�;�;�=�7�D��}�}�S�)���T�2�3���,���\�:�;� �3��!5�6�7���
r!r�zChecking seed at %s
rTr��)r�r/r0z=== user-data ===zN/Az=== meta-data ===z=== vendor-data ===r7r�z%s/)$�argparse�pprint�sys�ArgumentParser�add_argumentrZ�add_subparsers�
add_parser�
parse_args�ckey�tkey�tsec�csec�configrr�exists�access�R_OK�stderr�writer�	read_confr�r?�exitr%r�r:r�r2r9�apiverr�r�rY)r�r�r��parser�subcmds�namer�r��args�creds�fname�fpathr�r�r:�userdatarCrKr�r�r'r�s                  @@@@r �mainr�Os����	����(�(�5L�(�M�������)��		�	
�	�����0��		�	
�	�����-��		�	
�	�����2��		�	
�	�����0��		�	
�	�����3��		�	
��'�'�m�(�'�K��
�	�L�T�4�
�"�"�4�d�"�3�A�
�N�N��0��T�
�
�
	�� � �"��!�I�I���� �I�I�#�y�y�	
���;�;��B�
(��1�E�9�F�B���7�7�>�>�%�(�R�Y�Y�u�b�g�g�-F��J�J�$�$�%;�e�%C�D�"'�D�K�	
(��;�;��.�.����-�C��s�"��,�'��/���z�z�|�
*���#�:�%��*�"4�!$�S��E�#�J�
*��x�x��N�c�$9��~�.����8�8���J�J���I�J��H�H�Q�K�'��.��	A�	B�	��;�;�,�&��J�J���4�t�x�x�?�@�"�*�*�G��x�x��{�c�!�T�X�X�%8�%8��%C�+=�d�h�h�+G�(��8�R�+=��H�H� �K�K�%,��	,�(��8�R�
�%�&��8�+�%����1B�C��%�&��M�M�(�#��'�(��M�M�2�:�%�6�2�6�
�[�[�E�
!��T�X�X��
�[�[�G�
#��8�8�$�$�S�)� �4�8�8�+����$�(�(�O�$r!)!r��loggingrrX�	cloudinitrrr�cloudinit.net.cmdliner�cloudinit.sourcesr�	getLoggerrhr5rZr�rrror%rr2r9r�r;r3r4�DEP_FILESYSTEM�DEP_NETWORKr�r�r�rmr!r �<module>rs�����	��/�/�:�1��g����!��
�
�
�	�G8�W�'�'�G8�T#�.�#�$/�E�B����
��
7-�t$?�N	�i�	�	�9�	��7�1�1�3�4��g�,�,�g�.A�.A�B�C���;��z��H�T	�F�Yr!