HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/share/netplan/netplan/cli/commands/__pycache__/apply.cpython-38.pyc
U

��~fN�@s�dZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
mZddlm
Z
mZddlmZddlmZdZGdd�dej�ZdS)	znetplan apply command line�N)�
ConfigManager�ConfigurationError)�apply_sriov_config)�apply_ovs_cleanupznetplan-ovs-cleanup.servicecsreZdZ�fdd�Zdd�Zddd	�Zed
d��Zegfdd
��Zedd��Z	eddd��Z
eddd��Z�ZS)�NetplanApplycs(t�jdddd�d|_d|_d|_dS)NZapplyz.Apply current netplan config to running systemT)�
command_id�description�leafF)�super�__init__�
sriov_only�only_ovs_cleanup�state��self��	__class__��0/usr/share/netplan/netplan/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�run2s
�
��zNetplanApply.runTFNc&Cst�}|r||_|jr&t�||�dS|jr@t�|dd|�dSdtjkr�t	�
d�}|dkrdtd��t�
|ddddd	dd
g�}|dkr�|r�t�|�q�|dkr�td
��q�td|��ndSd}tt�d��}	t�d�}
||
kr�|
�|�t|
�}t�d�}t�|t���}
t|�}g}d}dtjk�r:|�ddg�tj}|�t���|�r~tj
||d�dk�r~|�rvt�tj�ntd��t��}tt�d��}|�s�|	�r�d}t�d�}||k�r�|�|�t|�}|�s�|�r�d}t�d�}|
�t�||��t|�}|�s|�rd}|�rlt� d�|�r,t�!�t�||||�dg}t�"d��rZ|�#dd�tj$d||d�n
t� d�|�r�t� d�t�%��r�|D]B}||
k�r��q�zt�&d d!|g�Wntj'k
�r�YnX�q�tj(d|d�n
t� d"�t��}|�)�t�*||�}|j�rJt|j�}|�)�|j+�,�}|j+�,�}t�-|||�t��}|D]z}t� d#|�zBtj.d$d%d&d'|gtj/tj/d(�tj.d$d)d'|gtj/tj/d(�Wn$tj'k
�r�t� d*|�YnX�qVt��}|�0�D]�\}}|�1d+�} | �r�||k�r$| |k�r$t� d,�2|| ���q�tj.d-d.d/d0|d1gtj/tj/d(�tj.d-d.d/d0|d+|�1d+�gtj/tj/d(��q�t�.d$d2g�t�||�|�rhd3d4�t�d5�D�}!d6d4�t�d7�D�}"zTt�3�t4d8�D]0}#t5�6d9�tj7d:gdd;�}$d<|$k�r��q��q�t�8t�9��Wn4tj'k
�r@t�:d=�tj$d>d?gdd�YnXtj$d@t;gdd�tj$d@|!|"dd�|�rt�||�D]}t�<|��qztj(d@|d�|�rdAdBdCg}%t4d8�D]P}#tj=|%dddD�}$|$j>dEk�r�t5�6dF��q�dGt?|$j@�k�r��qt5�6d9��q�dS)HNFZSNAP�busctlzmissing busctl utility�callz--quietz--systemzio.netplan.Netplanz/io/netplan/NetplanZApplyr�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-*ZNETPLAN_PROFILEZvalgrindz--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 existsz9netplan generated NM configuration changed, restarting NM�deviceZ
disconnectz,no netplan generated NM configuration existsz%netplan triggering .link rules for %sZudevadmztest-builtinZnet_setup_linkz/sys/class/net/)�stdoutr"Ztestz#Ignoring device without syspath: %s�namez+Interface rename {} -> {} already happened.�ip�link�set�dev�downZsettlecSsg|]}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_SERVICEr-r.r/r0rrrr3s�z1/run/systemd/system/*.wants/netplan-ovs-*.service�
g�?�
networkctl)�universal_newlinesZconfiguringz:Falling back to a hard restart of systemd-networkd.serviceZrestartzsystemd-networkd.service�start�nmcli�general�status)�capture_outputr9��z

