HEX
Server: Apache/2.4.67 (Debian)
System: Linux vps-b2547eb4 6.1.0-41-cloud-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.158-1 (2025-11-09) x86_64
User: root (0)
PHP: 8.2.31
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/cloudinit/net/__pycache__/network_manager.cpython-311.pyc
�

܍~c=4����ddlZddlZddlZddlZddlZddlmZddlmZ	ddlm
Z
mZddlm
Z
mZmZddlmZdZdZd	Ze	je��ZGd
�d��ZGd�d
ej��Zdd�Zdd�ZdS)�N)�Optional)�log)�subp�util)�is_ipv6_address�renderer�subnet_is_ipv6)�NetworkStatez/etc/NetworkManagerz/usr/lib/NetworkManagerz'/etc/NetworkManager/NetworkManager.confc�p�eZdZdZd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
ed���Zd
�Zd�ZdS)�NMConnectionz/Represents a NetworkManager connection profile.c��tjd��}tj��|_t
|j_d|��ttj||����d�|jd<ddi|jd<dS)	z�
        Initializes the connection with some very basic properties,
        notably the UUID so that the connection can be referred to.
        z$a3924cb8-09e0-43e9-890b-77972a800108zcloud-init )�id�uuid�
connectionz%org.freedesktop.NetworkManager.originz
cloud-init�userN)r�UUID�configparser�ConfigParser�config�str�optionxform�uuid5)�self�con_id�
CI_NM_UUIDs   �?/usr/lib/python3/dist-packages/cloudinit/net/network_manager.py�__init__zNMConnection.__init__s����Y�E�F�F�
�"�/�1�1���"%����)��(�(���
�:�v�6�6�7�7�%
�%
���L�!�
4�\�
���F����c��|j�|��s
i|j|<|j�||��s||j||<dSdS)z_
        Sets a property unless it's already set, ensuring the section
        exists.
        N)r�has_section�
has_option)r�section�option�values    r�_set_defaultzNMConnection._set_default5sc���{�&�&�w�/�/�	&�#%�D�K�� ��{�%�%�g�v�6�6�	1�+0�D�K�� ��(�(�(�	1�	1rc�^�dddddddd�}|�|dd��	||}n"#t$rd}d|j|d<YnwxYw|j|ddkrd	S|j|ddkr|dkrd	S||j|d<|�|dd
��d	S)z}
        Ensures there's appropriate [ipv4]/[ipv6] for given family
        appropriate for given configuration type
        �manual�auto)�static�dhcp6�
ipv6_slaaczipv6_dhcpv6-statelesszipv6_dhcpv6-stateful�dhcp4�dhcp�method�disabled�truezmay-failr-N�false)r%�KeyErrorr)r�family�subnet_type�
method_mapr.s     r�_set_ip_methodzNMConnection._set_ip_method@s����� �%+�$*���
�
�
�	
���&�(�J�7�7�7�	5���,�F�F���	5�	5�	5��F�.4�D�K���
�+�+�+�	5�����;�v��x�(�F�2�2��F��;�v��x�(�F�2�2�v��7I�7I��F�(.���F��H�%����&�*�g�6�6�6�6�6s�,�A�
Ac��tjd��D]6}|�|��}|j�||��s||j||<dS�7dS)z�
        Adds a numbered property, such as address<n> or route<n>, ensuring
        the appropriate value gets used for <n>.
        �N)�	itertools�countrr!)rr"�
key_prefixr$�index�keys      r�
_add_numberedzNMConnection._add_numbereddsn���_�Q�'�'�	�	�E��(��(�(�C��;�)�)�'�3�7�7�
�,1���G�$�S�)����
�	�	rc�v�|ddzt|d��z}|�|d|��dS)z5
        Adds an ipv[46]address<n> property.
        �address�/�prefixN�rr>)rr3�subnetr$s    r�_add_addresszNMConnection._add_addresspsC��
�y�!�C�'�#�f�X�.>�*?�*?�?�����6�9�e�4�4�4�4�4rc��|ddzt|d��z}d|vr|dz|dz}|�|d|��dS)z3
        Adds a ipv[46].route<n> property.
        �networkrArB�gateway�,�routeNrC)rr3rJr$s    r�
