HOME


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

\�`f�f���ddlZddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZddlm
Z
ddlmZej e�Zdd�dfdej&ifd	d
�dfd�ZdZd
ZdZdZdZdZdZdZdZdZeeeeeeeefZdZ Gd�de!�Z"Gd�d�Z#Gd�dejH��Z%Gd�de%�Z&Gd �d!e%�Z'd#d"�Z(y)$�N)�net�sources�subp�
url_helper�util)�BrokenMetadata)�ec2�network_configc��|S�N���xs �E/usr/lib/python3/dist-packages/cloudinit/sources/helpers/openstack.py�<lambda>rs��1����meta_js�authorized_keysc��|Srr
rs rrrs��q�r)zetc/network/interfaceszmeta.jszroot/.ssh/authorized_keys))zlocal-hostname�hostnameF)�instance-id�uuidT�latestz
2012-08-10z
2013-04-04z
2013-10-17z
2015-10-15z
2016-06-30z
2016-10-06z
2017-02-22z
2018-08-27)
N�bgpovs�bridge�	cascading�dvs�ethernet�hw_veb�hyperv�ovs�phy�tap�	vhostuser�vifc��eZdZy)�NonReadableN)�__name__�
__module__�__qualname__r
rrr(r(Qs��rr(c�*�eZdZd�Zd�Zd�Zd�Zd�Zy)�SourceMixinc��|jsy|jjdi�}|j�D]\}}||k(s�|cSy)Nzblock-device-mapping)�ec2_metadata�get�items)�self�name�bdm�ent_name�devices     r�_ec2_name_to_devicezSourceMixin._ec2_name_to_deviceVsS��� � �����#�#�$:�B�?��"%�)�)�+�	��X�v��x���
�	�rc��d}|jdk(rd}tj|jj	|��S)N�public_keys��public-keys)�versionr�normalize_pubkey_data�metadatar0)r2r3s  r�get_public_ssh_keyszSourceMixin.get_public_ssh_keys_s8�����<�<�1�� �D��,�,�T�]�]�->�->�t�-D�E�Erc��d}	d|z}|dk(rd|z}tj|�}|r|d}|S#tj$rY|SwxYw)NzLABEL=%s�swapzTYPE=%sr)r�find_devs_withr�ProcessExecutionError)r2r3r6�criteria�dev_entriess     r�_os_name_to_devicezSourceMixin._os_name_to_deviceesi����	�!�T�*�H��v�~�$��-���-�-�h�7�K��$�Q����
���)�)�	���
�	�s�+1�A�Ac�
�|sy|jd�sd|z}tjj|�r|S|j	tjj|��}|rtjd||�|Sy)N�/z/dev/%szRemapped device name %s => %s)�
startswith�os�path�exists�
_remap_device�basename�LOG�debug)r2r6�remappeds   r�_validate_device_namez!SourceMixin._validate_device_namersp����� � ��%���'�F�
�7�7�>�>�&�!��M��%�%�b�g�g�&6�&6�v�&>�?����I�I�5�v�x�H��O�rc��|sy|g}|dk(r|jdd�|dk(r|jd�d}tjd|�|D](}|j	|�}|j|�}|s�(n|sCtjd|�|D](}|j
|�}|j|�}|s�(n|sytjd||�|S)N�rootr�amiz(Using ec2 style lookup to find device %sz.Using openstack style lookup to find device %szMapped %s to device %s)�insert�appendrOrPr7rRrF)r2r3�namesr6�ns     r�device_name_to_devicez!SourceMixin.device_name_to_device�s���������6�>��L�L��E�"��5�=��L�L�� ����	�	�<�e�D��	�A��-�-�a�0�F��/�/��7�F���		���I�I�F��N��
���0�0��3���3�3�F�;����	
����I�I�.��f�=��MrN)r)r*r+r7r?rFrRrZr
rrr-r-Us���F���rr-c��eZdZd�Zej
d��Zej
d
d��Zej
d��Zej
d��Z	d�Z
d
d�Zd�Zy	)�
BaseReaderc��||_yr)�	base_path)r2r^s  r�__init__zBaseReader.__init__�s	��"��rc��yrr
�r2�base�add_onss   r�
_path_joinzBaseReader._path_join����rc��yrr
�r2rK�decodes   r�
_path_readzBaseReader._path_read�rerc��yrr
�r2s r�_fetch_available_versionsz$BaseReader._fetch_available_versions�rerc��yrr
rks r�_read_ec2_metadatazBaseReader._read_ec2_metadata�rerc�F�	|j�}tt
t��D�cgc]}|��}}t}|D]
}||vr�|}ntjd||�|S#t$r-}tjd|j|�g}Yd}~��d}~wwxYwcc}w)Nz4Unable to read openstack versions from %s due to: %szSelected version '%s' from %s)	rl�	ExceptionrOrPr^�reversed�list�OS_VERSIONS�	OS_LATEST)r2�versions_available�e�v�	supported�selected_version�potential_versions       r�_find_working_versionz BaseReader._find_working_version�s���	$�!%�!?�!?�!A��!)��k�):� ;�<�1�Q�<�	�<�$��!*�	�� �(:�:��0���		�	�	�	�+���	
�
 ���1�	$��I�I�F�����
�
"$���
	$��=s�A%�	B�%	B�.#B�Bc�(�|jdd�jd�}|jd�}|D�cgc]}t|�s�|��}}|st	d|z��|j
|jdg|���}|j||��Scc}w)N�content_pathrrHz!Item %s has no valid content path�	openstack�rh)r0�lstrip�split�lenrrdr^ri)r2�itemrhrK�path_pieces�p�valid_piecess       r�_read_content_pathzBaseReader._read_content_path�s����x�x���+�2�2�3�7���j�j��o��#.�9�a�#�a�&��9��9�� �!D��!M�N�N��t���t�~�~�{�I�[�I�����t�F��3�3��	:s�B�Bc�F���tjtjtt
tf�����fd�}ddd�}|�j��}|j�D]d\}\}}}�j�j|�}d}d}	�j|�}d}|r|std|z��|r|r		||�}|s�`|||<�f|d}
d|
vr|
d}	t%j&|�|
d<i}|
j-dg�}
|
D]!}d|vr�|d}	�j/|�||<�#||d<|
j-dd�}|r	�j/|d��}||d<	|
dd|d<�j3�|d<t4D]3\}}}|r||
vrt#d|z��||
vs� |
j-|�|
|<�5|S#t$r<}	|stjd	||	�ntjd
||	�Yd}	~	��Yd}	~	wwxYw#t $r}	t#d|�d
|	���|	�d}	~	wwxYw#t(t*f$r}	t#d|	z�|	�d}	~	wwxYw#t $r}	t#d|�d
|	���|	�d}	~	wwxYw#t$r}	t#d|	z�|	�d}	~	wwxYw#t0$rY��1wxYw)z�Reads a version 2 formatted location.

        Return a dict with metadata, userdata, ec2-metadata, dsmode,
        network_config, files and version (2).

        If not a valid location, raise a NonReadable exception.
        )�
