�
܍~cM � �* � d dl Z d dlmZ d dlmZ d dlmZ d dlmZ d dlmZm Z m
Z
mZmZ d dl
mZ d dlmZ ej e� � Z e� � dd �� � Zd
� Zd� Zd� Zd
� Zd� Zd� Z e� � d� � � Zd� Zd� Zdd�Zd� Zd� Z d� Z!dS )� N)� lru_cache)�
exceptions)�dmi)�log)�net�netinfo�subp�
url_helper�util)�NoDHCPLeaseError)�EphemeralDHCPv4c �� � t d� � }t � � D ]�} t |d| i|�� � 5 t | � � s
d d d � � �4t | ||||� � }t j |� � cd d d � � c S # 1 swxY w Y �u# t t j t t j f$ r'} t �
d| � � | }Y d } ~ ��d } ~ ww xY w|�)NzFailed to DHCP�url)�iface�connectivity_url_data�tmp_dirzDHCP Exception: %s)�RuntimeError�get_interface_listr
�check_route�
read_metadata�json�loadsr r �ProcessExecutionErrorr �RequestException�LOG�error)
r �timeout�retries�sec_between�agentr � exceptionr �v1�excs
�A/usr/lib/python3/dist-packages/cloudinit/sources/helpers/vultr.py�get_metadatar% su � � �-�.�.�I� $�%�%� � �� � ��',�c�l��� � �
&�
&� #�3�'�'� ��
&�
&�
&�
&�
&�
&�
&� #�3���+�u�M�M���z�"�~�~�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&�
&����
&�
&�
&�
&�
&��
��&���'�
� � � �
�I�I�*�C�0�0�0��I�I�I�I�I�I����� ���� �OsF �B�B�B�&B�8B�B �B�B �B�'C!�:C�C!c �j � g } t j � � D ]}d|v r�| � |� � �| S )N�dummy)r �find_candidate_nics�append)�ifacesr s r$ r r 5 sG � �
�F��(�*�*� � ���e�����
�
�e������M� c � � t j � � }d|vrdS |d D ]}|� dd � � | v r dS �dS )N�ipv4F�destinationT)r �
route_info�get)r �routes�routes r$ r r B sc � �
�
�
!�
!�F� �V����u� ��� � ���9�9�]�D�)�)�S�0�0��4�4� 1� �5r+ c �T � t j d� � t j d� � d�S )Nzsystem-manufacturerzsystem-serial-number)�manufacturer�subid)r �
read_dmi_data� r+ r$ �get_sysinfor8 S s/ � ��)�*?�@�@��"�#9�:�:�� � r+ c �: � t � � d dk rdS dS )Nr4 �VultrTF)r8 r7 r+ r$ �is_baremetalr; [ s � ��}�}�^�$��/�/��t��5r+ c � � t � � } | d dk rdS dt j � � � � � v rdS dS )Nr4 r: T�vultrF)r8 r �get_cmdline�split)�sysinfos r$ �is_vultrrA b sL � ��m�m�G��~��'�)�)��t� �$�"�$�$�*�*�,�,�,�,��t��5r+ c �� � d| z } d|d�}t j | ||||�� � }|� � � st d| z |j � � �|j � � � S )Nz
%s/v1.json� cloudinit)zMetadata-Tokenz
User-Agent)r r �headersr z!Failed to connect to %s: Code: %s)r
�readurl�okr �code�contents�decode)r r r r r rD �responses r$ r r q s� � �
��
�C� "-�E�B�B�G��!������� � �H� �;�;�=�=�
��/�#�5�x�}�
�
�
� ��#�#�%�%�%r+ c �( � t j � � S �N)r �get_interfaces_by_macr7 r+ r$ �get_interface_maprN � s � ��$�&�&�&r+ c �T � t � � }| |vrd S |� | � � S rL )rN r0 )�mac�macs_to_nics r$ �get_interface_namerR � s/ � �#�%�%�K�
�+����t��?�?�3���r+ c �v � ddddgd�gd�}t | � � dk r2t | d d� � � }|d
� |� � t dt | � � � � D ]J}| | }|� d� � r� t |� � }|d
� |� � �K|S )N� �
nameserverz108.61.10.10z2001:19f0:300:1704::6)�type�address)�version�configr T)�primaryrY �unconfigured)�len�generate_interfacer) �ranger0 )�
interfaces�network�public�i� interface�privates r$ �generate_network_configre � s� � �� %�*�,C�D�
�
�
�� �G� �:������#�J�q�M�4�@�@�@����� � ��(�(�(� �1�c�*�o�o�
&�
&� *� *���q�M� � �=�=��(�(� ��$�Y�/�/����� � ��)�)�)�)��Nr+ Fc �. � t | d � � }|st d| d z � � �|d| d d�}|rd|d< |