�
܍~cS � � � d dl Z d dlZd dlmZ d dlmZmZ d dlmZ d� Z d� Z
d� Z e d� � Z G d � d
� � Z
dS )� N)�Optional)�NetworkState�parse_net_config_data)�generate_udev_rulec � � � � fd�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> � �� ��u�V�}�4� � r
)r s `r
�filter_by_typer � �� �4�4�4�4�4r c � � � � fd�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 � � � � fd�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 Zd Zd
d�Zedefd�� � Zej ddede e
ddfd�� � Z dde
de e
fd �ZdS )�RendererNc � � d S r r
)�self�configs r
�__init__zRenderer.__init__ s � ��r �
network_statec �J � t j � � }| � t � � D ]b}d|v r\|� d� � rG|� dd� � }|� 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_netzRenderer._render_persistent_net# s� � �
�+�-�-��"�2�2�3E�F�F� � �E�����5�9�9�]�#;�#;�����8�T�2�2���
�
�&��f�
�u�]�';�F�� � �� � ��
���!�!�!r � templates�returnc � � dS )zRender network state.Nr
)r" |