root_typesc�$��i}�jd|d�dtjf|d<�jd|d�dd�f|d<�jd|d	�d�f|d
<�jd|d�d�f|d<�jd|d
�d�f|d<|S)Nr~zmeta_data.jsonTr>�	user_dataFc��|Srr
rs rrz7BaseReader.read_v2.<locals>.datafiles.<locals>.<lambda>�s��!�r�userdatazvendor_data.json�
vendordatazvendor_data2.json�vendordata2znetwork_data.json�networkdata)rdr�	load_json)r<�files�load_json_anytyper2s  ��r�	datafilesz%BaseReader.read_v2.<locals>.datafiles�s�����E�����W�6F�G�����
!�E�*������W�k�B���!�E�*������W�6H�I��!�#�E�,������W�6I�J��!�$�E�-� �����W�6I�J��!�$�E�-� �
�Lrr�)r�r<NFTz*Failed reading optional path %s due to: %sz+Failed reading mandatory path %s due to: %szMissing mandatory path: %s�Failed to process path �: r>�random_seedz.Badly formatted metadata random_seed entry: %sr�rKzFailed to read provided file r
rz(Failed to read network configuration: %s�meta�dsmodezec2-metadatazNo '%s' entry in metadata)�	functools�partialrr��dictrr�strr{r1rdr^ri�IOErrorrOrPr(rpr�base64�	b64decode�
ValueError�	TypeErrorr0r��KeyErrorrn�
KEY_COPIES)r2r��results�datar3rK�required�
translator�foundrvr>r�r��metadata_filesr��net_item�content�
target_key�
source_key�is_requiredr�s`                   @r�read_v2zBaseReader.read_v2�s4���&�-�-��N�N��d�C�'8�
��	�B��
����3�3�5�6��48�J�J�L�	%�0�T�/�D�(�J��?�?�4�>�>�4�8�D��D��E�
����t�,������!�">��"E�F�F����%�d�+�D�
� $���
�7	%�:�:�&���H�$�"�=�1�K�
�*0�*:�*:�;�*G���'���!���g�r�2��"�		�D��T�!����<�D�
�"�5�5�d�;��d��		�!����
�<�<� 0�$�7���
��1�1�(�4�1�H��,3��(�)�	� (�� 0�� :�G�H��
#'�"9�"9�";����6@�	@�1�Z��[��z��9�$�%@�:�%M�N�N��X�%�'/�|�|�J�'?���$�		@�
���_�
���I�I�D�d�A���I�I�E�t�Q����

�� !��(�;?��C��������	�*�
�$�D�q�H�����
���
�$�=A�1�E�����
���
�$�>�!�D�����
���	��	�s��F?�=H�H*�I�
I3�#J�?	H�1G?�?H�	H'�H"�"H'�*I
�9I�I
�	I0�I+�+I0�3	J�<J�J�	J �J N�F)
r)r*r+r_�abc�abstractmethodrdrirlrnr{r�r�r
rrr\r\�s��#�	���
��
�	���
��
�	���
��
�	���
��
� �:4�Grr\)�	metaclassc�>��eZdZ�fd�Zd�Zdd�Zd�Zd�Zd�Z�xZ	S)�ConfigDriveReaderc�:��tt|�|�d|_yr)�superr�r_�	_versions)r2r^�	__class__s  �rr_zConfigDriveReader.__init__fs���
���/�	�:���rc�X�|gt|�z}tjj|�Sr)rrrJrK�join)r2rbrc�
componentss    rrdzConfigDriveReader._path_joinjs%���V�d�7�m�+�
��w�w�|�|�Z�(�(rc�Z�|rtj|�Stj|�Sr)r�load_text_file�load_binary_filergs   rrizConfigDriveReader._path_readns1���
����%�	
��&�&�t�,�	
rc�P�|j��|j|jd�}tj|�D�cgc]@}tj
j
tj
j|��r|��B}}t|�|_|jScc}w)Nr~)	r�rdr^rJ�listdirrK�isdirr��sorted)r2rK�dr�s    rrlz+ConfigDriveReader._fetch_available_versionsus����>�>�!��?�?�4�>�>�;�?�D����D�)����7�7�=�=������d�!3�4���E��
$�E�]�D�N��~�~���
s�AB#c��|j|jddd�}tjj	|�siS	tj|j|��S#t$r}td|�d|���|�d}~wwxYw)Nr	rzmeta-data.jsonr�r�)
rdr^rJrKrLrr�rirpr)r2rKrvs   rrnz$ConfigDriveReader._read_ec2_metadata�sz������N�N�E�8�-=�
���w�w�~�~�d�#��I�
��~�~�d�o�o�d�&;�<�<���
�$�7;�Q�?�����
�s�#A%�%	B�.B�Bc��i}tj�D]C}|j|j|�}tj
j
|�s�?|||<�Et|�dk(rtd|jz��i}tj�D]I\}\}}}||vr$||}	|j|�}	||�||<�2tj|�||<�K|d}
|d}|j!d	|
�}
|
r?|
j#�}|D�
cgc] }
t|
�r|
j%d
�s|
��"c}
|d	<d|vr|d|d<d|d
�}d|vr|d|d<|j!dd�|d<i|d<|S#t$r}	td|z�|	�d}	~	wwxYw#t$r}	td|�d|	���|	�d}	~	wwxYwcc}
w)z�Reads a version 1 formatted location.

        Return a dict with metadata, userdata, dsmode, files and version (1).

        If not a valid path, raise a NonReadable exception.
        rz%s: no files foundzFailed to read: %sNr�r�rrr;�#rr:)r<r>r�z	user-datarr�r�)�FILES_V1�keysrdr^rJrKrLr�r(r1rir�rrp�copy�deepcopyr0�
splitlinesrI)r2r�r3rK�md�keyr��default�contentsrv�keydatar�lines�liner�s               r�read_v1zConfigDriveReader.read_v1�s	�����M�M�O�	#�D��?�?�4�>�>�4�8�D��w�w�~�~�d�#�"��d��	#��u�:��?��2�d�n�n�E�F�F�
��2:�.�.�2B�	1�.�T�-�C��W��u�}��T�{��M�#���t�4�H��)��2�B�s�G��-�-��0��3��#	1�&�&�'���Y�-���+�+�m�W�5����&�&�(�E�"�!���t�9�T�_�_�S�%9��!�B�}���G�#� '�
� 6�B�}����
���w�� '�� 1�G�H��&�k�k�+�r�:��
���������c�M�(�)=��)D�E�1�L��M��!��(�;?��C�������!s6�-E;�?F�%F>�;	F�F�F�	F;�$F6�6F;r�)
r)r*r+r_rdrirlrnr��
__classcell__�r�s@rr�r�es"����)�
�	��Grr�c�:��eZdZd�fd�	Zd�Zdd�Zd�Zd�Z�xZS)�MetadataReaderc���tt|�|�||_t	|�|_t
|�|_d|_yr)	r�r�r_�ssl_details�float�timeout�int�retriesr�)r2�base_urlr�r�r�r�s     �rr_zMetadataReader.__init__�s7���
�n�d�,�X�6�&����W�~����7�|�����rc�,�|j�|jSg}|j|jd�}|j|d��}|j	�D]&}|j�}|s�|j
|��(||_|jS)Nr~Tr)r�rdr^rir��striprW)r2r��version_pathr�r�s     rrlz(MetadataReader._fetch_available_versions�s����>�>�%��>�>�!������t�~�~�{�C���/�/�,�t�/�<���&�&�(�	�D��:�:�<�D����L�L���		�
����~�~�rc���d�}tj||j|j|j|��}|r|j
j
�S|j
S)Nc�h�	t|j�}|dk\ry	y#ttf$rYywxYw)Ni�FT)r��coder�r�)�
_request_args�causer�s   r�should_retry_cbz2MetadataReader._path_read.<locals>.should_retry_cb�sD��
��5�:�:����3�;� ��
���z�*�
���
�s��1�1)r�r�r��exception_cb)r�readurlr�r�r�r�rh)r2rKrhr��responses     rrizMetadataReader._path_read�s\��	��%�%���L�L��(�(��L�L�(�
����$�$�+�+�-�-��$�$�$rc�.�tj|g|���Sr)r�combine_urlras   rrdzMetadataReader._path_joins���%�%�d�5�W�5�5rc�n�tj|j|j|j��S)N)r�r�r�)r	�get_instance_metadatar�r�r�rks rrnz!MetadataReader._read_ec2_metadata	s,���(�(��(�(��L�L��L�L�
�	
r)N�r�r�)	r)r*r+r_rlrirdrnr�r�s@rr�r��s����
�%�.6�
rr�c
��#�|�ygd�gd�d��#|jdg�}|jdg�}|jdg�}g}i}d}d	}g}	|D�]�}
g}t�#fd
�|
j�D��}d|
vr|
d|d<d}
|
jd�r'|
jd�j�}
|
||
d
<|jd�|
|
d
|
dd�}|D�cgc]}|d|
d
k(s�|��c}D�]e}t�#fd�|j�D��}|ddk(r|j	ddi�n�|ddk(r|j	ddi�n�|ddvr|j	d|di�nh|ddvr$|j	d|jd�d��n=|ddvr6|j	ddi�|j	d|jd�d��|jdg�D�cgc]}|jd�dk(r|d ��}}|r||d!<|dd"vr|j	dd#i�|dd$k(rd#|d$<|dd%k(rd#|d%<|j|���h|j	d&|i�|
dd'vr�i}|
r|
|d(<|
j�D]0\}}|d)k(r�|j
d*�s�|j	||i��2||z}|d+z
}|j|d,d-tj|
d)�f�|j	||d.��||d<n�|
dd/vrv|
d0�d1|
d2��}|j	||
d2|
d3d4��|j|d0d-|
d0f�|j|dd5|
d2z|
d0f�|j	|
d3|d6��n8|
dtvrtjd7|
d�|j	d8|
d9��|	j|�|||d
<���|	D�cgc]}|jd�d8k(s�d|vs�|�� }}|s|r�|�tj�}|j�D]6\}}|jd�r�|jd:�|vs�,||d:|d<�8|D]=}|jd(�}|std;|z��||vrtd<|z��|||d<�?|D]H\}}}} t| t t"f�r| D�!cgc]
}!|||!dz��c}!||<�;||| dz||<�Jtj$�}"|"r|	D]}|d|"vs�|"|d|d(<d=|d<�|D];}tj|�}|j	dd>i�|	j|��=d+|	d?�Scc}wcc}wcc}wcc}!w)@a*Return a dictionary of network_config by parsing provided
       OpenStack ConfigDrive NetworkData json format

    OpenStack network_data.json provides a 3 element dictionary
      - "links" (links are network devices, physical or virtual)
      - "networks" (networks are ip network configurations for one or more
                    links)
      -  services (non-ip services, like dns)

    networks and links are combined via network items referencing specific
    links via a 'link_id' which maps to a links 'id' field.

    To convert this format to network_config yaml, we first iterate over the
    links and then walk the network list to determine if any of the networks
    utilize the current link; if so we generate a subnet entry for the device

    We also need to map network_data.json fields to network_config fields. For
    example, the network_data links 'id' field is equivalent to network_config
    'name' field for devices.  We apply more of this mapping to the various
    link types that we encounter.

    There are additional fields that are populated in the network_data.json
    from OpenStack that are not relevant to network_config yaml, so we
    enumerate a dictionary of valid keys for network_yaml and apply filtering
    to drop these superfluous keys from the network_config yaml.
    N)r3�type�mac_address�subnets�params�mtu)r��address�netmask�	broadcast�metric�gateway�pointopoint�scope�dns_nameservers�
dns_search�routes)�physical�subnet�links�networks�serviceszbond%drc3�<�K�|]\}}|�dvs�||f���y�w)rNr
��.0�krw�
valid_keyss   �r�	<genexpr>z#convert_net_json.<locals>.<genexpr>Ts*�����
��q�!�q�J�z�4J�/J�Q��F�
����	r3�ethernet_mac_address�idr�)r3�macrr��linkc3�<�K�|]\}}|�dvs�||f���y�w)rNr
r	s   �rr
z#convert_net_json.<locals>.<genexpr>ks*�������1�a�a�:�h�;O�6O��A���r�	ipv4_dhcp�dhcp4�	ipv6_dhcp�dhcp6)�
ipv6_slaaczipv6_dhcpv6-stateless�ipv6_dhcpv6-stateful)�ipv4�staticr�
ip_address)r�r�)�ipv6�static6z	accept-raFr�dnsr�r)rrTrrr�)�bondr��
bond_linksr r:�bond_interfacesz%s)r�r3)�vlan�	vlan_link�.�vlan_id�vlan_mac_address)r3r&r�z%%s.%s)rr3z9Unknown network_data link type (%s); treating as physicalr)r�r�rz#No mac_address or name entry for %sz"Unable to find a system nic for %s�
infiniband�
nameserver)r<�config)r0r�r1�lower�updaterWrIr�r��KNOWN_PHYSICAL_TYPESrO�warningr�get_interfaces_by_macr��
isinstancerr�tuple�get_ib_hwaddrs_by_interface)$�network_json�
known_macsrrr�link_updates�link_id_info�
bond_name_fmt�bond_numberr*rr��cfg�
link_mac_addr�curinforY�networkr�servicerr�rrw�	link_namer3r��
need_names�_link_id�inforr��fmt�targets�target�ib_known_hwaddrsrs$                                   @r�convert_net_jsonrFs����6���
�
��J�0
���W�b�)�E����
�B�/�H����
�B�/�H��L��L��M��K�
�F��.�����
�#�z�z�|�
�
���T�>��v�,�C��K��
��8�8�*�+� �H�H�%;�<�B�B�D�M�'4�L��d��$��G�G�F�O� ��t�*���L�	
��$,�G�a�q��y�D��J�/F��G�/	#�G���#*�=�=�?���F��v��+�-��
�
�v�w�/�0����K�/��
�
�v�w�/�0����%��
�
�
�v�w�v��7�8����$6�6��
�
� (�#*�;�;�|�#<������$7�7��
�
�K��/�0��
�
� )�#*�;�;�|�#<��� '�{�{�:�r�:����;�;�v�&�%�/��	�"��O��
�,;��(�)��v��"G�G��
�
�K��.�/��v��&�(�!%��v���v��&�(�!%��v���N�N�6�"�_/	#�`	�
�
�I�w�'�(���<�8�#��F��(5��}�%��
�
��
*���1���$���\�\�&�)��M�M�1�a�&�)�	
*�&��3�I��1��K�

