HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //usr/share/netplan/netplan/cli/__pycache__/utils.cpython-310.pyc
o

|hEc$�@sddlZddlZddlZddlZddlZddlZddlZddlZddlm	Z
ddlmZddlm
Z
dZdZee
efZdd�Zdd	�Zd
d�Zdd
�Zdd�Zd*dd�Zd*dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd*d!d"�Zd#d$�Z d%e!fd&d'�Z"Gd(d)�d)ej#�Z$dS)+�N)�ConfigurationError)�LibNetplanExceptionzNetworkManager.servicez+snap.network-manager.networkmanager.servicecCstj�dd�S)N�NETPLAN_GENERATE_PATHz/lib/netplan/generate)�os�environ�get�rr�'/usr/share/netplan/netplan/cli/utils.py�get_generator_path&sr
cCstjdddtgtjd�dkS)N�	systemctl�--quietz
is-enabled)�stderrr)�
subprocess�call�NM_SNAP_SERVICE_NAME�DEVNULLrrrr	�is_nm_snap_enabled+srcCs,d}t�rd}tj|g|tjtjd�dS)N�nmcliznetwork-manager.nmcli��stdoutr
)rr�
check_callr)�args�binary_namerrr	r/src	Cs,ztdg�WdSttjfyYdSw)z"Check if NetworkManager is running�generalTF)r�OSErrorr�SubprocessErrorrrrr	�
nm_running8s
�rcCs�t�d�}t�}|D]3}t|d��$}|D]}|�|�}|r-|�tt�||�d����nqWd�n1s8wYq
|S)Nz^interface-name=(.*)$�r�)	�re�compile�set�open�match�update�fnmatch�filter�group)�paths�devices�pat�
interfaces�path�f�line�mrrr	�
nm_interfacesBs

����r0FcCs"t�r
t|tg|�St|tg|�S�N)rrr�NM_SERVICE_NAME)�action�syncrrr	�systemctl_network_managerPsr5cCs>t|�dkrd|g}|s|�d�|�|�t�|�dSdS)Nrrz
--no-block)�len�append�extendrr)r3�servicesr4�commandrrr	rXs

�rcCs^t�}tjgd�dd�}|��D]}|���d�}|d��r,|ddvr,|�|d�q|S)N)�
networkctlz
--no-pagerz--no-legendT)�universal_newlines� r���)�	unmanaged�linger)r!r�check_output�
splitlines�strip�split�	isnumeric�add)r+�outr.�srrr	�networkd_interfacesds�rIcCst�ddg�dS)Nr;�reload�rrrrrr	�networkctl_reloadnsrLcCs*t|�dkrt�ddgt|��dSdS)Nrr;�reconfigure)r6rr�list)r+rrr	�networkctl_reconfigurers�rOcCst�ddd|g�dkr
dSdS)z4Return True if at least one matching unit is runningrrz	is-activerTF)rr)�unit_patternrrr	�systemctl_is_activewsrQcCst�ddg�dS)zEReload systemd unit files from disk and re-calculate its dependenciesrz
daemon-reloadNrKrrrr	�systemctl_daemon_reload~srRcCs tjddd|gtjtjd�dS)z8Flush all IP addresses of a given interface via iproute2�ip�addr�flushrN)rrr)�ifacerrr	�
ip_addr_flush�s rWc
Cstj�d|�}|r\z6ttj�|d���#}|����}|dkr/t�d||�	Wd�WdSWd�n1s9wYWnty[}zt�	d|t
|��WYd}~dSd}~wwztj�tj�|dd��}tj�|�}W|Sty�}zt�d||t
|��WYd}~dSd}~ww)	Nz/sys/class/net�	operstate�downz'device %s operstate is %s, not changingz$Cannot determine operstate of %s: %s�device�driverz0Cannot replug %s: cannot read link %s/device: %s)
rr,�joinr"�readrC�logging�debug�IOError�error�str�realpath�basename)�	interface�	only_down�devdirr-�state�er[�driver_namerrr	�get_interface_driver_name�s4��������rkcCs&t�|��tjig�d}|�dd�S)NrrT�)�	netifaces�ifaddressesr�AF_LINK)re�linkrrr	�get_interface_macaddress�srqr+csRt�tj�sJ��js
J�tt�fdd�|��}t|�dkr%t�|�dS|dS)Ncs�j|t|�t|�d�S)N)�itf_name�
itf_driver�itf_mac)�match_interfacerkrq)�itf��netdefrr	�<lambda>�s
�z%find_matching_iface.<locals>.<lambda>rr)	�
isinstance�np�
NetDefinition�	has_matchrNr&r6r^�info)r+rx�matchesrrwr	�find_matching_iface�s
�
r�c@sFeZdZddd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dS)�NetplanCommandTFcCs�||_||_||_||_d|_d|_d|_d|_i|_d|_	d|_
tjdt
jd|f|dd�|_|jjdddd	�|jjd
dtjd	�|sb|jjddd
d�|_|jjdddd�}|j|jd�dSdS)NFz%s %srT)�prog�description�add_helpz--debug�
store_truezEnable debug messages)r3�helpz--breakpointzAvailable commandsrl�
subcommand)�title�metavar�destr�zShow this help message)r�r�)�func)�
command_idr��leaf_command�testing�_argsr_�
breakpoint�commandclass�subcommandsr�r��argparse�ArgumentParser�sys�argv�parser�add_argument�SUPPRESS�add_subparsers�
subparsers�
add_parser�set_defaults�print_usage)�selfr�r��leafr��p_helprrr	�__init__�s>�
�
����zNetplanCommand.__init__cCs
||_dSr1)r�)r�rrrr	r$�s
zNetplanCommand.updatecCsF|jj|j|d�\}|_|js|js!tdtjd�|��dSdSdS)N)r�	namespacezYou need to specify a command��file)	r��parse_known_argsr�r�r��printr�r
r�)r��nsrrr	�
parse_args�s
�zNetplanCommand.parse_argscCsD|jr
|j�|j�|jrd|jvr|��|jrt�|��dS)Nr�)r�r$r�r�r�r�r��r�rrr	�run_command�szNetplanCommand.run_commandcCs |jjtjd�t�tj�dS)Nr�)r��
print_helpr�r
�exitr�EX_USAGEr�rrr	r��szNetplanCommand.print_usagecCs�|�}i|j|<||j|d<||j|d<|jr"tj�dd�s"dS|jj|j|j|jdd�}|j	|j
|d�||j|d<dS)N�class�instance�ENABLE_TEST_COMMANDSF)r�r�r�)r�r�r�)r�r�rrrr�r�r�r�r��run)r��namer�r��prrr	�_add_subparser_from_class�s

�z(NetplanCommand._add_subparser_from_classcCs@ddl}|�|�D]\}}|�|�rt|t�r|�||�q	dS)Nr)�inspect�
getmembers�isclass�
issubclassr�r�)r��
submodulesr�r��objrrr	�_import_subcommands�s��z"NetplanCommand._import_subcommandsN)TF)
�__name__�
__module__�__qualname__r�r$r�r�r�r�r�rrrr	r��s
r�)F)%r�rr^r�rrmr%r�netplan.libnetplan�
libnetplanr{�netplan.configmanagerrrr2r�RuntimeError�
config_errorsr
rrrr0r5rrIrLrOrQrRrWrkrqrNr��	Namespacer�rrrr	�<module>s>