HOME


Mini Shell 1.0
DIR: /snap/core20/2571/usr/share/subiquity/subiquitycore/controllers/__pycache__/
Upload File :
Current File : //snap/core20/2571/usr/share/subiquity/subiquitycore/controllers/__pycache__/network.cpython-38.pyc
U

K��^�D�@s�ddlZddlZddlZddlZddlZddlmZmZddlm	Z	ddl
mZddlm
Z
ddlmZddlmZmZddlmZdd	lmZdd
lmZddlmZmZe�d�ZGd
d�de�ZdZGdd�de
�Z dS)�N)�IFF_UP�NetworkEventReceiver)�SingleInstanceTask)�with_context)�BaseController)�
write_file)�BondParameters�NetDevAction)�netplan��StretchyOverlay)�NetworkView)�arun_command�run_commandz subiquitycore.controller.networkcsLeZdZdd�Zdd�Zdd�Zdd�Z�fd	d
�Zdd�Zd
d�Z	�Z
S)�SubiquityNetworkEventReceivercCs$||_d|_g|_t�|_i|_dS�N)�model�view�default_route_watchers�set�default_routes�dhcp_events)�selfr�r�9/usr/share/subiquity/subiquitycore/controllers/network.py�__init__/s
z&SubiquityNetworkEventReceiver.__init__cCs0|j�||�}|jdk	r,|dk	r,|j�|�dSr)r�new_linkr)r�ifindex�link�netdevrrrr6sz&SubiquityNetworkEventReceiver.new_linkcCsD|j�|�}||jkr"|j�|�|jdk	r@|dk	r@|j�|�dSr)r�del_linkr�remover)rrrrrrr ;s

z&SubiquityNetworkEventReceiver.del_linkcCs�|j�|�}|dkrdSt|jdd�}|t@sZ||jkrZ|j�|�|jD]}||j�qJ|j�	�D]\}}|�
�|rd|��qd|jdk	r�|j�|�dS)N�flagsr)
r�update_link�getattr�inforrr!rr�items�dhcp_addressesrr)rrrr"�watcher�v�errrr#Bs


z)SubiquityNetworkEventReceiver.update_linkcs�t��||�|ddkrdS|ddkr.dS|d}|dksF|dkrT|j�|�n|dkrr||jkrr|j�|�|jD]}||j�qxt�d	|j�dS)
NZdst�default�table�rZNEWZCHANGEZDELzdefault routes %s)�super�route_changer�addr!r�log�debug)r�action�datarr(��	__class__rrr/Rs
z*SubiquityNetworkEventReceiver.route_changecCs|j�|�||j�dSr)r�appendr�rr(rrr�add_default_route_watcherasz7SubiquityNetworkEventReceiver.add_default_route_watchercCs||jkr|j�|�dSr)rr!r8rrr�remove_default_route_watcheres
z:SubiquityNetworkEventReceiver.remove_default_route_watcher)�__name__�
__module__�__qualname__rrr r#r/r9r:�
__classcell__rrr5rr.sra�
network:
  version: 2
  ethernets:
    "all-en":
       match:
         name: "en*"
       addresses:
         - 10.0.2.15/24
       gateway4: 10.0.2.2
       nameservers:
         addresses:
           - 8.8.8.8
           - 8.4.8.4
         search:
           - foo
           - bar
    "all-eth":
       match:
         name: "eth*"
       dhcp4: true
  wifis:
    "wlsp4":
       dhcp4: true
       access-points:
         "some-ap":
            password: password
cs�eZdZdZdZ�fdd�Zdd�Zdd�Zd	d
�Zdd�Z	d
d�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zed#d$��Zd9d'd(�Zd)d*�Zd+d,�Zd-d.�Zed/d0d1d2�d3d4��Zd5d6�Zd7d8�Z�ZS):�NetworkControllerZnetwork�/c	s�t��|�d|_d|_t|j�|_|jjr�t	j
�d�|_|j
}t	j
�|�}t	j
�|�rjddl}|�|�t	�|�t|d��}|�t�W5QRX|��d|_t|j�|_|j�|j�dS)NFz
.subiquityr�w)r.rr�
view_shownr�
_apply_config�apply_config_task�opts�dry_run�os�path�abspath�root�netplan_path�dirname�exists�shutilZrmtree�makedirs�open�write�default_netplan�parse_netplan_configs�	_watchingrr�network_event_receiverr9�
route_watcher)r�apprKZnetplan_dirrN�fpr5rrr�s(

�zNetworkController.__init__cCs|j�|j�dSr)rrSrJ�rrrrrS�sz'NetworkController.parse_netplan_configscCs|r|j�d�dS)Nznetwork-change)�signalZemit_signal)rZroutesrrrrV�szNetworkController.route_watchercCs*g|_|jj�|j�\|_|_|��dSr)Z_observer_handlesrWZproberZ
probe_networkrU�observer�
_observer_fds�start_watchingrYrrr�start�s�
zNetworkController.startcCs2|js
dSt��}|jD]}|�|�qd|_dS)NF)rT�asyncio�get_event_loopr\Z
remove_reader�r�loop�fdrrr�
stop_watching�s
zNetworkController.stop_watchingcCs8|jr
dSt��}|jD]}|�||j|�qd|_dS)NT)rTr_r`r\Z
add_reader�_data_readyrarrrr]�s
z NetworkController.start_watchingcCs�tddddg�}|jdkrFt�d�|��t��}|�d|j�dS|j	�
|�|jj}t
t|dd�t�r�t|jjd	�r�|jj��dS)
NZudevadmZsettlez-t�0rz*waiting 0.1 to let udev event queue settleg�������?�_w�refresh_model_inputs)r�
returncoder1r2rdr_r`Z
call_laterr]r[Z
data_ready�ui�body�
isinstancer$r�hasattrrg�stretchyrh)rrc�cprbr)rrrre�s