_add_routezNMConnection._add_routexs`��
�i� �3�&��U�8�_�)=�)=�=�������C�K�%�	�"2�2�E����6�7�E�2�2�2�2�2rc���t|��rdnd}|�|dd��|�|dd��|j|d|zdz|j|d<dS)	zF
        Extends the ipv[46].dns property with a name server.
        �ipv6�ipv4r.r/�dns��;N)rr%r)rrOr3s   r�_add_nameserverzNMConnection._add_nameserver�sw��+�3�/�/�;���V�����&�(�J�7�7�7����&�%��,�,�,�%)�[��%8��%?�#�%E��%K���F��E�"�"�"rc��|�|dd��|j|dd�|��zdz|j|d<dS)zM
        Extends the ipv[46].dns-search property with a name server.
        z
dns-searchrPrQN)r%r�join)rr3�
dns_searchs   r�_add_dns_searchzNMConnection._add_dns_search�sX��
	
���&�,��3�3�3��K����-�����0D�0D�D�s�J�	
��F��L�)�)�)rc�(�|jddS)z-
        Returns the connection UUID
        rr)r�rs r�con_uuidzNMConnection.con_uuid�s���{�<�(��0�0rc�8�|j�dd��S)zN
        Can this be serialized into a meaningful connection profile?
        r�type)rr!rXs r�validzNMConnection.valid�s���{�%�%�l�F�;�;�;rc�R�|�dd�����S)z)
        Sanitize a MAC address.
        �-�:)�replace�upper)�addrs r�mac_addrzNMConnection.mac_addr�s$��
�|�|�C��%�%�+�+�-�-�-rc
� �ddddddd�}||d}|�dSd	|vrd}nd}||jd
d<|�7||jd
d<|j||dz��|jd
d
<i|j|<dddddddddd�	ddd�ddiiid�}|d}d}|dD]�}	t|	��rd nd!}
|�|
|	d��d"|	vr|�|
|	��d#|	vr|	d#|j|
d#<|	d$D]}|�|
|���d%|	vr |	d%D]}|�|���d&|	vr|�|
|	d&��|
d!krd|	vr|	d}��|�|}||ks#t�	d'|d(||��||�
��D]l\}
}||vr�
||��t||t��r||rd)nd*|j||
<�It||��|j||
<�m|dkrw|d+d,urtd-��|jdd.<|�t|��|jdd<|d/�)|�|d/��|jdd0<|dkr(d1|vr$|j|d1��|jdd2<|dkr�|d3D]R}|j|��}|�d
dd��|�d
d
|������S|d/�)|�|d/��|jdd0<|dkr`|�^d4|jdd5<t|��|jdd<|d/�)|�|d/��|jdd0<|dks|j�|d0��s|d(|jd
d6<dSdS)7z�
        Integrate information from network state interface information
        into the connection. Most of the work is done here.
        �ethernet�vlan�bond�bridge�
infinibandN)�physicalrfrgrhri�loopbackr[zbond-masterrz
slave-typez-master�masterz	bond-mode�bond_miimonzbond-xmit-hash-policyzbond-num-grat-arpzbond-downdelayzbond-updelayzbond-fail-over-maczbond-primary-reselectzbond-primary)	�mode�miimon�xmit_hash_policy�num_grat_arp�	downdelay�updelay�
fail_over_mac�primary_reselect�primary�
bridge_stp�bridge_bridgeprio)�stp�priorityr�vlan_id)rgrhrfreri�mtu�subnetsrMrNr@rH�routes�dns_nameserversrUzZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.�namer0r1�	wakeonlanT�@zwake-on-lan�mac_addresszmac-addresszvlan-raw-device�parent�bridge_ports�datagramztransport-modezinterface-name)r�con_refr	r6rErKrRrV�LOG�warning�items�
isinstance�boolrrc�get_connr%rYr!)r�ifacer�	_type_map�if_type�
slave_type�	_prop_map�
device_mtu�ipv4_mturDr3rJ�
nameserver�nm_propr=�ports                r�render_interfacezNMConnection.render_interface�sK��#����&��

