U
    ¯AdÉ  ã                   @   sZ   d dl Z d dlZd dlmZ d dlmZmZ e e¡Z	G dd„ dej
jjƒZddd„ZdS )	é    N)Úlog)ÚsubpÚutilc                   @   s&   e Zd Zdd„ Zd	dd„Zdd„ ZdS )
ÚRendererc              	   C   s¶   | j  ¡ D ]¦\}}d |¡}t | j|¡}||  ¡ kr<d}nht|tƒr¤zdj|d |d d}W n  t	k
r€   t
 d|¡ Y nX | d¡}|rœ|d	| 7 }|d
7 }t ||¡ q
d S )Nzetc/hostname.{}zdhcp
zinet {address} {netmask}ÚaddressÚnetmask)r   r   z#Invalid static configuration for %sÚmtuz mtu %dÚ
)Zinterface_configurationsÚitemsÚformatr   Útarget_pathÚtargetÚdhcp_interfacesÚ
isinstanceÚdictÚKeyErrorÚLOGÚerrorÚgetr   Ú
write_file)ÚselfZdevice_nameÚvÚif_fileÚfnÚcontentr   © r   ú7/usr/lib/python3/dist-packages/cloudinit/net/openbsd.pyÚwrite_config   s*    

 ÿ
 ÿ

zRenderer.write_configFc                 C   sÐ   t tt ¡  d¡d ƒdkƒ}| js2t d¡ d S |rntjddgdd |  	¡ D ]}tjd	d
d|gdd qPn^tjddgdddgd tjdddgdddgd tjdddgdddgd tjddgdd d S )NÚ.r   é   z!openbsd generate postcmd disabledZshz/etc/netstartT)ÚcaptureZdhcpleasectlz-wZ30ZpkillZdhclienté   )r    ZrcsZrouteÚdelÚdefaultÚflush)
ÚboolÚintÚplatformÚreleaseÚsplitZ	_postcmdsr   Údebugr   r   )r   ÚrunZhas_dhcpleasectlZ	interfacer   r   r   Ústart_services"   s    

 ÿ
zRenderer.start_servicesc                 C   s2   |dkr.d}t  | j|¡}|d }t ||¡ d S )Nz0.0.0.0z
etc/mygater	   )r   r   r   r   r   )r   Znetworkr   Zgatewayr   r   r   r   r   r   Ú	set_route3   s
    zRenderer.set_routeN)F)Ú__name__Ú
__module__Ú__qualname__r   r,   r-   r   r   r   r   r      s   
r   c                 C   s   t  ¡ S )N)r   Z
is_OpenBSD)r   r   r   r   Ú	available;   s    r1   )N)r'   Zcloudinit.net.bsdZ	cloudinitr   Zloggingr   r   Z	getLoggerr.   r   ZnetZbsdZBSDRendererr   r1   r   r   r   r   Ú<module>   s   
/