Ë
    *CàeV  ã                   óª   — d Z ddlZddlZddlZddlZddlmZ ddlmZ dddœd	d
dœdœZ G d„ dej                  «      Z
 G d„ dej                  «      Zy)znetplan ip command lineé    N)ÚCalledProcessErroré   )Úutilsz#run/systemd/netif/leases/{lease_id}Úifindex)ÚpatternÚmethodz<var/lib/NetworkManager/internal-{lease_id}-{interface}.leaseÚnm_connection)ÚnetworkdÚNetworkManagerc                   ó$   ‡ — e Zd Zˆ fd„Zd„ Zˆ xZS )Ú	NetplanIpc                 ó*   •— t         ‰| �  ddd¬«       y )NÚipz'Retrieve IP information from the systemF©Ú
command_idÚdescriptionÚleaf©ÚsuperÚ__init__©ÚselfÚ	__class__s    €ú1/usr/share/netplan/netplan_cli/cli/commands/ip.pyr   zNetplanIp.__init__*   s   ø€ Ü‰Ñ DØ%NØ#ð 	õ 	%ó    c                 ó   — t        «       | _        | j                  j                  ddd¬«      }|j	                  | j                  j
                  | j                  ¬«       | j                  «        | j                  «        y )NÚleasesúDisplay IP leasesF)ÚhelpÚadd_help)ÚfuncÚcommandclass)ÚNetplanIpLeasesÚcommand_leasesÚ
