o
    f	                     @   sZ   d dl Z d dlZd dl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)netsubputilc                   @   s(   e Zd Zd	ddZd
ddZdd ZdS )RendererNc              	   C   s   | j  D ]U\}}d|}t| j|}||  v rd}n6t|trTzdj|d |d d}W n t	y?   t
d| Y nw |d}|rM|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
)interface_configurationsitemsformatr   target_pathtargetdhcp_interfaces
isinstancedictKeyErrorLOGerrorgetinterface_routesr   
write_file)selfr   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std d S |r8tjddgdd | 	 D ]}tjd	d
d|gdd q(d S t
jj  tjg ddddgd tjg ddddgd tjddgdd d S )N.r      z!openbsd generate postcmd disabledshz/etc/netstartT)capturedhcpleasectlz-w30)routedeldefault   )r$   rcs)r'   flushr)   )boolintplatformreleasesplit	_postcmdsr   debugr   r   r   dhcpIscDhclientkill_dhcp_client)r   runhas_dhcpleasectl	interfacer   r   r   start_services"   s   
zRenderer.start_servicesc                 C   sZ   |dkrd}t | j|}|d }t|| d S | 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   networkr   gatewayr   r   r   r   r   r   	set_route3   s*   zRenderer.set_routeN)F)__name__
__module____qualname__r    r:   r>   r   r   r   r   r      s    

r   c                 C   s   t  S r?   )r   
is_OpenBSD)r   r   r   r   	availableF   s   rD   r?   )loggingr/   cloudinit.net.bsd	cloudinitr   r   r   	getLoggerr@   r   bsdBSDRendererr   rD   r   r   r   r   <module>   s   
: