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__/digitalocean.cpython-312.pyc
�

�fE���ddlZddlZddlZddlmZddlmZddlmZmZm	Z	ddd�Z
eje�Z
dd�Zd	�Zdd
�Zd�Zdd�Zd
�Zy)�N)�dmi)�net)�subp�
url_helper�util�eth0�eth1)�public�privatec�>�|s!t|�}tjd|�|std��dj	tjdd�tjdd��}dd	d
|d|g}ddd
d|dg}tjd�std��	tj|�tjd||�tj|�tjd|�|S#t$rtjtd||��wxYw)z�Bring up NIC using an address using link-local (ip4LL) IPs.
    On DigitalOcean, the link-local domain is per-droplet routed, so there
    is no risk of collisions. However, to be more safe, the ip4LL
    address is random.
    z,selected interface '%s' for reading metadatazPunable to find interfaces to access themeta-data server. This droplet is broken.z169.254.{0}.{1}/16��r��ip�addr�add�dev�link�set�upz4No 'ip' command available to configure ip4LL addressz#assigned ip4LL address '%s' to '%s'zbrought device '%s' upzRip4LL address assignment of '%s' to '%s' failed. Droplet networking will be broken)�get_link_local_nic�LOG�debug�RuntimeError�format�random�randintr�which�	Exceptionr�logexc)�distro�nicr�ip_addr_cmd�ip_link_cmds     �H/usr/lib/python3/dist-packages/cloudinit/sources/helpers/digitalocean.py�assign_ipv4_link_localr&s��� ��(���	�	�@�#�F���
8�
�	
�
 �&�&����q�#�����q�#� 6��D�����e�S�9�K�����s�D�9�K��:�:�d���B�
�	
�
��	�	�+���	�	�7��s�C��	�	�+���	�	�*�C�0��J��������
1���	
�	��s
�AC5�5'Dc��tj�D�cgc]}|jj|�r|��!}}|syt	|d���Scc}w)Nc�.�tj|d�S)N�ifindex)�cloudnet�read_sys_net_int)�ds r%�<lambda>z$get_link_local_nic.<locals>.<lambda>Is��8�#<�#<�Q�	�#J��)�key)r*�get_devicelist�
networking�is_physical�min)r!�f�nicss   r%rrAsY���(�(�*��
����(�(��+�	
��D��
���t�J�K�K��s�$Ac�(�|stjd�ytjd�dddd|g}	tj|�tjd|�y#t$r&}t	j
td	||�Yd}~yd}~wwxYw)
zwRemove the ip4LL address. While this is not necessary, the ip4LL
    address is extraneous and confusing to users.
    zLno link_local address interface defined, skipping link local address cleanupNzcleaning up ipv4LL addressrr�flushrzremoved ip4LL addresses from %sz)failed to remove ip4LL address from '%s'.)rrrrrr )r"r#�es   r%�del_ipv4_link_localr9Ls�����	�	�
$�	
�	��I�I�*�+����%��5�K�N��	�	�+���	�	�3�S�9���N����C�D�c�1�M�M��N�s�+A"�"	B�+B�Bc�*�d�}g}tj�}tjd|�|D�].}||d}tjd|�|j	d�}||vrtd|�d|����|j	|�}|j	dd	�}	tj	|	|�}
|
|k7rtjd
|	|||
�nd}tj|||�d||
d
�}g}
dD]<}|j	|d�}|s�||�}|	dk7sd|vr|d=|
j|��>|
|d<|j|�tjd|
|���1|r*tjd|�|jd|d��d|d�S)a}Convert the DigitalOcean Network description into Cloud-init's netconfig
    format.

    Example JSON:
     {'public': [
           {'mac': '04:01:58:27:7f:01',
            'ipv4': {'gateway': '45.55.32.1',
                     'netmask': '255.255.224.0',
                     'ip_address': '45.55.50.93'},
            'anchor_ipv4': {
                     'gateway': '10.17.0.1',
                     'netmask': '255.255.0.0',
                     'ip_address': '10.17.0.9'},
            'type': 'public',
            'ipv6': {'gateway': '....',
                     'ip_address': '....',
                     'cidr': 64}}
        ],
       'private': [
           {'mac': '04:01:58:27:7f:02',
            'ipv4': {'gateway': '10.132.0.1',
                     'netmask': '255.255.0.0',
                     'ip_address': '10.132.75.35'},
            'type': 'private'}
        ]
     }
    c��dd|jd�|jd�d�}d|jd�vr5dj|jd�|jd��|d	<|S|jd
�|d
<|S)N�static�auto�
ip_address�gateway)�type�control�addressr?�:z{0}/{1}�cidrrB�netmask)�getr)�pcfg�subparts  r%�_get_subnet_partz7convert_network_configuration.<locals>._get_subnet_part�s������x�x��-��x�x�	�*�	
���$�(�(�<�(�(�!*�!1�!1�����&�����(8�"�G�I����"&���)�!4�G�I���r.znic mapping: %srzconsidering %s�macz3Did not find network interface on system with mac 'z'. Cannot apply configuration: r@�unknownz6Found %s interface '%s' on '%s', assigned name of '%s'zfFound interface '%s' on '%s', which is not a public or private interface. Using default system naming.�physical)r@�mac_address�name)�ipv4�ipv6�anchor_ipv4�anchor_ipv6Nr
�anchorr?�subnetsznic '%s' configuration: %szadded dns servers: %s�
nameserver)r@rBr
)�version�config)r*�get_interfaces_by_macrrrFr�NIC_MAP�append)rW�dns_serversrI�nic_configs�macs_to_nics�nr"rM�
sysfs_name�nic_type�if_name�msg�ncfgrT�netdef�
raw_subnet�sub_parts                 r%�convert_network_configurationrgcs���:�"�K��1�1�3�L��I�I���.�
�3?���Q�i��l���	�	�"�C�(��g�g�e�n���l�*����%��
�"�%�%�k�2�
��7�7�6�9�-���+�+�h�
�3���j� ��I�I�H�����
�E�
�
�I�I�c�;�
�3��&��
����D�		%�F������.�J���'�
�3�H��8�#�x�6�'9��Y�'��N�N�8�$�		%�"��Y�����4� ��	�	�.���>�g3?�j��	�	�)�;�7����L�[�I�J��K�0�0r.c���tj||||��}|j�std|z��t	j
|jj��S)N)�timeout�sec_between�retrieszunable to read metadata at %s)r�readurl�okr�json�loads�contents�decode)�urlrirjrk�responses     r%�
read_metadatart�sU���!�!��W�+�w��H��;�;�=��:�S�@�A�A��:�:�h�'�'�.�.�0�1�1r.c���tjd�}|dk7rytjd�}|rtjd|�d|fSd}tj	|�t|��)Nzsystem-manufacturer�DigitalOcean)FNzsystem-serial-numberz8system identified via SMBIOS as DigitalOcean Droplet: %sz�system identified via SMBIOS as a DigitalOcean Droplet, but did not provide an ID. Please file a support ticket at: https://cloud.digitalocean.com/support/tickets/newT)r�
read_dmi_datarr�criticalr)�vendor_name�
droplet_idrbs   r%�read_sysinfor{�sw��
�#�#�$9�:�K��n�$���"�"�#9�:�J���	�	�F��	
�
�*���
A�	�	���S���3��r.)N)�r|�)rn�loggingr�	cloudinitrrr*rrrrY�	getLogger�__name__rr&rr9rgrtr{�r.r%�<module>r�s[��
��
��%�,�,���
/���g����!��,�^L�N�.k1�\2�r.