
    }f                     ~    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	 e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   physicalc                   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 ]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.namemac_addressdriverN)r    )ioStringIOiter_interfacesfilter_by_physicalgetwriter   getvalue)r   contentr
   r    s       r   _render_persistent_netzRenderer._render_persistent_net   s    
 ++-"223EF 	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_state0   s    r   r   )NN)__name__
__module____qualname__r   staticmethodr   r)   abcabstractmethodr   dictr.   r	   r   r   r   r      sd     "l " "  	 %)	$#$ D>$
 
$ $r   r   )r3   r!   typingr   cloudinit.net.network_stater   cloudinit.net.udevr   r   r   r$   ABCr   r	   r   r   <module>r:      s>     	  4 15E $J/ $sww $r   