
    gV                         S r SSKrSSKrSSKrSSKrSSKJr  SSKJr  SSS.S	S
S.S.r " S S\R                  5      r
 " S S\R                  5      rg)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                   .   ^  \ rS rSrU 4S jrS rSrU =r$ )	NetplanIp(   c                 $   > [         TU ]  SSSS9  g )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   NetplanIp.__init__*   s    D%N# 	 	%    c                     [        5       U l        U R                  R                  SSSS9nUR	                  U R                  R
                  U R                  S9  U R                  5         U R                  5         g )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*   NetplanIp.run/   sn    -/ oo006I:? 1 A 	  d&9&9&=&=DL_L_ `r   )r&   )__name__
__module____qualname____firstlineno__r   r*   __static_attributes____classcell__r   s   @r   r   r   (   s    %

 
r   r   c                   4   ^  \ rS rSrU 4S jrS rS rSrU =r$ )r%   <   c                 $   > [         TU ]  SSSS9  g )Nz	ip leasesr    Tr   r   r   s    r   r   NetplanIpLeases.__init__>   s    K%8" 	 	$r   c                     U R                   R                  SSS9  U R                   R                  SSS9  U R                  U l        U R	                  5         U R                  5         g )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*   NetplanIpLeases.runC   sa      &Y 	! 	[  &j 	! 	l **	r   c                 f  ^  T R                   S:X  a  T R                  5         U 4S jn[        R                  " 5       /nT R                  (       a  UST R                  /-  nUST R                   /-  n[
        R                  " SU5         [        R                  " USS9n0 nWR                  S5      nU H(  nUR                  5       R                  S5      u  pxXU'   M*     U" U5        g ! [         a>    [        ST R                   -  [        R                  S	9  [        R                  " S
5         Nf = f)Nr!   c           	      >  > U
4S jnU
4S jn[         U S      S   n[         U S      S   n [        SU-   5      " 5       n[        R                  R	                  ST
R
                  (       a)  [        R                  R                  T
R
                  5      OSUR                  T
R                  US	95      n[        R                  R                  U5      (       d  UR                  S
S5      n[        U5       nUR                  5        H  n[        UR                  5       5        M     S S S 5        g ! , (       d  f       g = f! [         aS  n	[        ST
R                  < S[!        U	5      < 3["        R$                  S9  ["        R&                  " S5         S n	A	g S n	A	ff = f)Nc                  R  > [         R                  R                  STR                  S5      n  [	        U 5       nUR                  5       S   R                  5       sS S S 5        $ ! , (       d  f       g = f! [         a'  n[        R                  " SU [        U5      5        e S nAff = f)Nz/sys/class/netr   r   zCannot read file %s: %s)ospathjoinr;   open	readlinesstrip	Exceptionloggingdebugstr)	ifindex_ffer   s      r   lease_method_ifindexXNetplanIpLeases.command_ip_leases.<locals>.find_lease_file.<locals>.lease_method_ifindexT   st    GGLL)94>>9U	iA {{}Q/557 )  MM";YAOs4   A5 !A$	A5 $
A2.A5 2A5 5
B&?"B!!B&c                  (  >  [         R                  " SSTR                  /5      n U R                  5        H  nSU;   d  M  UR	                  S5      S   R                  5       R                  5       n[         R                  " SSSU/5      nUR                  5        H=  nSU;   d  M  UR	                  S5      S   R                  5       R                  5       s  s  $    M     [        S
5      e! [         a  n[        S	[        U5      -  5      eS nAff = f)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_outr;   
splitlinessplitrstriprI   rJ   rM   )nmcli_dev_outlineconn_idnmcli_con_outrP   r   s        r   lease_method_nm_connection^NetplanIpLeases.command_ip_leases.<locals>.find_lease_file.<locals>.lease_method_nm_connection]   s    
q$)OOUFDNN4S$TM - 8 8 :/47&*jjoa&8&?&?&A&G&G&IG,1OOUFDRY<Z,[M(5(@(@(B#4#<+/::c?1+=+D+D+F+L+L+N$N )C	 !;   ^__ ! q#$filmnio$oppqs*   :C+ A!C+ &3C+ C+ +
D5DDbackendr   r   lease_method_/ )r;   lease_idzNetworkManager/internal-zNetworkManager/dhclient-zNo lease found for interface 'z': filerW   )
lease_pathevalrD   rE   rF   root_dirabspathformatr;   isfilereplacerG   rH   printr]   rJ   rM   sysstderrexit)mappingrQ   rb   lease_patternlease_methodrh   rE   rO   r_   rP   r   s             r   find_lease_file:NetplanIpLeases.command_ip_leases.<locals>.find_lease_fileS   s7   ` 'wy'9:9EM%gi&89(CL, >?A ww||CFJmmBGGOODMM$BY[$1$8$84>>BJ %9 %LM ww~~d++<<(BD^_D$Z1 !dkkm, !.  ZZ  QTUVQWX::'s7   CD? 41D.%D? .
D<8D? <D? ?
F	A	FFr<   z	--mappingzcommand ip leases: running %sT)textz:No lease found for interface '%s' (not managed by Netplan)ri   rW   ,=)r;   print_usager   get_generator_pathrm   rK   rL   
subprocesscheck_outputr   rr   rs   rt   ru   r\   rI   )	r   ry   argvoutrv   	mapping_skeyvaluekeyvalues	   `        r   r?   !NetplanIpLeases.command_ip_leasesN   s   >>V#2	h ((*+==\4==11Ddnn-- 	5t<	))$T:C IIcN	!H!)//4JC CL " 	  " 	NQUQ_Q__fifpfpqHHQK	s   	C( (AD0/D0)r#   )	r/   r0   r1   r2   r   r*   r?   r3   r4   r5   s   @r   r%   r%   <   s    $
	K! K!r   r%   )__doc__rK   rD   rs   r   r   rg   r   rk   NetplanCommandr   r%    r   r   <module>r      sd   $   	 
  )  9
 R!	
$$ (]!e** ]!r   