
"T`	                 @   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 j e	  Z
 d Z d Z d Z e e f Z d	 d
   Z d d   Z d d d d  Z d d d  Z d d d  Z e	 d k r7d d l Z e   Z e j d e j d d   Z e e e d e j j d  Z e r7e j e  d S)z-Run the dhclient hook to record network info.    N)atomic_helper)log)stageszdhclient-hookZupZdownc              C   s(   t  j   }  t j j |  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   ss   i  } xf |  j    D]X \ } } | j d  s= | j d  r | j d d  j d d  j   } | | | <q W| 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 r7 t   } | d  k rL t j } t j j | |  d  } | t k r t j j |  s t j	 |  t
 j | t |   t j d |  n; | t k r t j j |  r t j |  t j 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   sj   |  d  k r$ t  j d t d t  }  |  j d d d d t |  j d d d |  j d	 t t f  |  S)
NprogZdescriptionr"   helpzevent taken on the interfacechoicesr!   z&the network interface being acted uponaction)argparseArgumentParserNAME__doc__add_argumentr   Zset_defaultshandle_args)parserr
   r
   r   
get_parser9   s    r1   c             C   s   t  d | j d | 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/   E   s    r/   __main__r3      r#   Z_CI_DHCP_HOOK_DATA_D)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>   s.   	