
    x[hj                     n    d dl Z d dlZd dlmZ d dlmZ d dlmZ d Zd Z	 G d de j                        Zy)	    N)Optional)NetworkState)generate_udev_rulec                       fdS )Nc                     | d   k(  S )Ntype )iface
match_types    8/usr/lib/python3/dist-packages/cloudinit/net/renderer.py<lambda>z filter_by_type.<locals>.<lambda>   s    uV}4     r	   )r   s   `r   filter_by_typer      s	    44r   c                       fdS )Nc                     | v xr |    S Nr	   )r
   
match_names    r   r   z filter_by_attr.<locals>.<lambda>   s    *-C%
2C r   r	   )r   s   `r   filter_by_attrr      s	    DDr   c                   h    e Zd ZddZedefd       Zej                  	 	 d	dede	e
   ddfd       Zy)
RendererNc                      y r   r	   )selfconfigs     r   __init__zRenderer.__init__   s    r   network_statec                     t        j                         }| j                  t        d            D ]N  }d|v s|j	                  d      s|j	                  dd      }|j                  t        |d   |d   |             P |j                         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    s       r   _render_persistent_netzRenderer._render_persistent_net   s    
 ++-"22>*3MN 	E599]#;8T2&fu]';F		 !!r   	templatesreturnc                      y)zRender network state.Nr	   )r   r   r)   targets       r   render_network_statezRenderer.render_network_state-   s    r   r   )NN)__name__
__module____qualname__r   staticmethodr   r(   abcabstractmethodr   dictr-   r	   r   r   r   r      sd     "l " "  	 %)	$#$ D>$
 
$ $r   r   )r2   r!   typingr   cloudinit.net.network_stater   cloudinit.net.udevr   r   r   ABCr   r	   r   r   <module>r9      s1     	  4 15E$sww $r   