o
    x[hj  ã                   @   sZ   d dl Z d dlZd dlmZ d dlmZ d dlmZ dd„ Zdd„ Z	G d	d
„ d
e j
ƒZdS )é    N)ÚOptional)ÚNetworkState)Úgenerate_udev_rulec                    ó   ‡ fdd„S )Nc                    s   ˆ | d kS )NÚtype© ©Úiface©Ú
match_typer   ú8/usr/lib/python3/dist-packages/cloudinit/net/renderer.pyÚ<lambda>   s    z filter_by_type.<locals>.<lambda>r   r
   r   r
   r   Úfilter_by_type   ó   r   c                    r   )Nc                    s   ˆ | v o| ˆ  S ©Nr   r   ©Ú
match_namer   r   r      s    z filter_by_attr.<locals>.<lambda>r   r   r   r   r   Úfilter_by_attr   r   r   c                   @   sN   e Zd Zddd„Zedefdd„ƒZej		ddede	e
 ddfd	d
„ƒZdS )ÚRendererNc                 C   s   d S r   r   )ÚselfÚconfigr   r   r   Ú__init__   s   zRenderer.__init__Únetwork_statec                 C   s^   t  ¡ }|  tdƒ¡D ]}d|v r*| d¡r*| dd¡}| t|d |d |d�¡ q| ¡ S )z2Given state, emit udev rules to map mac to ifname.ÚphysicalÚnameÚmac_addressÚdriverN)r   )ÚioÚStringIOÚiter_interfacesr   ÚgetÚwriter   Úgetvalue)r   Úcontentr	   r   r   r   r   Ú_render_persistent_net   s   ÿÿ€zRenderer._render_persistent_netÚ	templatesÚreturnc                 C   s   dS )zRender network state.Nr   )r   r   r%   Útargetr   r   r   Úrender_network_state-   s    zRenderer.render_network_stater   )NN)Ú__name__Ú
__module__Ú__qualname__r   Ústaticmethodr   r$   ÚabcÚabstractmethodr   Údictr(   r   r   r   r   r      s    
üþýûr   )r-   r   Útypingr   Úcloudinit.net.network_stater   Úcloudinit.net.udevr   r   r   ÚABCr   r   r   r   r   Ú<module>   s   