�
�	��E�&�M�*���?��F��E�!�!��J�J��J�,3���L�!�&�)��!�6@�D�K��%�l�3�2B�(�2B��j�9�,�-�3�3�D�K��%�h�/�
 "���G��$�'�$;� 3�-�)�!5�$;�)�
�
�$�/���
�i����)
�
�	�.�5�\�
����I�&�	)�	)�F�-�f�5�5�A�V�V�6�F������v��7�7�7��F�"�"��!�!�&�&�1�1�1��F�"�"�17�	�1B���F�#�I�.���)�
/�
/�������.�.�.�.� �F�*�*�"(�):�";�5�5�J��(�(��4�4�4�4��v�%�%��$�$�V�V�L�-A�B�B�B�����E�V�O�O�!�%�=�����!�H��:�%�%��K�K�>��f�
���
�
�
�&�g�.�4�4�6�6�
	@�
	@�L�G�S��%�����S�z�!���%��*�d�+�+�
@�#�C�j�5�F�F�g���G�$�W�-�-�14�E�#�J�����G�$�W�-�-��j� � ��[�!�T�)�)�9<�T�����J�'�
�6��#�14�X�����J�'��.��]�#�/�9=����-�(�:�:���J�'�
�6��f���!2�e�!;�!;�,<�H�,<��'�(�-�-�D�K����)��h����n�-�
K�
K��(�x�(��.�.���!�!�,��h�G�G�G��!�!�,��$�-�-�/�/�J�J�J�J��]�#�/�7;�}�}��-�(�8�8���H�%�m�4��l�"�"�x�';�:D�D�K��%�&6�7�/2�8�}�}�D�K��%�e�,��]�#�/�;?�=�=��-�(�<�<���L�)�-�8�
�h���d�k�&<�&<��]�'
�'
��;@��-�D�K��%�&6�7�7�7��rc��tj��}|j�|d���d}||���zS)z
        Stringify.
        F)�space_around_delimitersz2# Generated by cloud-init. Changes will be lost.

)�io�StringIOr�write�getvalue)r�buf�headers   r�dumpzNMConnection.dump>sB��
�k�m�m������#�u��=�=�=�G��������&�&rN)�__name__�
__module__�__qualname__�__doc__rr%r6r>rErKrRrVrYr\�staticmethodrcr�r��rrrrs�������9�9�
�
�
�.	1�	1�	1�"7�"7�"7�H
�
�
�5�5�5�3�3�3�
L�
L�
L�
�
�
�1�1�1�<�<�<��.�.��\�.�NH�NH�NH�`'�'�'�'�'rrc�L�eZdZdZd
d�Zd�Zd�Z		ddedee	ddfd	�Z
dS)�Rendererz?Renders network information in a NetworkManager keyfile format.Nc��i|_dS�N��connections)rrs  rrzRenderer.__init__Ls������rc��|j|Sr�r��rrs  rr�zRenderer.get_connOs�����'�'rc�V�||jvr|j|���S|Sr�)r�rYr�s  rr�zRenderer.con_refRs1���T�%�%�%��#�F�+�4�4�6�6�6��Mr�
network_state�	templates�returnc���|���D]%}t|d��|j|d<�&|���D]+}|j|d}|�||���,|j���D]R\}}|���s�t
||��}tj||�	��d���SdS)Nr�i�)
�iter_interfacesrr�r�r�r\�
conn_filenamer�
write_filer�)rr�r��targetr��connrr�s        r�render_network_statezRenderer.render_network_stateYs���#�2�2�4�4�	J�	J�E�.:�5��=�.I�.I�D��U�6�]�+�+�#�2�2�4�4�	/�	/�E��#�E�&�M�2�D��!�!�%��.�.�.�.�!�,�2�2�4�4�	6�	6�L�F�D��:�:�<�<�
�� ���0�0�D��O�D�$�)�)�+�+�u�5�5�5�5�		6�	6rr�)NN)r�r�r�r�rr�r�r
r�dictr�r�rrr�r�Is�������I�I�����(�(�(����%)��	6�6�#�6��D�>�6�

�6�6�6�6�6�6rr�c�P�tj|t��}d|�d�}|�d|��S)Nzcloud-init-z
.nmconnectionz/system-connections/)r�target_path�
NM_RUN_DIR)rr��target_con_dir�con_files    rr�r�rs8���%�f�j�9�9�N�2�V�2�2�2�H��<�<�(�<�<�<rc�F�ddlm}tj�tj|t�����}tjd|���}d}|��r/	tjgd���n#t
j	$rd}YnwxYw|ot|��o|S)	Nr)�uses_systemd)�path�nmcli)r�T)�	systemctlz
is-enabledzNetworkManager.serviceF)�cloudinit.distrosr��osr��isfilerr��NM_CFG_FILE�which�ProcessExecutionErrorr�)r�r��config_present�
nmcli_present�service_actives     r�	availabler�xs���/�.�.�.�.�.��W�^�^�D�$4�V�+�$N�$N�$N�O�O�N��J�w�v�6�6�6�M��N��|�~�~�#�	#��I�K�K�K�L�L�L�L���)�	#�	#�	#�"�N�N�N�	#�����D�d�=�1�1�D�n�Ds�"A9�9B
�B
r�)rr�r9r�r�typingr�	cloudinitr�loggingrr�
cloudinit.netrrr	�cloudinit.net.network_stater
r��
NM_LIB_DIRr��	getLoggerr�r�rr�r�r�r�rr�<module>r�s^������	�	�	�	�����	�	�	�	�����������$�$�$�$�$�$� � � � � � � � �C�C�C�C�C�C�C�C�C�C�4�4�4�4�4�4�
"�
�
&�
�7���g���!�!��k'�k'�k'�k'�k'�k'�k'�k'�\	&6�&6�&6�&6�&6�x� �&6�&6�&6�R=�=�=�=�E�E�E�E�E�Er