U
    Ad	                     @   s   d Z ddlZddlZddlmZ ddlmZ ddlmZ ee	Z
dZdZdZeefZd	d
 Zdd ZdddZdddZdddZe	dkrddlZe Zejejdd dZeeeejddZeree dS )z-Run the dhclient hook to record network info.    N)atomic_helper)log)stageszdhclient-hookZupZdownc                  C   s   t  } tj| j dS )Nzdhclient.hooks)r   ZInitospathjoinpathsZget_runpath)i r
   9/usr/lib/python3/dist-packages/cloudinit/dhclient_hook.py_get_hooks_dir   s    r   c                 C   sN   i }|   D ]<\}}|ds(|dr|dddd }|||< q|S )zrGiven info (os.environ), return a dictionary with
    lower case keys for each entry starting with DHCP4_ or new_.ZDHCP4_Znew_ )items
startswithreplacelower)infoZnew_infokvkeyr
   r
   r   _filter_env_vals   s    
r   c                 C   s   |t krtd|t f |d kr&t }|d kr4tj}tj|| d }|tkrtj|sdt	| t
|t| td| n*|tkrtj|rt| td| d S )Nz*Unexpected event '%s'. Expected one of: %sz.jsonzWrote dhclient options in %sz Removed dhclient options file %s)EVENTS
ValueErrorr   r   environr   r   UPexistsmakedirsr   Z
write_jsonr   LOGdebugDOWNremove)	interfaceeventdata_denvZ	hook_filer
   r
   r   run_hook$   s$    


r%   c                 C   sH   | d krt jttd} | jddtd | jddd | jttfd | S )	N)progZdescriptionr"   zevent taken on the interface)helpchoicesr!   z&the network interface being acted upon)r'   )action)argparseArgumentParserNAME__doc__add_argumentr   Zset_defaultshandle_args)parserr
   r
   r   
get_parser:   s       r1   c                 C   s   t |j|j|dS )zXHandle the Namespace args.
    Takes 'name' as passed by cloud-init main. not used here.)r!   r"   r#   )r%   r!   r"   )nameargsr#   r
   r
   r   r/   H   s    r/   __main__   )r3   Z_CI_DHCP_HOOK_DATA_D)r#   )NN)N)N)r-   r*   r   Z	cloudinitr   r   Zloggingr   Z	getLogger__name__r   r,   r   r   r   r   r   r%   r1   r/   sysr0   
parse_argsargvr3   r   getZreturn_valueexitr
   r
   r
   r   <module>   s4   



  
