ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     ÿØÿà JFIF      ÿÛ C      

!"$"$ÿÛ C  ÿÂ p " ÿÄ              ÿÄ             ÿÚ    ÕÔË®
(%	aA*‚XYD¡(J„¡E¢RE,P€XYae )(E¤²€B¤R¥	BQ¤¢ X«)X…€¤   @  

  ..............................................................................................................................................................................
.............................................................................                                                  
                                                                                                                                                                                     o
    )b                     @   s   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  mZ ddddddd	Z	G d
d dej
ZG dd dej
ZdS )znetplan ip command line    N)CalledProcessErrorz#run/systemd/netif/leases/{lease_id}ifindex)patternmethodz<var/lib/NetworkManager/dhclient-{lease_id}-{interface}.leaseZnm_connection)ZnetworkdNetworkManagerc                       s$   e Zd Z fddZdd Z  ZS )	NetplanIpc                       t  jdddd d S )Nipz'Retrieve IP information from the systemF
command_iddescriptionleafsuper__init__self	__class__ -/usr/share/netplan/netplan/cli/commands/ip.pyr   *      
zNetplanIp.__init__c                 C   sB   t  | _| jjdddd}|j| jj| jd |   |   d S )NZleasesDisplay IP leasesF)helpadd_help)funccommandclass)NetplanIpLeasesZcommand_leases
subparsers
add_parserset_defaultsrun
parse_argsrun_command)r   Zp_ip_leasesr   r   r   r!   /   s   zNetplanIp.run)__name__
__module____qualname__r   r!   __classcell__r   r   r   r   r   (   s    r   c                       s,   e Zd Z fddZdd Zdd Z  ZS )r   c                    r   )Nz	ip leasesr   Tr
   r   r   r   r   r   r   >   r   zNetplanIpLeases.__init__c                 C   s<   | j jddd | j jddd | j| _|   |   d S )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   r   r   r   r!   C   s   zNetplanIpLeases.runc           	         s    j dkr	    fdd}t g} jr|d jg7 }|d j g7 }td| z	tj|dd}W n t	yB   t
d	 Y nw i }|d
}|D ]}| d\}}|||< qL|| d S )Nr   c           	   
      s   fdd} fdd}t | d  d }t | d  d }zCtd|  }ttjd	 jr3tj jnd
|j j	|d}|
 D ]}t|  qCW d    W d S 1 sXw   Y  W d S  ty } ztd j	t|f tjd td W Y d }~d S d }~ww )Nc               
      s   t jd jd} z t| }| d  W  d    W S 1 s"w   Y  W d S  ty? } z
t	d| t
|  d }~ww )Nz/sys/class/netr   r   zCannot read file %s: %s)ospathjoinr(   open	readlinesstrip	Exceptionloggingdebugstr)Z	ifindex_ffer   r   r   lease_method_ifindexT   s   
(zXNetplanIpLeases.command_ip_leases.<locals>.find_lease_file.<locals>.lease_method_ifindexc               
      s   z^t jddd jgddit jd} | jD ]E}|d}d|v rY|d	d
   }t jdddd|gddit jd}|jD ]}|d}d|v rX|d	d
       W S q=qW t	d t	yr } zt	dt
| d }~ww )NnmclidevZshowLC_ALLC)envstdoutzutf-8zGENERAL.CONNECTION:   Zconidzconnection.uuidz@Could not find a NetworkManager connection for the interface: %sz<Could not find a NetworkManager connection for the interface)
subprocessPopenr(   PIPEr?   decodesplitrstripr2   r3   r6   )Znmcli_dev_outlineZconn_idZnmcli_con_outr8   r   r   r   lease_method_nm_connection]   s2   



 z^NetplanIpLeases.command_ip_leases.<locals>.find_lease_file.<locals>.lease_method_nm_connectionZbackendr   r   Zlease_method_/ )r(   lease_idz%No lease found for interface '%s': %s)filerA   )
lease_pathevalr0   r-   r.   r/   root_dirabspathformatr(   r1   printrH   r3   r6   sysstderrexit)	mappingr9   rJ   Zlease_patternZlease_methodrM   r7   rI   r8   r   r   r   find_lease_fileS   s0   	
&z:NetplanIpLeases.command_ip_leases.<locals>.find_lease_filer)   z	--mappingzcommand ip leases: running %sT)universal_newlinesrA   ,=)r(   print_usageutilsget_generator_pathrQ   r4   r5   rC   check_outputr   rU   rW   rG   r2   )	r   rY   argvoutrX   Z	mapping_sZkeyvaluekeyvaluer   r   r   r,   N   s&   

5

z!NetplanIpLeases.command_ip_leases)r$   r%   r&   r   r!   r,   r'   r   r   r   r   r   <   s    r   )__doc__r4   r-   rU   rC   r   netplan.cli.utilsclir^   rO   NetplanCommandr   r   r   r   r   r   <module>   s    