zNetworkController._data_readycCs|j�|j�dSr)r[Ztrigger_scanr)r�devrrr�
start_scan�szNetworkController.start_scancCs(t�d�t|jj�|j_|j��dS)Nz"NetworkController.done next_screen)	r1r2�boolrUrrZhas_networkrWZnext_screenrYrrr�done�s

�zNetworkController.donecCs|j��dSr)rWZprev_screenrYrrr�cancel�szNetworkController.cancelcCs�|d��}d}|ddkr\|ddkr@|j��t|d�}n|ddkr\|j�|d�}|dkrrtd�|���t|�dkr�|d��\}}|dkr�|��t|�Sn|Std�|���dS)	NrZ	interface��index��namezcould not resolve {}�part)	�splitr�get_all_netdevs�intZget_netdev_by_name�	Exception�format�lenZ
partitions)r�idZdev_specrpryrvrrr�_action_get�szNetworkController._action_getcs�fdd�|D�S)Ncsg|]}��|��qSr)r�)�.0�devicerYrr�
<listcomp>�sz;NetworkController._action_clean_devices.<locals>.<listcomp>r)r�devicesrrYr�_action_clean_devices�sz'NetworkController._action_clean_devicesc	csxddlm}t�d|�d|kr�|�|d�}t|jjd�|d��}tt	|d�}|jj�
d||f|�dV|jjj}t||�s�dS|�
�D]f\}}|�d�s�q�d}	d	}
d
|kr�|�d
�d}|d}	|d}
|�t|j|	�||�|
d
��EdHq�nz|ddk�rJ|jj��dV|jjj}|�|jj|d|�d	d
��EdHn*|ddk�rf|jj��ntd�|���dS)Nrrz_answers_action %r�objz
_action_{}r3r4�formZsubmit�-Z_formz-submitTzcreate-bondrszcould not process action {})�subiquitycore.ui.stretchyrr1r2r�r$rjrkr~r	Z_actionrgrlr&�endswithrzZ_enter_form_datarn�getZ_create_bondr�rsr})rr3rr��methZ
action_objrk�kr)Z	form_nameZ
submit_key�prefixrrr�_answers_action�sP�




�

�z!NetworkController._answers_actioncCs�t�d�|j��D]n}d}|jdks|js.q|jj��D]}|jdkr:d}qRq:|s|�	d�|�	d�t�d|j
�td�|_qdS)	Nzupdating initial NIC configF�globalT��zdisabling %szautoconfiguration failed)
r1r2rr{r%�configZ	addresses�valuesZscopeZremove_ip_networks_for_versionrx�_Zdisabled_reason)rrpZhas_global_address�arrr�update_initial_configss



z(NetworkController.update_initial_configscCsP|js|��t|j|�|_|js4|jdd�d|_|j|j_|j�|j�dS)NT)�silent)	rBr�r
rr�apply_configrUrjZset_bodyrYrrr�start_ui*s
zNetworkController.start_uicCsd|_|j_dSr)rrUrYrrr�end_ui4szNetworkController.end_uicCs(|jjdkrd}nd}tj�|jd|�S)NZ	subiquityz00-installer-config.yamlz00-snapd-config.yamlzetc/netplan)rE�projectrGrH�joinrJ)rZnetplan_config_file_namerrrrK7szNetworkController.netplan_pathNFcCs|jj||d�dS)N)�contextr�)rDZ
start_sync)rr�r�rrrr�?szNetworkController.apply_configc	�sV|D]L}z$t�d|j�|jj�|jt�Wqtk
rNt�	d|j�YqXqdS)Nz
downing %szunset_link_flags failed for %s)
r1r2rxr[Z
rtlistenerZunset_link_flagsrr�RuntimeErrorZ	exception)r�devsrprrr�
_down_devsBszNetworkController._down_devsc�sz|D]p}t�d|j�dddd|jg}zt|dd�IdHWqtjk
rr}zt�d|j|j�W5d}~XYqXqdS)	Nzdeleting %sZipr�deleterpT�Zcheckzdeleting %s failed with %r)r1r2rxr�
subprocess�CalledProcessErrorr%�stderr)rr�rp�cmdrorrr�_delete_devsKszNetworkController._delete_devscCs�|j��}t�dtjt�|�dd��tj|j	dd�D](}||j
krFq6t�||d|j
j�q6t|j
|j�|�dd�|��dS)	Nznetwork config: 
%sF)Zdefault_flow_styleT)Zmaskedz.dist-rA)Zomode)rZ
render_configr1r2�yaml�dumpr
Zsanitize_configZconfigs_in_rootrJrKrG�renamerEr�rZstringify_configrS)rr��prrr�
_write_configUs"
��

