U
    Ld	                     @   s^   d dl Z d dlZd dlmZ d dlmZmZmZ ee	Z
G dd dejjjZdddZdS )	    N)log)net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}nnt|trzdj|d |d d}W n  t	k
r   t
d| Y nX |d}|r|d	| 7 }|d
| j 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getinterface_routesr   
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 qPnRt
jj  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routedeldefault   )r"   Zrcsflush)boolintplatformreleasesplitZ	_postcmdsr   debugr   r   r   ZdhcpZIscDhclientZkill_dhcp_client)r   runZhas_dhcpleasectlZ	interfacer   r   r   start_services"   s    

 
zRenderer.start_servicesc                 C   sX   |dkr0d}t | j|}|d }t|| n$| jd | d | d | d | _d S )Nz0.0.0.0z
etc/mygater
   z!route add z
 -netmask  )r   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.   r0   r   r   r   r   r      s   
r   c                 C   s   t  S )N)r   Z
is_OpenBSD)r   r   r   r   	availableF   s    r4   )N)r)   Zcloudinit.net.bsdZ	cloudinitr   Zloggingr   r   r   Z	getLoggerr1   r   ZbsdZBSDRendererr   r4   r   r   r   r   <module>   s   
: