HOME


Mini Shell 1.0
Redirecting to https://devs.lapieza.net/iniciar-sesion Redirecting to https://devs.lapieza.net/iniciar-sesion.
DIR: /proc/self/root/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/
Upload File :
Current File : //proc/self/root/usr/lib/python3/dist-packages/cloudinit/net/__pycache__/sysconfig.cpython-311.pyc
�

܍~c
���L�ddlZddlZddlZddlZddlmZmZddlmZ	ddlm
Z
mZddlm
Z
mZddlmZmZmZmZmZddlmZe	je��Zgd�Zdd
�Zd�Zd�ZGd
�d��ZGd�de��ZGd�de��Z Gd�dej!��Z!d�Z"dd�Z#dS)�N)�Mapping�Optional)�log)�subp�util)�networkmanager_conf�resolv_conf)�IPV6_DYNAMIC_TYPES�is_ipv6_address�net_prefix_to_ipv4_mask�renderer�subnet_is_ipv6)�NetworkState)�	almalinux�centos�
cloudlinux�	eurolinux�fedora�miraclelinux�	openEuler�openmandriva�rhel�rocky�suse�	virtuozzo�#c��ddg}tdt|����D]!}||r|dz||z||<�|||<�"d�|��S)NzBCreated by cloud-init on instance boot automatically, do not edit.�r� �
)�range�len�join)�sep�lines�is   �9/usr/lib/python3/dist-packages/cloudinit/net/sysconfig.py�_make_headerr(&sq��L�
�
�E��1�c�%�j�j�
!�
!������8�	��S�y�5��8�+�E�!�H�H��E�!�H�H��9�9�U����c�2�d}|ddko	|d|vS)N)z::z0.0.0.0�prefixr�network�)�route�default_netss  r'�_is_default_router03s%��$�L���?�a��D�E�)�$4��$D�Dr)c��tjd|��r1|�d��r|�d��r|Sd|zS|S)Nz\s�"z"%s")�re�search�
startswith�endswith)�values r'�_quote_valuer88sS��	�y���������C� � �	"�U�^�^�C�%8�%8�	"��L��E�>�!��r)c�X�eZdZdZddd�Zd�Zd�Zd�Zd�Zd	�Z	d
�Z
d�Zd�Zd
�Z
d�ZdS)�	ConfigMapz!Sysconfig like dictionary object.�yes�no)TFc��i|_dS�N��_conf��selfs r'�__init__zConfigMap.__init__Ls
����
�
�
r)c��||j|<dSr>r?)rB�keyr7s   r'�__setitem__zConfigMap.__setitem__Os����
�3���r)c��|j|Sr>r?�rBrEs  r'�__getitem__zConfigMap.__getitem__Rs���z�#��r)c�6�|j�|��Sr>)r@�getrHs  r'rKz
ConfigMap.getUs���z�~�~�c�"�"�"r)c��||jvSr>r?rHs  r'�__contains__zConfigMap.__contains__Xs���d�j� � r)c�<�|j�|d��dSr>)r@�poprHs  r'�dropzConfigMap.drop[s���
���s�D�!�!�!�!�!r)c�*�t|j��Sr>)r"r@rAs r'�__len__zConfigMap.__len__^s���4�:���r)c��dS)z6Skip the pair key, value if it matches a certain rule.Fr-�rBrE�vals   r'�skip_key_valuezConfigMap.skip_key_valueas���ur)c�@�tj��}|�t����|jr|�d��t|j�����D]�}|j|}|�||��r�&t|t��r
|j
|}t|t��st|��}|�|�dt|���d�����|�
��S)Nr �=)�io�StringIO�writer(r@�sorted�keysrV�
isinstance�bool�	_bool_map�strr8�getvalue)rB�bufrEr7s    r'�	to_stringzConfigMap.to_stringes����k�m�m���	�	�,�.�.�!�!�!��:�	��I�I�d�O�O�O��$�*�/�/�+�+�,�,�	>�	>�C��J�s�O�E��"�"�3��.�.�
���%��&�&�
.���u�-���e�S�)�)�
#��E�
�
���I�I�3�3�3��U�(;�(;�(;�(;�<�=�=�=�=��|�|�~�~�r)c�:�|j�|��dSr>)r@�update)rB�updatess  r'rfzConfigMap.updateus���
���'�"�"�"�"�"r)N)�__name__�
__module__�__qualname__�__doc__r`rCrFrIrKrMrPrRrVrdrfr-r)r'r:r:Cs�������+�+�����I�
��� � � ����#�#�#�!�!�!�"�"�"���������� #�#�#�#�#r)r:c�b��eZdZdZ�fd�Zd�Zed���Zed���Zd�Z	d	d�Z
�xZS)
�Routez!Represents a route configuration.c���tt|�����d|_d|_d|_||_||_||_||_	dS)N�F)
�superrmrC�last_idx�has_set_default_ipv4�has_set_default_ipv6�_route_name�_base_sysconf_dir�route_fn_tpl_ipv4�route_fn_tpl_ipv6)rB�
route_name�base_sysconf_dir�ipv4_tpl�ipv6_tpl�	__class__s     �r'rCzRoute.__init__|s\���
�e�T���#�#�%�%�%���
�$)��!�$)��!�%���!1���!)���!)����r)c���t|j|j|j|j��}|j���|_|j|_|j|_|j	|_	|Sr>)
rmrtrurvrwr@�copyrqrrrs)rB�rs  r'r~z
Route.copy�sb������"��"��"�	
�
���*�/�/�#�#����]��
�!%�!:���!%�!:����r)c�0�|j|j|jd�zS�N)�base�name)rvrurtrAs r'�	path_ipv4zRoute.path_ipv4��#���%��+�T�5E�F�F�
�	
r)c�0�|j|j|jd�zSr�)rwrurtrAs r'�	path_ipv6zRoute.path_ipv6�r�r)c�
�d|vS)N�:r-)rB�addresss  r'�
is_ipv6_routezRoute.is_ipv6_route�s���g�~�r)�ipv4c
���|dvrtdt|��z���tj��}|�t����|jr|�d��d}t|j�����D�]0}d|vr�|�	dd��}t|j|��}t|jd|z��}|dk�rE|�
|���s/t|jd	|z��}|d
z}|�dt|��z�dt|���d���|�dt|��z�dt|���d���|�d	t|��z�dt|���d���d|z}	|	|jvrUt|jd|z��}
|�dt|��z�dt|
���d������|d
kr�|�
|��rtt|jd|����}d|z|jvr dt|jd|z��znd}
|�|�d|�d|�d|
�d|j�d�
����2|�
��S)N)r��ipv6zUnknown protocol '%s'r ����ADDRESSr�GATEWAYr��NETMASKrorX�METRICr��PREFIXzmetric �/z via rz dev )�
ValueErrorrarYrZr[r(r@r\r]�replacer�r8rtrb)rB�protorc�reindexrE�index�
address_value�
gateway_value�
netmask_value�
metric_key�metric_value�prefix_values            r'rdzRoute.to_string�s���(�(�(��4��E�
�
�C�D�D�D��k�m�m���	�	�,�.�.�!�!�!��:�	��I�I�d�O�O�O����$�*�/�/�+�+�,�,�5	�5	�C���#�#���K�K�	�2�.�.�E���
�3��0�0�M���
�9�u�+<� =�>�>�M�����t�'9�'9�-�'H�'H�� #�D�J�y�5�/@�$A� B� B�
�!�A�+���	�	� �3�w�<�<�/�/�/��m�1L�1L�1L�1L�N�����	�	� �3�w�<�<�/�/�/��m�1L�1L�1L�1L�N�����	�	� �3�w�<�<�/�/�/��m�1L�1L�1L�1L�N����&��-�
����+�+�#&�t�z�(�U�2B�'C�#D�#D�L��I�I�#�c�'�l�l�2�2�2�L��4N�4N�4N�4N�P������&���T�%7�%7�
�%F�%F��"�4�:�.>�u�.>�.>�#?�@�@�� �%�'�4�:�5�5���D�J�x�%�/?�$@� A� A�A�A���
�	�	�&�
�
�$���%�
�
�$����(�(�(�
�	�	�	���|�|�~�~�r))r�)rhrirjrkrCr~�propertyr�r�r�rd�
__classcell__�r|s@r'rmrmys��������+�+�*�*�*�*�*�����
�
��X�
�
�
�
��X�
�
���B�B�B�B�B�B�B�Br)rmc����eZdZdZdddddd�Z	d�fd	�	Zed
���Zejd���Zed���Z	e	jd
���Z	ed���Z
dd�Zd�Z�xZ
S)�NetInterfacezERepresents a sysconfig/networking-script (and its config + children).�Ethernet�Bond�Bridge�
InfiniBand�Vlan)�ethernet�bond�bridge�
infiniband�vlanr�c���tt|�����g|_||_|j�d��}t
|||�d��|�d�����|_|j�d��|_||_	||_
||jd<||_dS)N�route_templatesr�r�)rzr{�iface_templates�DEVICE)
rpr�rC�children�	templatesrKrm�routes�iface_fn_tpl�kind�_iface_namer@ru)rB�
iface_nameryr�r��	route_tplr|s      �r'rCzNetInterface.__init__�s����	�l�D�!�!�*�*�,�,�,���
�"����N�&�&�'8�9�9�	�����]�]�6�*�*��]�]�6�*�*�	
�
�
���!�N�.�.�/@�A�A�����	�%���)��
�8��!1����r)c��|jSr>)r�rAs r'r�zNetInterface.names����r)c�(�||_||jd<dS)Nr�)r�r@)rBr�s  r'r�zNetInterface.name
s��%���)��
�8���r)c��|jSr>)�_kindrAs r'r�zNetInterface.kinds
���z�r)c�n�||jvrt|���||_|j||jd<dS)N�TYPE)�iface_typesr�r�r@)rBr�s  r'r�zNetInterface.kinds?���t�'�'�'��T�"�"�"���
�!�-�d�3��
�6���r)c�0�|j|j|jd�zSr�)r�rur�rAs r'�pathzNetInterface.paths"��� ��+�T�Y�?�?�
�	
r)Fc��t|j|j|j|j���}|j���|_|rt|j��|_|r|j	���|_	|S)N)r�)
r�r�rur�r�r@r~�listr�r�)rB�
copy_children�copy_routes�cs    r'r~zNetInterface.copy sx����I�t�-�t�~�D�J�
�
�
���*�/�/�#�#����	-��d�m�,�,�A�J��	*��{�'�'�)�)�A�H��r)c�"�|dkr|dkrdSdS)Nr�r�TFr-rTs   r'rVzNetInterface.skip_key_value+s���&�=�=�S�F�]�]��4��ur))r�)FF)rhrirjrkr�rCr�r��setterr�r�r~rVr�r�s@r'r�r��s�������O�O����"����K�=G�2�2�2�2�2�2�(� � ��X� �
�[�*�*��[�*�����X��
�[�4�4��[�4��
�
��X�
�
	�	�	�	�������r)r�c��eZdZUdZddddd�ddd�d	�Zd
ddd
ddd�dddddd�d	�Zegd���ZiZe	e
d<d)d�Zed���Z
ed���Zed���Zed���Zed���Zed���Zed ���Zed)d!���Zed)d"���Zed#���Zed$���Ze	d)d%���Z		d*d&edee	d'dfd(�ZdS)+�Rendererz7Renders network information in a /etc/sysconfig format.TF�none)�ONBOOT�USERCTL�
NM_CONTROLLED�	BOOTPROTO�static�auto)r��	STARTMODE)rr�IPV6_FORCE_ACCEPT_RA�STP�AGEING�PRIO�HWADDR�MTU)�	accept-ra�
bridge_stp�
bridge_ageing�bridge_bridgeprio�mac_address�mtu�
BRIDGE_STP�BRIDGE_AGEINGTIME�BRIDGE_PRIORITY�LLADDR)r�r�r�r�r�))�	bond_modezmode=%s)�bond_xmit_hash_policyzxmit_hash_policy=%s)�bond_miimonz	miimon=%s)�bond_min_linkszmin_links=%s)�bond_arp_intervalzarp_interval=%s)�bond_arp_ip_targetzarp_ip_target=%s)�bond_arp_validatezarp_validate=%s)�bond_ad_selectzad_select=%s)�bond_num_grat_arpznum_grat_arp=%s)�bond_downdelayzdowndelay=%s)�bond_updelayz
updelay=%s)�bond_lacp_ratezlacp_rate=%s)�bond_fail_over_maczfail_over_mac=%s)�bond_primaryz
primary=%s)�bond_primary_reselectzprimary_reselect=%sr�Nc��|si}|�dd��|_|�dd��|_|�dd��|_d}|�d|��|_|�d	��|�d
��|�d��d�|_|�d
d��|_dS)N�sysconf_dirz
etc/sysconfig�
netrules_pathz(etc/udev/rules.d/70-persistent-net.rules�dns_pathzetc/resolv.confz,etc/NetworkManager/conf.d/99-cloud-init.conf�networkmanager_conf_path�controlr�r�)r�r�r��flavorr)rKr�r�r�r�r�r�)rB�config�nm_conf_paths   r'rCzRenderer.__init__ns����	��F�!�:�:�m�_�E�E���#�Z�Z��G�
�
����
�
�:�/@�A�A��
�E��(.�
�
�&��)
�)
��%��z�z�)�,�,�%�z�z�*;�<�<�%�z�z�*;�<�<�
�
���
�j�j��6�2�2����r)c�x�tj|j�|i����}|�|��dD]Q}|�|��}|�8|dkr|ddvr�*|j|�|��}|r|||<�Rd|vr|dr|ddkrd|d<dSdSdSdS)	N)r�r�r�r��type)�physicalr��	wakeonlanrzwol g�ETHTOOL_OPTS)r~�deepcopy�iface_defaultsrKrf�cfg_key_maps)�cls�iface�	iface_cfgr��flavor_defaults�old_key�	old_value�new_keys        r'�_render_iface_sharedzRenderer._render_iface_shared�s����-��(:�(>�(>�v�r�(J�(J�K�K������)�)�)�:�	3�	3�G��	�	�'�*�*�I��$��m�+�+��f�
�F�1�1���*�6�2�6�6�w�?�?���3�)2�I�g�&��
�5� � ��k�"�
!��f�
��+�+�(/�I�n�%�%�%�	
!� � � �+�+r)c	��	�|dkr$d|d<d|vrd|d<|�d��nd|d<t|t|j�����D�]U\}}d}|�d	��}|d
ks|dkrR|dkr|ddkrd|d<nd
|d<d
|d<�n�|dkr|dkrd|d<d|d<d|d<d|d<�n�d|d<d|d<�n�|dkr:|dkr|ddkrd|d<nd
|d<d|d<�n�d|d<d|d<d|d<d|d<�no|dkr0|dkr|ddkrd|d<nd
|d<d|d<�nEd|d<d|d<�n9|dvr&|d}	d|d<|dkr|dkr|	d
krd|d<�n|dvr�t|��r
|dkrd}d|d<d|vr�t
||vo|d||k��}
|
r.t�d|j	|||d��t|��r|dkrn|d||<n|d||<t|��r|dkr
d|d<d|d<nK|d kr*|dkrt�
d!|��n#||v|d"<ntd#|�d$|j	�d%����|�d&��d kr|dkrd |d'<��Pd|d"<��Wd(}d(}t|t|j�����D�]\}}|�d	��}d)|vr|dkr|d)|d*<|d+vr|dkr|r|ddkrd|d,<�N|tvr�X|dv�r�t|��rk|d-z}|d.�d/|d0��}
|d1kr|dkr|
|d2<n�|
|d3<n�|d-kr|dkr|
|d4<nn|
|d5<nh|dkr	|
|d6|z<nY|d5xxd7|
zz
cc<nE|d-z}|d1krd8nt|��}|d.|d9|z<t|d0��|d:|z<d;|vr7|dkr1d|d<<t|d;��r|d;|d=<n|d;|d><d?|vr$|dkrd7�|d?��|d@<dA|vr�|dkr�t|dA��dBkr4t�
dC|j	t|dA����t|dAddB�d-��D]\}}||dDt|��z<���dS)ENrr�r��BRIDGE�dhcpr���startr�r��dhcp6zipv6_dhcpv6-stateful�dhcp4�managed�DHCLIENT6_MODErT�DHCPV6C�IPV6INITF�
IPV6_AUTOCONFzipv6_dhcpv6-stateless�infoz-S�DHCPV6C_OPTIONS�
ipv6_slaac)rr)r��static6�IPV6_MTUr�zZNetwork config: ignoring %s device-level mtu:%s because ipv4 subnet-level mtu:%s provided.r��manualz Unknown subnet type setting "%s"r�zUnknown subnet type 'z' found for interface '�'r�r�r��metricr��rr�DHCLIENT_SET_DEFAULT_ROUTEror�r�r+r�IPADDR6�IPV6ADDR�	IPADDR6_1�IPV6ADDR_SECONDARIESz
IPADDR6_%drr�IPADDRr��gateway�DEFROUTE�IPV6_DEFAULTGWr��
dns_search�DOMAIN�dns_nameservers�z6%s has %d entries in dns_nameservers. Only 3 are used.�DNS)rP�	enumerater"r�rKrr_�LOG�warningr��debugr�r
rarrr#)rr�subnets�has_default_router�r&�subnet�mtu_key�subnet_type�bootproto_in�mtu_mismatch�
ipv4_index�
ipv6_index�	ipv6_cidr�suff�ks                r'�_render_subnetszRenderer._render_subnets�sa���V���%-�I�k�"��9�$�$�)/�	�+�&����x�(�(�(��%+�I�k�"�#�7�#�i�6H�2I�2I�J�J�J�u	0�u	0�I�A�v��G� �*�*�V�,�,�K��g�%�%��8N�)N�)N��V�#�#� ��-��8�8�17�	�+�.�.�29�	�+�.�2;�I�.�/�/��f�$�$��8N�)N�)N�-3�I�k�*�+/�I�i�(�,0�I�j�)�16�I�o�.�.�,0�I�j�)�+/�I�i�(�(�� 7�7�7��V�#�#� ��-��8�8�17�	�+�.�.�29�	�+�.�28�I�.�/�/�,0�I�j�)�26�I�o�.�+/�I�i�(�48�I�/�0�0���,�,��V�#�#� ��-��8�8�17�	�+�.�.�29�	�+�.�28�I�.�/�/�,0�I�j�)�15�I�o�.�.�� 1�1�1�(��5��)/�	�+�&��V�#�#��w�(>�(>�$�w�.�.�18�	�+�.��� 5�5�5�"�&�)�)�1�f��.>�.>�(�G�,0�I�j�)��F�?�?�#'��9�,�@�"�5�M�Y�w�-?�?�$�$�L�$�����J�%�N�%�g�.�"�5�M����&�f�-�-�;�!�V�+�+�!�17���I�g�.�.�-3�E�]�	�'�*�!�&�)�)�7�f��.>�.>�8=�I�4�5�16�I�o�.����(�(��V�#�#��I�I�@�+�N�N�N�N�+2�Y�*>�I�h�'�'� �j�"�{�{�I�N�N�N�4�����z�z�)�$�$��0�0��V�#�#�-5�I�k�*�*�*/�I�h�'���
��
�"�7�#�i�6H�2I�2I�J�J�J�@	6�@	6�I�A�v� �*�*�V�,�,�K��6�!�!��V�#�#�*0��*:�I�h�'��/�/�/��V�#�#�(�H�Y�{�-C�v�-M�-M�BG�	�">�?��� 2�2�2��� 5�5�5�!�&�)�)��!+�a��J�+1�)�+<�+<�+<�f�X�>N�>N� O�I�!�Q���!�V�+�+�3<�I�i�0�0�4=�I�j�1�1�#�q���!�V�+�+�5>�I�k�2�2�@I�I�&<�=�=�!�V�+�+�CL�I�l�Z�&?�@�@�%�&<�=�=�=� #�i���=�=�=�=�",�a��J�!+�q���2�2�c�*�o�o�D�17�	�1B�I�h��o�.�2I��x�(�3�3�I�i�$�.�/���&�&�6�V�+;�+;�,0�I�j�)�&�v�i�'8�9�9�A�6<�Y�6G�	�"2�3�3�/5�i�/@�	�)�,��6�)�)�f��.>�.>�*-�(�(�6�,�3G�*H�*H�I�h�'�$��.�.�6�V�3C�3C��6�"3�4�5�5��9�9��	�	�/�%�N���'8� 9�:�:�	���!*�&�1B�*C�B�Q�B�*G�� K� K�6�6���1�45�	�%�#�a�&�&�.�1�1��A@	6�@	6r)c���|dkrdSt|t|j�����D�]H\}}|�d��}|�dg��D�]}|�d��pt	|d��}	t|��r�|tvr�|�d��r|js|�d��r|jrtd|j
z���d	|d
<|ddvrd	|d
<d|vr'|	r|d|d<d	|_n|d|d<d	|_d|vr|d|d<��dD]\}
}|
|vr|�|j��}||
||<� |xjdz
c_����JdS)Nrrr�r�r�r)r�z?Duplicate declaration of default route found for interface '%s'Tr*r�r"r#r+r�r!r�))r)r�)r!r�)r+r�)�netmaskr�)r,r�ro)r1r"r�rKrr0r
rrrsr�r�rq)
rr�	route_cfgr5r��_r7r9r.�is_ipv6r
�new_namers
             r'�_render_subnet_routeszRenderer._render_subnet_routescs��
�V����F�"�7�#�i�6H�2I�2I�J�J�J�5	,�5	,�I�A�v� �*�*�V�,�,�K����H�b�1�1�3
,�3
,�� �*�*�V�,�,����)�$�1�1��&�e�,�,�,,�#�+=�=�=��
�
�6�*�*��/8�/M���
�
�6�*�*��09�/M��
)�=�@I��P����-1�I�j�)� ��-�1B�B�B�BF�	�">�?� �E�)�)�"�B�:?�	�:J�I�&6�7�=A�I�:�:�38��3C�I�i�0�=A�I�:��5�(�(�.3�H�o�	�(�+��
.�	@�	@�)���#�e�+�+�)1�&G�9�3E�&G�&G�G�16�w��I�g�.���&�&�!�+�&�&�&�g3
,�5	,�5	,r)c��g}|jD]y\}}||�dd��g}|D]Y}||vrS||}t|ttf��rd�|��}|�||z��n�Z�z|r:|dkrd�|��|d<dSd�|��|d<dSdS)NrE�-rr�BONDING_MODULE_OPTS�BONDING_OPTS)�
bond_tpl_optsr�r^�tupler�r#�append)	rrrr��	bond_opts�bond_key�	value_tpl�	bond_keys�
bond_values	         r'�_render_bonding_optszRenderer._render_bonding_opts�s���	�%(�%6�		�		�!�X�y�!�8�#3�#3�C��#=�#=�>�I�%�
�
���u�$�$�!&�x��J�!�*�u�d�m�<�<�:�%(�X�X�j�%9�%9�
��$�$�Y�*�%=�>�>�>��E�%���	@�����
47�8�8�I�3F�3F�	�/�0�0�0�-0�H�H�Y�,?�,?�	�.�)�)�)�	@�	@r)c��tj}|�|��D]d}|d}|�dg��}||}|j}	|�|||j|��|�||	||���edS)Nr�r5)r
�filter_by_physical�iter_interfacesrKr�rAr6rH)
r�
network_state�iface_contentsr��physical_filterrr��
iface_subnetsrrDs
          r'�_render_physical_interfacesz$Renderer._render_physical_interfaces�s���#�5��"�2�2�?�C�C�	�	�E��v��J�!�I�I�i��4�4�M�&�z�2�I�!�(�I�������/��	
�
�
�
�%�%��9�m�V�
�
�
�
�	�	r)c�v��tjd��}tjd��}|�|��D�]x}|d�|�}|�|||��|g}|�|j��|D]}	d|	d<|dkrd|	_�|�d��r7|dkr|�d��|d<n|�d��|d	<|�d
g��}
|j	}|�
||
|j|��|�|||
|��t�fd�|�|��D����}t|��D]>\}
}|dkrd|
z}nd
|
z}|||<||}|dkrd|d<d|d<�4�|d<d|d<�?��zdS)Nr��bond-masterr�T�BONDING_MASTERrr�r��MACADDRr5c�8��g|]}|d�k�|d��S)r_r�r-)�.0�slave_ifacer�s  �r'�
<listcomp>z4Renderer._render_bond_interfaces.<locals>.<listcomp>�s=������#�#�=�1�Z�?�?�	 ��'�@�?�?r)zBONDING_SLAVE_%szBONDING_SLAVE%sr�r��hotplugr��MASTER�SLAVE)r
�filter_by_type�filter_by_attrrXrU�extendr�r�rKr�rAr6rHr\r1)rrYrZr��bond_filter�slave_filterrr�master_cfgs�
master_cfgr\rD�bond_slavesr��
bond_slave�slavestr�	slave_cfgr�s                 @r'�_render_bond_interfacesz Renderer._render_bond_interfaces�sR����-�f�5�5���.�}�=�=��"�2�2�;�?�?�9	.�9	.�E��v��J�&�z�2�I��$�$�Y��v�>�>�>�%�+�K����y�1�2�2�2�)�
-�
-�
�/3�
�+�,��V�#�#�&,�J�O���y�y��'�'�
D��V�#�#�*/�)�)�M�*B�*B�I�h�'�'�+0�9�9�]�+C�+C�I�i�(�!�I�I�i��4�4�M�!�(�I�������/��	
�
�
�
�%�%��9�m�V�
�
�
�!�����'4�'D�'D�$�(�(������K�&/�{�%;�%;�

.�

.�!��z��V�#�#�1�E�9�H�H�0�5�8�H�&0�	�(�#�*�:�6�	��V�#�#�-3�I�k�*�-6�I�k�*�*�*4�I�h�'�)-�I�g�&�&�

.�Y9	.�9	.r)c	�r�tjd��}|�|��D�]}|d}||}|dkr=|�d��}|r||d<|d|�d���|d<ncd|d	<d|_|d
}	t
|	|d��}
||
vr0t�d||	d�	|
����|	|d
<|�dg��}|j
}|�|||j|��|�
||||����
dS)Nr�r�r�vlan_id�VLAN_ID�.�ETHERDEVICET�VLANzvlan-raw-devicezIName '%s' for vlan '%s' is not officially supportedby RHEL. Supported: %sr�PHYSDEVr5)r
rirXrK�rfindr��_supported_vlan_namesr2rr#r�rAr6rH)
rrYrZr��vlan_filterrr�rrv�rdev�	supportedr\rDs
             r'�_render_vlan_interfacesz Renderer._render_vlan_interfacess����-�f�5�5��"�2�2�;�?�?�"	�"	�E��v��J�&�z�2�I������)�)�I�.�.���3�+2�I�i�(�+5�6M�
�8H�8H��8M�8M�6M�+N�	�-�(�(�$(�	�&�!�!'�	���.�/��1�$��i�8H�I�I�	��Y�.�.��H�H�1�"������+�+����(,�	�)�$�!�I�I�i��4�4�M�!�(�I�������/��	
�
�
�
�%�%��9�m�V�
�
�
�
�A"	�"	r)c��tt|j��t|j��g��sdSt	jd��}|rEtj�|��r&t	jtj
|����}|jD]}|�|���|jD]}|�|���td��}t|��}|�|��s|dz|z}|S)Nr�;r )�anyr"r.�dns_searchdomainsr	�
ResolvConf�osr��isfiler�	load_file�add_nameserver�add_search_domainr(rar5)rY�existing_dns_path�content�
nameserver�searchdomain�header�content_strs       r'�_render_dnszRenderer._render_dns7s����M�1�2�2��M�3�4�4�
�
�
�	��4��(��,�,���	P�����0A�!B�!B�	P�!�,�T�^�<M�-N�-N�O�O�G�'�7�	/�	/�J��"�"�:�.�.�.�.�)�;�	4�	4�L��%�%�l�3�3�3�3��c�"�"���'�l�l���%�%�f�-�-�	6� �4�-�+�5�K��r)c�(�tjd��}|jr|�ddd��t	|��dkrdSd�t
��dd�|�����dg��}|S)Nr�main�dnsr�rr )r�NetworkManagerConfr.�set_section_keypairr"r#r(r[)rYr�r��outs    r'�_render_networkmanager_confz$Renderer._render_networkmanager_confNs���%�8��<�<��
�(�	?��'�'���v�>�>�>��w�<�<�1����4��g�g�|�~�~�t�T�Y�Y�w�}�}���-G�-G��N�O�O���
r)c���d�|j|���D��}tjd��}|�|��D�]�}|d}||}|dkrd|_|���D]\}	}
|	|vr||	||
<�|dkr$d|vr |�d��rd|d<nd|d<|�d��r"d	}|dkrd
}|�d��||<|dkrD|�dg��r.dd
�|�d����z|d<|�dg��D];}||}
|
g}|�|
j	��|D]}|}|dkrd}||d<��<|�dg��}|j
}|�|||j|��|�
||||�����dS)Nc�D�i|]\}}|�d���||��S)r�)r5)rc�old_k�new_ks   r'�
<dictcomp>z6Renderer._render_bridge_interfaces.<locals>.<dictcomp>_sB��
�
�
���u�����)�)�
��5�
�
�
r)r�r�rr��on�offr�ra�	LLADDRESS�bridge_portsz%sr�BRIDGE_PORTSr;rr5)r�itemsr
rirXr�rKr#rkr�r�rAr6rH)rrYrZr��bridge_key_map�
bridge_filterrr�rr
rrE�bridged_iface_name�bridged_cfg�bridged_cfgs�
bridge_cfg�bridge_valuer\rDs                   r'�_render_bridge_interfacesz"Renderer._render_bridge_interfaces]s���
�
� #� 0�� 8� >� >� @� @�
�
�
��
!�/��9�9�
�"�2�2�=�A�A�2	�2	�E��v��J�&�z�2�I�����!)�	��$2�$8�$8�$:�$:�
8�
8� ����e�#�#�).�w��I�g�&�������9�,�,� �}�}�\�2�2�8�26�	�,�/�/�27�	�,�/��y�y��'�'�
:����V�#�#�%�C�!&���=�!9�!9�	�#�������9�9�^�R�0�0��04�s�x�x��	�	�.�1�1�8�8�1�I�n�-�',�i�i���&C�&C�

8�

8�"�-�-?�@�� +�}���#�#�K�$8�9�9�9�".�8�8�J�#-�L���'�'�',��+7�J�x�(�(�	8�"�I�I�i��4�4�M�!�(�I�������/��	
�
�
�
�%�%��9�m�V�
�
�
�
�a2	�2	r)c�0�tjd��}|�|��D]k}|d}||}d|_|�dg��}|j}	|�|||j|��|�||	||���ldS)Nr�r�r5)	r
rirXr�rKr�rAr6rH)
rrYrZr��	ib_filterrr�rr\rDs
          r'�_render_ib_interfaceszRenderer._render_ib_interfaces�s����+�L�9�9�	�"�2�2�9�=�=�	�	�E��v��J�&�z�2�I�)�I�N�!�I�I�i��4�4�M�!�(�I�������/��	
�
�
�
�%�%��9�m�V�
�
�
�
�	�	r)c��|s|j}i}|���D]t}|ddkr�|d}t|||��}|dkr*|�d��|�d��|�|||��|||<�u|�|||��|�|||��|�|||��|�|||��|�	|||��i}	|�
��D]�\}}|s|jrD|���|	|j
<|jD] }|r|���|	|j
<�!|jrOt|jj|jjgddg��D]&\}
}|
|	vr|j�|��|	|
<�'��|	S)	z3Given state, return /etc/sysconfig files + contentsr��loopbackr�rr�r�r�r�)r�rXr�rPr
r]rtr�r�r�r�r�rdr�r��zipr�r�)rryrYr�r�rZrr�r�contents�cpathr�s            r'�_render_sysconfigzRenderer._render_sysconfig�s*��
�	&��
�I�57��"�2�2�4�4�
	3�
	3�E��V�}�
�*�*���v��J�$�Z�1A�9�M�M�I��������x�(�(�(����v�&�&�&��$�$�U�I�v�>�>�>�)2�N�:�&�&��'�'�
�~�v�N�N�N��#�#�M�>�6�J�J�J��#�#�M�>�6�J�J�J��%�%�m�^�V�L�L�L��!�!�-���H�H�H���%3�%9�%9�%;�%;�	L�	L�!�J�	��
I�I�.�
I�+4�+>�+>�+@�+@����(�!*�!3�I�I�I� �I�3<�3F�3F�3H�3H����0����
L�$'��%�/��1A�1K�L��V�$�%�%�L�L�L�E�5��H�,�,�*3�*:�*D�*D�U�*K�*K�������r)rY�returnc�x�|s|j}d}tj||j��}|�|||j|������D]\}}tj|||���|j	rItj||j	��}|�
||���}	|	rtj||	|��|jrHtj||j��}
|�||��}|rtj|
||��|j
rE|�|��}tj||j
��}
tj|
||��tj||�d����}|�d��r�tjt$j�|����t+��dg}|jr*|�d��|�d��tj|d	�|��d	z|��dSdS)
Ni�)r�)r�r�r,zNETWORKING=yeszNETWORKING_IPV6=yeszIPV6_AUTOCONF=nor )r�r�target_pathr�r�r�r�r�
write_filer�r�r�r�r��_render_persistent_netrKr6�
ensure_dirr�r��dirnamer(�use_ipv6rOr#)rBrYr��target�	file_moderyr��datar��resolv_contentr��nm_conf_content�netrules_contentr��sysconfig_path�netcfgs                r'�render_network_statezRenderer.render_network_state�s]���	'���I��	��+�F�D�4D�E�E���0�0��m�T�[�I�1�
�
�
�%�'�'�	3�	3�J�D�$�
�O�D�$�	�2�2�2�2��=�	E��'���
�>�>�H�!�-�-���.���N��
E����.�)�D�D�D��(�	J��+���5���L�#�>�>��y���O��
J����o�y�I�I�I���	H�#�:�:�=�I�I�� �,�V�T�5G�H�H�M��O�M�+;�Y�G�G�G��)�&�)�-�-�	�2J�2J�K�K���"�"�9�-�-�	��O�B�G�O�O�N�;�;�<�<�<�"�n�n�&6�7�F��%�
2��
�
�3�4�4�4��
�
�0�1�1�1��O���	�	�&� 1� 1�D� 8�)�
�
�
�
�
�
	�	r)r>)NN)rhrirjrkrrrNrMr��dict�__annotations__rC�classmethodr
rArHrUr]rtr��staticmethodr�r�r�r�r�rrr�r-r)r'r�r�1s}�������A�A���"��	
�
�'�V�<�<���N�0��%�!'�#��

�
�'�0�!2�#��
�
���L�*�E�	
�	
�	
���M�(�I�t����3�3�3�3�&�0�0��[�0�2�E6�E6��[�E6�N�;,�;,��[�;,�z�@�@��[�@�4����[��(�<.�<.��[�<.�|�$�$��[�$�L�����\��,�����\���:�:��[�:�x����[��$�@D�%�%�%��[�%�T%)��	-�-�#�-��D�>�-�

�-�-�-�-�-�-r)r�c�$�����fd�dD��S)ziReturn list of supported names for vlan devices per RHEL doc
    11.5. Naming Scheme for VLAN Interfaces.c�X��g|]&}|��t��������'S)�r�vid)�format�int)rc�vrr�s  ��r'rez)_supported_vlan_names.<locals>.<listcomp>s?������
�	
���d��C����)�)���r))z{rdev}{vid:04}z{rdev}{vid}z{rdev}.{vid:04}z{rdev}.{vid}r-r�s``r'r}r}s6���������
����r)c��tj��dtvrdSddg}ddg}|D]}tj|||���sdS�dd	g}|D]7}t
j�tj||����rd
S�8dS)N�variantF�ifup�ifdownz/sbinz	/usr/sbin)r4r�z/etc/sysconfig/network-scripts/network-functionszetc/sysconfig/configT)	r�system_info�
KNOWN_DISTROSr�whichr�r�r�r�)r��expectedr4�p�expected_pathss     r'�	availabler�s�������i�(�M�9�9��u���!�H��{�
#�F�
�����z�!�F�6�:�:�:�	��5�5�	�	:���N�����
�7�>�>�$�*�6�1�5�5�6�6�	��4�4�	��5r))rr>)$r~rYr�r3�typingrr�	cloudinitr�loggingrr�cloudinit.distros.parsersrr	�
cloudinit.netr
rrr
r�cloudinit.net.network_stater�	getLoggerrhr2r�r(r0r8r:rmr�r�r}r�r-r)r'�<module>r�s)������	�	�	�	�	�	�	�	�	�	�	�	�$�$�$�$�$�$�$�$�$�$�$�$�$�$� � � � � � � � �F�F�F�F�F�F�F�F���������������5�4�4�4�4�4��g���!�!��
�
�
�
� 
�
�
�
�E�E�E�
���3#�3#�3#�3#�3#�3#�3#�3#�lk�k�k�k�k�I�k�k�k�\G�G�G�G�G�9�G�G�G�TQ�Q�Q�Q�Q�x� �Q�Q�Q�h��������r)