subparsersÚ
add_parserÚset_defaultsÚrunÚ
parse_argsÚrun_command)r   Úp_ip_leasess     r   r(   zNetplanIp.run/   sn   € Ü-Ó/ˆÔð —o‘o×0Ñ0°Ø6IØ:?ð 1ó Aˆð 	× Ñ  d×&9Ñ&9×&=Ñ&=ÈD×L_ÑL_Ð Ô`à�‰ÔØ×ÑÕr   )Ú__name__Ú
__module__Ú__qualname__r   r(   Ú__classcell__©r   s   @r   r   r   (   s   ø„ ô%ö

r   r   c                   ó*   ‡ — e Zd Zˆ fd„Zd„ Zd„ Zˆ xZS )r#   c                 ó*   •— t         ‰| �  ddd¬«       y )Nz	ip leasesr   Tr   r   r   s    €r   r   zNetplanIpLeases.__init__>   s   ø€ Ü‰Ñ KØ%8Ø"ð 	õ 	$r   c                 óÚ   — | j                   j                  dd¬«       | j                   j                  dd¬«       | j                  | _        | j	                  «        | j                  «        y )NÚ	interfacez1Interface for which to display IP lease settings.)r   ú
--root-dirzBSearch for configuration files in this root directory instead of /)ÚparserÚadd_argumentÚcommand_ip_leasesr!   r)   r*   )r   s    r   r(   zNetplanIpLeases.runC   sa   € Ø�‰× Ñ  Ø&Yð 	!ô 	[à�‰× Ñ  Ø&jð 	!ô 	lð ×*Ñ*ˆŒ	à�‰ÔØ×ÑÕr   c                 óZ  ‡ — ‰ j                   dk(  r‰ j                  «        ˆ fd„}t        j                  «       g}‰ j                  r|d‰ j                  gz  }|d‰ j                   gz  }t        j                  d|«       	 t        j                  |d¬«      }i }j                  d«      }|D ])  }|j                  «       j                  d«      \  }}|||<   Œ+  ||«       y # t        $ r@ t        d‰ j                   z  t        j                  ¬	«       t        j                  d
«       Y Œ’w xY w)Nr   c           	      ó  •— ˆ
fd„}ˆ
fd„}t         | d      d   }t         | d      d   }	  t        d|z   «      «       }t        j                  j	                  d‰
j
                  r)t        j                  j                  ‰
j
                  «      nd|j                  ‰
j                  |¬	«      «      }t        j                  j                  |«      s|j                  d
d«      }t        |«      5 }|j                  «       D ]  }t        |j                  «       «       Œ 	 d d d «       y # 1 sw Y   y xY w# t        $ rS}	t        d‰
j                  ›dt!        |	«      ›�t"        j$                  ¬«       t#        j&                  d«       Y d }	~	y d }	~	ww xY w)Nc                  óD  •— t         j                  j                  d‰j                  d«      } 	 t	        | «      5 }|j                  «       d   j                  «       cd d d «       S # 1 sw Y   y xY w# t        $ r&}t        j                  d| t        |«      «       ‚ d }~ww xY w)Nz/sys/class/netr   r   zCannot read file %s: %s)ÚosÚpathÚjoinr4   ÚopenÚ	readlinesÚstripÚ	ExceptionÚloggingÚdebugÚstr)Ú	ifindex_fÚfÚer   s      €r   Úlease_method_ifindexzXNetplanIpLeases.command_ip_leases.<locals>.find_lease_file.<locals>.lease_method_ifindexT   s   ø€ ÜŸG™GŸL™LÐ)9¸4¿>¹>È9ÓU�	ðÜ˜i›ð 8¨AØ Ÿ{™{›}¨QÑ/×5Ñ5Ó7÷8÷ 8ò 8ûä ò Ü—M‘MÐ";¸YÌÈAËÔOØûðús4   ®A0 ¹!A$Á	A0 Á$A-Á)A0 Á-A0 Á0	BÁ9!BÂBc                  ó  •— 	 t        j                  dd‰j                  g«      } | j                  «       D ]�  }d|v sŒ|j	                  d«      d   j                  «       j                  «       }t        j                  ddd|g«      }|j                  «       D ]:  }d|v sŒ|j	                  d«      d   j                  «       j                  «       c c S  ŒŸ 	 t        d
«      ‚# t        $ r}t        d	t        |«      z  «      ‚d }~ww xY w)NÚdevÚshowzGENERAL.CONNECTIONú:é   ÚconÚidzconnection.uuidz@Could not find a NetworkManager connection for the interface: %sz<Could not find a NetworkManager connection for the interface)	r   Ú	nmcli_outr4   Ú
splitlinesÚsplitÚrstriprA   rB   rE   )Únmcli_dev_outÚlineÚconn_idÚnmcli_con_outrH   r   s        €r   Úlease_method_nm_connectionz^NetplanIpLeases.command_ip_leases.<locals>.find_lease_file.<locals>.lease_method_nm_connection]   s  ø€ ð
qÜ$)§O¡O°U¸FÀDÇNÁNÐ4SÓ$T�MØ -× 8Ñ 8Ó :ò O˜Ø/°4Ò7Ø&*§j¡j°£o°aÑ&8×&?Ñ&?Ó&A×&GÑ&GÓ&I˜GÜ,1¯O©O¸UÀFÈDÐRYÐ<ZÓ,[˜MØ(5×(@Ñ(@Ó(Bò O Ø#4¸Ò#<Ø+/¯:©:°c«?¸1Ñ+=×+DÑ+DÓ+F×+LÑ+LÓ+NÔ$NñOñ	Oô  Ð ^Ó_Ð_øô !ò qÜ#Ð$fÔilÐmnÓioÑ$oÓpÐpûðqús)   ƒ9C! ½A C! Â3C! ÃC! Ã!	DÃ*DÄDÚbackendr   r   Úlease_method_ú/Ú )r4   Úlease_idzNetworkManager/internal-zNetworkManager/dhclient-zNo lease found for interface 'z': ©ÚfilerN   )Ú
lease_pathÚevalr<   r=   r>   Úroot_dirÚabspathÚformatr4   ÚisfileÚreplacer?   r@   ÚprintrT   rB   rE   ÚsysÚstderrÚexit)ÚmappingrI   rY   Úlease_patternÚlease_methodr^   r=   rG   rV   rH   r   s             €r   Úfind_lease_filez:NetplanIpLeases.command_ip_leases.<locals>.find_lease_fileS   sF  ø€ ôô`ô ' w¨yÑ'9Ñ:¸9ÑEˆMÜ% g¨iÑ&8Ñ9¸(ÑCˆLðØ?œ4 °,Ñ >Ó?ÓA�ô —w‘w—|‘| CØFJÇmÂm¤B§G¡G§O¡O°D·M±MÔ$BÐY[Ø$1×$8Ñ$8À4Ç>Á>ØBJð %9ó %LóM�ô —w‘w—~‘~ dÔ+ØŸ<™<Ð(BÐD^Ó_�DÜ˜$“Zð - 1Ø !§¡£ò -˜Ü˜dŸk™k›mÕ,ñ-÷-÷ -ñ -ûô ò ÝÀÇÃÔQTÐUVÔQWÐXÜŸ:™:õ'ä—‘˜—‘ûðús7   «C D0 Ã+/D$ÄD0 Ä$D-Ä)D0 Ä-D0 Ä0	FÄ9A	FÆFr5   z	--mappingzcommand ip leases: running %sT)Útextz:No lease found for interface '%s' (not managed by Netplan)r_   rN   ú,ú=)r4   Úprint_usager   Úget_generator_pathrc   rC   rD   Ú
subprocessÚcheck_outputr   rh   ri   rj   rk   rS   rA   )	r   ro   ÚargvÚoutrl   Ú	mapping_sÚkeyvalueÚkeyÚvalues	   `        r   r8   z!NetplanIpLeases.command_ip_leasesN   s  ø€ à�>‰>˜VÒ#Ø×ÑÔô2	ôh ×(Ñ(Ó*Ð+ˆØ�=Š=Ø�\ 4§=¡=Ð1Ñ1ˆDØ�˜dŸn™nÐ-Ñ-ˆô 	�‰Ð5°tÔ<ð	Ü×)Ñ)¨$°TÔ:ˆCð ˆØ—I‘I˜c“Nˆ	Ø!ò 	!ˆHØ!Ÿ™Ó)×/Ñ/°Ó4‰JˆC�Ø ˆG�CŠLð	!ñ 	˜Õ øô "ò 	ÜÐNÐQU×Q_ÑQ_Ñ_Ôfi×fpÑfpÕqÜ�H‰H�QŽKð	ús   Â C! Ã!AD*Ä)D*)r,   r-   r.   r   r(   r8   r/   r0   s   @r   r#   r#   <   s   ø„ ô$ò
	öK!r   r#   )Ú__doc__rC   r<   ri   ru   r   r]   r   ra   ÚNetplanCommandr   r#   © r   r   ú<module>r€      sd   ðñ$ ã Û 	Û 
Û Ý )å ð 9Øñð
 RØ!ññ	€
ô�×$Ñ$ô ô(]!�e×*Ñ*õ ]!r   