connected)Arrrr�process_sriov_configr
�process_ovs_cleanupr-�environ�shutil�which�RuntimeError�
subprocessr �sys�exit�PermissionError�bool�glob�remove�utils�
nm_interfaces�	netifaces�
interfaces�extend�STDOUT�append�get_generator_path�	EX_CONFIGr�update�logging�debug�systemctl_daemon_reload�systemctl_is_active�insert�	systemctl�
nm_runningr;�CalledProcessError�systemctl_network_manager�parse�process_link_changesZvirtual_interfaces�keys�clear_virtual_links�
check_call�DEVNULL�items�get�format�networkctl_reload�range�time�sleep�check_output�networkctl_reconfigure�networkd_interfaces�warningr6�
ip_addr_flushr�
returncode�strr&)&rZrun_generater$�
exit_on_errorZ	state_dir�config_managerr�resZovs_cleanup_serviceZold_files_networkdZold_ovs_globZ
old_files_ovsZold_nm_globZ	nm_ifacesZold_files_nmZgenerator_callZgenerate_out�devicesZrestart_networkdZrestart_ovs_globZrestart_ovsZrestart_nm_globZ
restart_nmZwpa_servicesr%�changes�cm�
prev_links�
curr_linksZdevices_after_udev�iface�settings�new_nameZnetplan_wpaZnetplan_ovs�_�out�cmdrrrr?sL

���
















����

�
��






zNetplanApply.command_applycCsV|D]L}|��D]>\}}t|�tk	r&q|�dg�}|D]}||kr6dSq6qqdS)zp
        Is this physical interface a member of a 'composite' virtual
        interface? (bond, bridge)
        rQTF)rg�type�dictrh)Z
composites�phyZ	compositer�r~�membersr}rrr�is_composite_member/sz NetplanApply.is_composite_memberc	Cs�|st�d�gStt|�t|��}tt|��|��}|D]H}zdddd|g}t�|�Wq<tjk
r�t�d�	|��Yq<Xq<|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.r(r)�deleter+zCould not delete interface {})
rXrq�listr*�intersectionrGrer_�warnri)r{r|rxZdropped_interfacesZinterfaces_to_clearr)r�rrrrd@s	
z NetplanApply.clear_virtual_linksc
Cs�i}t|j�}|j|jg}|��D]�\}}|r"t|t�s:q"|�d�}|sJq"|�d�}|sZq"t�||�rxt	�
d�|��q"t�
||�}	|	s�t	�d�||��q"|	|kr�t	�
d�|��q"|�dd�r�t	�d�||	|��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.
        zset-name�matchzSkipping composite member {}z0Cannot find unique matching interface for {}: {}z&Skipping correctly named interface: {}�criticalFzLCannot rename {} ({} -> {}) at runtime (needs reboot), due to being criticalr'zLink changes: {})r�Zphysical_interfacesZbridgesZbondsrg�
isinstancerhrr�rXrYrirN�find_matching_ifacerq)
rQrvryZphysZcomposite_interfacesr�r~Znewnamer�Zcurrent_iface_namerrrrbZs@


�z!NetplanApply.process_link_changesc
CsTzt|�WnBttfk
rN}z t�t|��|r>t�d�W5d}~XYnXdS�Nr@)rrrFrX�errorrtrHrI)rvru�errrrA�sz!NetplanApply.process_sriov_configc
CsXzt|||�WnBttfk
rR}z t�t|��|rBt�d�W5d}~XYnXdSr�)r�OSErrorrFrXr�rtrHrI)rvZovs_oldZovs_currentrur�rrrrB�sz NetplanApply.process_ovs_cleanup)TFTN)T)T)
�__name__�
__module__�__qualname__rrr�staticmethodr�rdrbrArB�
__classcell__rrrrr(s
q

/r)�__doc__rXr-rHrLrGrDrPrl�netplan.cli.utils�clirNZnetplan.configmanagerrrZnetplan.cli.sriovrZnetplan.cli.ovsrr6�NetplanCommandrrrrr�<module>s