| Current Path : /usr/share/netplan/netplan/cli/commands/__pycache__/ |
| Current File : //usr/share/netplan/netplan/cli/commands/__pycache__/try_command.cpython-38.pyc |
U
�]a � @ s� d Z ddlZddlZddlZddlZddlZddlZddlZddlm Z ddl
m mZ ddl
mZ ddlZdZG dd� dej�ZdS )znetplan try command line� N)�
ConfigManager)�NetplanApply�x c sh e Zd Z� fdd�Zedd� �Zdd� Zdd� Zd d
� Zdd� Z d
d� Z
dd� Zdd� Zdd� Z
� ZS )�
NetplanTryc s4 t � jdddd� d| _d | _d | _d | _d | _d S )N�tryzLTry to apply a new netplan config to running system, with automatic rollbackT)�
command_id�description�leafF)�super�__init__�configuration_changed�new_interfaces�_config_manager�
t_settings�t��self�� __class__� �6/usr/share/netplan/netplan/cli/commands/try_command.pyr ( s �zNetplanTry.__init__c C s | j st� | _ | j S �N)r r r r r r �config_manager3 s zNetplanTry.config_managerc C sP | j jddd� | j jdttdd� | j jddd� | j| _| �� | �� d S ) Nz
--config-filezGApply the config file in argument in addition to current configuration.)�helpz --timeoutz=Maximum number of seconds to wait for the user's confirmation)�type�defaultr z--statez0Directory containing previous YAML configuration)�parser�add_argument�int�DEFAULT_INPUT_TIMEOUT�command_try�func�
parse_args�run_commandr r r r �run9 s � ��zNetplanTry.runc
C sF | � � st�tj� �z
z�tj �
� }tj�
|�| _| j�| j� t�tj| j� t�tj| j� | �� | �� t� jddd| jd� | jj| jd� W n� tjjk
r� td� | �� Y n^ tjjk
r� td� Y n@ tk
�r } z td| � td� | �� W 5 d }~X Y nX W 5 | j�r8| j�| j� | �� X d S )NTF��run_generate�sync�
exit_on_error� state_dir)�timeoutz
Reverting.z
Configuration accepted.z
An error occurred: %s)�
is_revertable�sys�exit�os� EX_CONFIGr �resetr �cleanup�stdin�fileno�netplan�terminalZTerminalZsave�signal�SIGINT�_signal_handler�SIGUSR1�backup�setupr �
command_apply�stateZget_confirmation_inputr* �
InputRejected�print�revert�
InputAccepted� Exception)r �fd�er r r r G s0
zNetplanTry.command_tryc C s d}| j rd}| jj|d� d S )NFT)�backup_config_dir)�config_filer r: )r rE r r r r: h s zNetplanTry.backupc C sd | j rZtj�ddd�}tj�| j ��d�}t�� }tj�|d�||��}| j� | j |i� d| _
d S )N�/�etcr4 z.yamlz
{}.{}.yamlT)rF r. �path�join�basename�rstrip�time�formatr �addr )r Zdest_dirZ dest_nameZdest_suffixZ dest_pathr r r r; n s zNetplanTry.setupc C s^ t �� }tj�|dd�}t�|� tjd|dd� | j� � t
� jddd|d� t�|� d S )NrH r4 z/etc/netplanT)�
dirs_exist_okFr% )
�tempfile�mkdtempr. rI rJ �makedirs�shutil�copytreer r@ r r<