File: //lib/python3/dist-packages/cloudinit/sources/helpers/__pycache__/openstack.cpython-311.pyc
�
܍~c�e � � � d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZm Z m
Z
mZmZ d dl
mZ d dlmZ ej e� � Zdd� dfd ej i fd
d� dfd�Zd
ZdZdZdZdZdZdZdZdZdZeeeeeeeefZ dZ! G d� de"� � Z# G d� d� � Z$ G d� de j% �� � Z& G d� d e&� � Z' G d!� d"e&� � Z(d$d#�Z)dS )%� N)�log)�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>r s � �1� � � �meta_js�authorized_keysc � � | S r
r r s r r r s � �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 � � e Zd ZdS )�NonReadableN)�__name__�
__module__�__qualname__r r r r) r) Q s � � � � � ��Dr r) c �, � e Zd Zd� Zd� Zd� Zd� Zd� ZdS )�SourceMixinc � � | j sd S | j � di � � }|� � � D ]\ }}||k r|c S �d S )Nzblock-device-mapping)�ec2_metadata�get�items)�self�name�bdm�ent_name�devices r �_ec2_name_to_devicezSourceMixin._ec2_name_to_deviceV se � �� � ��4���#�#�$:�B�?�?��"%�)�)�+�+� � ��X�v��x����
�
�
� ��tr c �x � d}| j dk rd}t j | j � |� � � � S )N�public_keys� �public-keys)�versionr �normalize_pubkey_data�metadatar1 )r3 r4 s r �get_public_ssh_keyszSourceMixin.get_public_ssh_keys_ s: � ����<�1��� �D��,�T�]�->�->�t�-D�-D�E�E�Er c � � d } d|z }|dk rd|z }t j |� � }|r|d }n# t j $ r Y nw xY w|S )NzLABEL=%s�swapzTYPE=%sr )r �find_devs_withr �ProcessExecutionError)r3 r4 r7 �criteria�dev_entriess r �_os_name_to_devicezSourceMixin._os_name_to_devicee ss � ��� �!�T�*�H��v�~�~�$��-���-�h�7�7�K��
(�$�Q������)� � � ��D� �����
s �.3 �A�Ac �( � |sd S |� d� � sd|z }t j � |� � r|S | � t j � |� � � � }|rt � d||� � |S d S )N�/z/dev/%szRemapped device name %s => %s)�
startswith�os�path�exists�
_remap_device�basename�LOG�debug)r3 r7 �remappeds r �_validate_device_namez!SourceMixin._validate_device_namer s� � �� ��4�� � ��%�%� (���'�F�
�7�>�>�&�!�!� ��M��%�%�b�g�&6�&6�v�&>�&>�?�?��� ��I�I�5�v�x�H�H�H��O��tr c � � |sd S |g}|dk r|� dd� � |dk r|� d� � d }t � d|� � |D ]0}| � |� � }| � |� � }|r n�1|sNt � d|� � |D ]0}| � |� � }| � |� � }|r n�1|sd S t � d||� � |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�appendrP rQ r8 rS rG )r3 r4 �namesr7 �ns r �device_name_to_devicez!SourceMixin.device_name_to_device� s@ � �� ��4�����6�>�>��L�L��E�"�"�"��5�=�=��L�L�� � � ���� � �<�e�D�D�D�� � �A��-�-�a�0�0�F��/�/��7�7�F��
���
� � ��I�I�F��N�N�N��
�
���0�0��3�3���3�3�F�;�;��� ��E�� � ��4��I�I�.��f�=�=�=��Mr N)r* r+ r, r8 r@ rG rS r[ r r r r. r. U sb � � � � � �� � �F� F� F�� � �� � �� � � � r r. c � � e Zd Zd� Zej d� � � Zej dd�� � Zej d� � � Zej d� � � Z d� Z
dd�Zd � Zd
S )�
BaseReaderc � � || _ d S r
)� base_path)r3 r_ s r �__init__zBaseReader.__init__� s
� �"����r c � � d S r
r �r3 �base�add_onss r �
_path_joinzBaseReader._path_join� � � ��r Fc � � d S r
r �r3 rL �decodes r �
_path_readzBaseReader._path_read� rf r c � � d S r
r �r3 s r �_fetch_available_versionsz$BaseReader._fetch_available_versions� rf r c � � d S r
r rl s r �_read_ec2_metadatazBaseReader._read_ec2_metadata� rf r c �Z � | � � � }n:# t $ r-}t � d| j |� � g }Y d }~nd }~ww xY wd� t t
t � � � � D � � }t }|D ] }||vr�|} t � d||� � |S )Nz4Unable to read openstack versions from %s due to: %sc � � g | ]}|��S r r )�.0�vs r �
<listcomp>z4BaseReader._find_working_version.<locals>.<listcomp>� s � �<�<�<�1�Q�<�<�<r zSelected version '%s' from %s) rm � ExceptionrP rQ r_ �reversed�list�OS_VERSIONS� OS_LATEST)r3 �versions_available�e� supported�selected_version�potential_versions r �_find_working_versionz BaseReader._find_working_version� s� � � $�!%�!?�!?�!A�!A����� $� $� $��I�I�F����
�
�
�
"$�����������
$���� =�<���k�):�):� ;� ;�<�<�<� �$��!*� � �� �(:�:�:��0���� � �+���
�
�
�
�s � �
A�#A � Ac � � |� dd� � � d� � }|� d� � }d� |D � � }|st d|z � � � | j | j dg|�R � }| � ||�� � S )N�content_pathr rI c �0 � g | ]}t |� � �|��S r )�len)rr �ps r rt z1BaseReader._read_content_path.<locals>.<listcomp>� s# � �9�9�9�a�#�a�&�&�9��9�9�9r z!Item %s has no valid content path� openstack�ri )r1 �lstrip�splitr re r_ rj )r3 �itemri rL �path_pieces�valid_piecess r �_read_content_pathzBaseReader._read_content_path� s� � ��x�x���+�+�2�2�3�7�7���j�j��o�o��9�9�;�9�9�9��� O� �!D��!M�N�N�N��t��t�~�{�I�[�I�I�I�����t�F��3�3�3r c � � �� t j t j t t
t f�� � ��� fd�}ddd�} |� � � � � � }|� � � D ]�\ }\ }}}� � � j
|� � }d}d} � � |� � }d}nR# t $ rE} |st � d || � � nt � d
|| � � Y d} ~ nd} ~ ww xY w|r|st d|z � � �|r7|r5 ||� � }n(# t $ r} t# d|�d
| ��� � | �d} ~ ww xY w|r|||<