HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //usr/share/netplan/netplan_cli/cli/commands/__pycache__/apply.cpython-310.pyc
o

t��foT�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddlmZm
Z
ddlmZddlmZmZmZd	Zd
ZGdd�de
j�ZdS)
znetplan apply command line�N�)�utils�)�
ConfigManager�ConfigurationError)�apply_sriov_config)�OvsDbServerNotRunning�OvsDbServerNotInstalled�apply_ovs_cleanupznetplan-ovs-cleanup.service�csxeZdZ�fdd�Zdd�Zddd	�Zed
d��Zegfdd
��Zede	fdd��Z
eddd��Zeddd��Z�Z
S)�NetplanApplycs(t�jdddd�d|_d|_d|_dS)N�applyz.Apply current netplan config to running systemT)�
command_id�description�leafF)�super�__init__�
sriov_only�only_ovs_cleanup�state��self��	__class__��4/usr/share/netplan/netplan_cli/cli/commands/apply.pyr,s�
zNetplanApply.__init__cCsP|jjdddd�|jjdddd�|jjddd	�|j|_|��|��dS)
Nz--sriov-only�
store_truez0Only apply SR-IOV related configuration and exit)�action�helpz--only-ovs-cleanupz1Only clean up old OpenVSwitch interfaces and exitz--statez0Directory containing previous YAML configuration)r)�parser�add_argument�
command_apply�func�
parse_args�run_commandrrrr�run4s
�
��zNetplanApply.runTFNc(CsVt�}|r||_|jrt�||�dS|jr t�|dd|�dSdtjvr[t	�
d�}|dur2td��t�
|ddddd	dd
g�}|dkrY|rKt�|�n|dkrStd
��td|��dSd}tt�d��}	t�d�}
||
vrr|
�|�t|
�}t�d�}t�|t���}
t|�}g}d}dtjvr�|�ddg�tj}|�t���|r�tj
||d�dkr�|r�t�tj�ntd��t��}tt�d��}|s�|	r�d}t�d�}||vr�|�|�t|�}|s�|r�d}t�d�}|
�t�||��t|�}|s�|r�d}|�rt��|�r)t �!d�t�||||�dg}t�"d��r |�#dd�tj$d||d�nt �!d�d}|�rrt �!d �t�%��rqd!|
v�rGt�&d!�}|D] }||
v�rR�qIzt�'d"d#|g�W�qItj(�yiY�qIwtj)d|d�nt �!d$�t��}|�*�t�+||�}|j�r�t|j�}|�*�|j,�-�}|j,�-�}t�.|||�t��}|D]<}t �!d%|�z"tj/d&d'd(d)|gtj0tj0d*�tj/d&d+d)|gtj0tj0d*�W�q�tj(�y�t �!d,|�Y�q�wt��}|�1�D]X\}} | �2d-�}!|!�rEt3|!�t4k�rt �5d.�6|!|���q�||v�r!|!|v�r!t �!d/�6||!���q�tj/d0d1d2d3|d4gtj0tj0d*�tj/d0d1d2d3|d-| �2d-�gtj0tj0d*��q�t�/gd5��t�/d&d6g�t�||�tj7�8d7��rit�$d8d9g�|�r�d:d;�t�d<�D�}"d=d;�t�d>�D�}#z
t�9�t�:t�;��Wntj(�y�t �5d?�tj$d@dAgdd�Ynwtj$d8t<gdd�tj$d8|"|#dd�|�r%t�||�}$|$D]}t�=|��q�t	j>dBddC�tj)d8|d�d!|$v�r�d}|�rgdD�}%t?dE�D]'}&tj@|%dddF�}'|'jAdGk�rtB�CdH��q�dItD|'jE�v�rntB�CdJ��q�d!|$v�r'|�r)t�F|�dSdSdSdS)KNF�SNAP�busctlzmissing busctl utility�callz--quietz--systemzio.netplan.Netplanz/io/netplan/Netplan�Applyr�z'failed to communicate with dbus servicez1failed to communicate with dbus service: error %sz//run/systemd/system/netplan-ovs-cleanup.servicez/run/systemd/network/*netplan-*z!/run/systemd/system/netplan-ovs-*z0/run/NetworkManager/system-connections/netplan-*�NETPLAN_PROFILE�valgrindz--leak-check=full)�stderrz(the configuration could not be generatedTzDnetplan generated networkd configuration changed, reloading networkdznetplan-wpa-*.serviceznetplan-wpa@*.service�stop)�syncz2no netplan generated networkd configuration exists�z9netplan generated NM configuration changed, restarting NM�lo�device�
disconnectz,no netplan generated NM configuration existsz%netplan triggering .link rules for %s�udevadmztest-builtin�net_setup_linkz/sys/class/net/)�stdoutr-�testz#Ignoring device without syspath: %s�namez5Interface name {} is too long. {} will not be renamedz+Interface rename {} -> {} already happened.�ip�link�set�dev�down)r4�triggerz--attr-match=subsystem=net�settlez*/run/systemd/system/netplan-regdom.service�startznetplan-regdom.servicecSsg|]}tj�|��qSr)�os�path�basename��.0�frrr�
<listcomp>sz.NetplanApply.command_apply.<locals>.<listcomp>z1/run/systemd/system/*.wants/netplan-wpa-*.servicecSs&g|]}|�dt�stj�|��qS)�/)�endswith�OVS_CLEANUP_SERVICErArBrCrDrrrrGs�z1/run/systemd/system/*.wants/netplan-ovs-*.servicez:Falling back to a hard restart of systemd-networkd.service�restartzsystemd-networkd.servicez/run/NetworkManager/devices)�
ignore_errors)�nmcli�general�status�
)�capture_output�text��z

connectedg�?)Grrrr�process_sriov_configr�process_ovs_cleanuprA�environ�shutil�which�RuntimeError�
subprocessr(�sys�exit�PermissionError�bool�glob�remover�
nm_interfaces�	netifaces�
interfaces�extend�STDOUT�append�get_generator_path�	EX_CONFIGr�update�systemctl_daemon_reload�logging�debug�systemctl_is_active�insert�	systemctl�
nm_running�nm_get_connection_for_interfacerM�CalledProcessError�systemctl_network_manager�parse�process_link_changes�virtual_interfaces�keys�clear_virtual_links�
check_call�DEVNULL�items�get�len�IF_NAMESIZE�warning�formatrB�exists�networkctl_reload�networkctl_reconfigure�networkd_interfacesrJ�
ip_addr_flush�rmtree�ranger%�
returncode�time�sleep�strr6�nm_bring_interface_up)(r�run_generater/�
exit_on_error�	state_dir�config_managerr'�res�ovs_cleanup_service�old_files_networkd�old_ovs_glob�
old_files_ovs�old_nm_glob�	nm_ifaces�old_files_nm�generator_call�generate_out�devices�restart_networkd�restart_ovs_glob�restart_ovs�restart_nm_glob�
restart_nm�wpa_services�loopback_connectionr2�changes�cm�
prev_links�
curr_links�devices_after_udev�iface�settings�new_name�netplan_wpa�netplan_ovsrb�cmd�_�outrrrr!Asj

���













��



�����
�

���
�

�&zNetplanApply.command_applycCsV|D]&}|��D]\}}t|�turq|�dg�}|D]}||kr&dSqqqdS)zp
        Is this physical interface a member of a 'composite' virtual
        interface? (bond, bridge)
        rdTF)r|�type�dictr})�
composites�phy�	compositer�r��membersr�rrr�is_composite_memberJs
���z NetplanApply.is_composite_memberc	Cs�|s	t�d�gStt|�t|��}tt|��|��}|D]"}zdddd|g}t�|�Wqtjy@t�d�|��Yqw|S)a%
        Calculate the delta of virtual links. And remove the links that were
        dropped from the YAML config, if they were not dropped by the backend
        already.
        We can make use of the netplan netdef ids, as those equal the interface
        name for virtual links.
        z;Cannot clear virtual links: no network interfaces provided.r9r:�deleter<zCould not delete interface {})	rlr��listr;�intersectionr[rzrsr�)r�r�r��dropped_interfaces�interfaces_to_clearr:r�rrrry[s	
�z NetplanApply.clear_virtual_linksr�cCs�i}|j|jg}|j��D]Q}|j}|sq
|jsq
t�||j�r*t	�
d�|j��q
t�
||�}|s<t	�d�|j��q
||krIt	�
d�|��q
|jrXt	�d�|j||��q
d|i||<q
t	�
d�|��|S)z�
        Go through the pending changes and pick what needs special handling.
        Only applies to non-critical interfaces which can be safely updated.
        zSkipping composite member {}z,Cannot find unique matching interface for {}z&Skipping correctly named interface: {}zLCannot rename {} ({} -> {}) at runtime (needs reboot), due to being criticalr8zLink changes: {})�bridges�bonds�physical_interfaces�values�set_name�
_has_matchrr��idrlrmr�r�find_matching_ifacer��critical)rdr�r��composite_interfaces�netdef�newname�current_iface_namerrrrvus4�z!NetplanApply.process_link_changesc
Csbzt|�WdStjy0}zt�t|��|r%t�d�WYd}~dSWYd}~dSd}~ww)NrT)rr�
config_errorsrl�errorr�r\r])r�r��errrrU�s���z!NetplanApply.process_sriov_configc
Cs�z	t|||�WdSttfy3}zt�t|��|r(t�d�WYd}~dSWYd}~dSd}~wtyM}zt�	d�
|��WYd}~dSd}~wtye}z
t�d|�WYd}~dSd}~ww)NrTzCannot call Open vSwitch: {}.zCannot call Open vSwitch: %s.)
r
�OSErrorrZrlr�r�r\r]rr�r�r	rm)r��ovs_old�ovs_currentr�r�rrrrV�s�����z NetplanApply.process_ovs_cleanup)TFTN)T)�__name__�
__module__�__qualname__rr%r!�staticmethodr�ryrrvrUrV�
__classcell__rrrrr*s 


+r)�__doc__rlrAr\r`r[rXrcr�r0r�
configmanagerrr�sriovr�ovsrr	r
rJr�NetplanCommandrrrrr�<module>s