�zNetworkController._write_configr�zsilent={silent}�INFO)rxZdescription�levelc
�sfg}g}g}t�}�jjdd�D]�}i|_dD]V}|�|�r.�s\|�|d��j�|j�n|�|d�t	�
�|j|<}	|�|	�q.|jdkr�q |j
�jj
�|j�kr |jr�|�|�q |�|�q ����s�jr�j���z���fdd�}
�jj�rNd�jj}td	t|�g�IdHtj�d
��rntddd
�jgdd�IdH�n |�sZ|�r�z:tdddddgdd�IdHtddddgdd�IdHWn"tj k
�r�|
d��YnX|�rΈ�!|�IdH|�r��"|�IdH|�s�|�rtdddddgdd�IdHztddgdd�IdHWn"tj k
�rH|
d��YnX|�sV|�rntdddgdd�IdHW5��s��j�r��j��X�j#�$dd��r���%�n4�j#�$dd��rڈj#d}�j#�&���'��(|��|�s�dSz&t	�)t	�*dd�|D��d�IdHWnt	j+k
�r"YnX|D]8\}}i|_|�,�|�s(|�|d��j�|j��q(dS) NT)Zinclude_deleted)r�r�ZPENDINGZRECONFIGUREcs�s�jr�j�|�dSr)rZshow_network_error)Zstage�rr�rr�error�s
z.NetworkController._apply_config.<locals>.errorru�sleepz/lib/netplan/generater
Zgeneratez--rootr�Z	systemctl�maskz	--runtimezsystemd-networkd.servicezsystemd-networkd.socket�stopz
stop-networkdZunmaskZapplyr^Fzaccept-default�actionscSsh|]}|���qSr)�wait)r�r*rrr�	<setcomp>�sz2NetworkController._apply_config.<locals>.<setcomp>�
ZTIMEDOUT)-rrr{rZdhcp_enabledZset_dhcp_staterUr#rr_ZEventr0r%r�Zconfig_for_deviceZ
is_virtualr7r�rZshow_apply_spinnerZhide_apply_spinnerrErFrWZscale_factorr�strrGrHrMrJr�r�r�r�Zanswersr�rs�clearZ
_run_iteratorZ_run_actionsZwait_forr��TimeoutErrorr')
rr�r�Zdevs_to_deleteZdevs_to_downZdhcp_device_versionsrrpr)r*r�Zdelayr�rr�rrCis�
�



��������


�zNetworkController._apply_configcCs|j�||�Sr)rZnew_vlan)rr�Zvlanrrr�add_vlan�szNetworkController.add_vlancCs�|d}d|i}|tjkr&|d|d<|tjkr<|d|d<|dD]
}i|_qDdd�|dD�}|dkr~|j�|d	||�S||jd
<||jd<|d	|_|SdS)N�modeZxmit_hash_policyztransmit-hash-policyZ	lacp_ratez	lacp-rater�cSsg|]
}|j�qSr)rx)r��drrrr��sz8NetworkController.add_or_update_bond.<locals>.<listcomp>rx�
interfacesZ
parameters)rZsupports_xmit_hash_policyZsupports_lacp_rater�rZnew_bondrx)r�existing�resultr�Zparamsr�r�rrr�add_or_update_bond�s"�




z$NetworkController.add_or_update_bond)NF) r;r<r=Z
model_namerJrrSrVr^rdr]rerqrsrtr�r�r�r�r�r��propertyrKr�r�r�r�rrCr�r�r>rrr5rr?�s@(


	
�
lr?)!r_ZloggingrGr�r�Zprobert.networkrrZsubiquitycore.async_helpersrZsubiquitycore.contextrZsubiquitycore.controllerrZsubiquitycore.file_utilrZsubiquitycore.models.networkrr	Z
subiquitycorer
r�rZsubiquitycore.ui.views.networkr
Zsubiquitycore.utilsrrZ	getLoggerr1rrRr?rrrr�<module>s$
<