����%���M�M�$�|�"4�5�	�
�
�J�J�&�)�<�=�'�G�F�O�
�&�\�X�
%�"�;�/��i��A�D��J�J� �#�I��#'�(:�#;��
�
����k�4��k�9J� K�L�����f�h��i��8�$�{�:K�L�
�
�N�N�4�(:�#;�T�J�K��F�|�#7�7���� ���L��

�J�J�
�=�I�J��
�
�c��&-��W�T�]�#�.�D���Q�U�U�6�]�j�8�V�1�_���J���\����2�2�4�J�+�0�0�2�	7�N�H�d��x�x�����x�x���*�,�)�$�u�+�6��V��		7��	(�A��%�%�
�&�C�� �!F��!J�K�K��*�$� �!E��!I�J�J�"�3��A�f�I�
	(�'3�	?�"�C��c�7��'�D�%�=�1�EL��;A�C�,�v�.�v�6�6���C����g�!6�v�!>�>��C��
	?��6�6�8����	+�C��6�{�.�.�%5�c�&�k�%B��M�"�*��F��	+�
����m�m�G�$���
�
�F�L�)�*��
�
�c���
�F�+�+��qH��>��T��2s*�U:�/U:�. U?�)V�V�V�V	)NN))r�r�r�r��loggingrJ�	cloudinitrrrrr�cloudinit.sourcesr�cloudinit.sources.helpersr	�	getLoggerr)rOr�r�r�rt�	OS_FOLSOM�
OS_GRIZZLY�	OS_HAVANA�
OS_LIBERTY�
OS_NEWTON_ONE�
OS_NEWTON_TWO�OS_OCATA�OS_ROCKYrsr-r�r(r-�ABCMetar\r�r�rFr
rr�<module>rUs���
����	�:�:�,�)��g����!�� 0��b�A��4�>�>�2�.�"3�[�"�!E�	���
�
�	��	�
�
��	�
�
��
��
�����
��
������	����"	�'�	�I�I�XA�3�;�;�A�Hp�
�p�f6
�Z�6
�tp,r