
    ܍~cS                         d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d Z	d Z
d Z e	d          Z G d	 d
          ZdS )    N)Optional)NetworkStateparse_net_config_data)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>       uV}4     r
   )r   s   `r   filter_by_typer          44444r   c                       fdS )Nc                     | d         k    S )Nnamer
   r   
match_names    r   r   z filter_by_name.<locals>.<lambda>   r   r   r
   r   s   `r   filter_by_namer      r   r   c                       fdS )Nc                     | v o|          S Nr
   r   s    r   r   z filter_by_attr.<locals>.<lambda>   s    *-C%
2C r   r
   r   s   `r   filter_by_attrr      s    DDDDDr   physicalc                       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	 	 dde
de	e
         fd	ZdS )RendererNc                     d S r   r
   )selfconfigs     r   __init__zRenderer.__init__    s    r   network_statec                 J   t          j                    }|                     t                    D ]b}d|v r\|                    d          rG|                    dd          }|                    t          |d         |d         |                     c|                                S )z2Given state, emit udev rules to map mac to ifname.r   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F 	 	E599]#;#;8T22&fu]';F    
 !!!r   	templatesreturnc                     dS )zRender network state.Nr
   )r"   r%   r2   targets       r   render_network_statezRenderer.render_network_state4   s      r   network_configc                 L    |                      t          |          ||          S )N)r%   r2   r5   )r6   r   )r"   r7   r2   r5   s       r   render_network_configzRenderer.render_network_config=   s2     ((/?? ) 
 
 	
r   r   )NN)__name__
__module____qualname__r$   staticmethodr   r1   abcabstractmethodr   dictr6   r9   r
   r   r   r    r       s            "l " " " \"  	 %)	$ $#$ D>$
 
$ $ $ $ %)	

 



 D>

 

 

 

 

 

r   r    )r>   r)   typingr   cloudinit.net.network_stater   r   cloudinit.net.udevr   r   r   r   r,   r    r
   r   r   <module>rD      s    


 				       K K K K K K K K 1 1 1 1 1 15 5 55 5 5E E E $^J// (
 (
 (
 (
 (
 (
 (
 (
 (
 (
r   