
Ke                 @   s  d  d l  Z  d  d l m Z d  d l m Z m Z m Z m Z m Z d  d l	 m
 Z
 d  d l m Z m Z m Z d  d l m Z d  d l m Z d  d l m Z m Z d  d	 l m Z d
 d d d d d d d d d d d d d d d d d d d g Z e e e e e e e e f e e f d d d     Z e e e e e e e f e e f d! d" d#    Z e e e e e e d$ d% d&    Z Gd' d(   d(  Z d S))    N)import_module)AnyCallableDictListTuple)errors)APIDataAPIResponseErrorWarningObject)UAConfig)IncorrectFieldTypeError)API_UNKNOWN_ARGWARN_NEW_VERSION_AVAILABLE)check_for_new_versionz,u.pro.attach.auto.configure_retry_service.v1z%u.pro.attach.auto.full_auto_attach.v1z'u.pro.attach.auto.should_auto_attach.v1zu.pro.attach.magic.initiate.v1zu.pro.attach.magic.revoke.v1zu.pro.attach.magic.wait.v1zu.pro.packages.summary.v1zu.pro.packages.updates.v1z!u.pro.security.fix.cve.execute.v1zu.pro.security.fix.cve.plan.v1z!u.pro.security.fix.usn.execute.v1zu.pro.security.fix.usn.plan.v1z'u.pro.security.status.livepatch_cves.v1z(u.pro.security.status.reboot_required.v1z u.pro.status.enabled_services.v1zu.pro.status.is_attached.v1zu.pro.version.v1zu.security.package_manifest.v1zu.unattended_upgrades.status.v1zu.apt_news.current_news.v1)optionsfieldsreturnc             C   s   i  } g  } x |  D] } y | j  d  \ } } Wn$ t k
 rX t j d |   Yn X| sg | ry t j d |   | | k r | j t d t j d |  j d t j	 d i    | | | <q W| | f S)N=argtitlecodemeta)
split
ValueErrorr   APIBadArgsFormatappendr   r   formatmsgname)r   r   kwargswarningsZoptionkv r$   2/usr/lib/python3/dist-packages/uaclient/api/api.py_process_options$   s"    	
r&   )datar   r   c             C   s   i  } g  } y t  j |   } Wn* t  j j k
 rK t j d |    Yn Xx | j   D] \ } } | ss | r t j d d j | |    | | k r | j	 t
 d t j d |  j d t j d i    | | | <qY W| | f S)Nr'   r   z{}:{}r   r   r   )jsonloadsdecoderZJSONDecodeErrorr   ZAPIJSONDataFormatErroritemsr   r   r   r   r   r   r   )r'   r   r    r!   Z	json_datar"   r#   r$   r$   r%   _process_dataA   s"    	
r,   )endpoint_pathr   r'   cfgr   c          7   C   s  |  t  k r% t j t j d |    St d |   } | j } g  } | j rd d   | j j D } yZ | r t | |  \ } }	 n+ | r t	 | |  \ } }	 n i  g  } }	 | j
 |	  Wn5 t j k
 r }
 z t j |
  SWYd  d  }
 ~
 Xn Xy | j j |  } WnG t k
 rW}
 z' t j t j d |
 j d |    SWYd  d  }
 ~
 Xn Xy | j | |  } Wqt k
 r}
 z t j |
  SWYd  d  }
 ~
 XqXnm | s| rt j t j d |    Sy | j |  } Wn2 t k
 r}
 z t j |
  SWYd  d  }
 ~
 Xn Xt   } | rV| j t d t j d |  j d t j d	 i    t d
 | j d | j | d t d | j d | d	 | j   S)Nendpointzuaclient.api.c             S   s   g  |  ] } | j   q Sr$   )key).0fr$   r$   r%   
<listcomp>m   s   	 zcall_api.<locals>.<listcomp>r   r   versionr   r   Z_schema_versionr!   r'   typeZ
attributes)VALID_ENDPOINTSr   Z	error_outZAPIInvalidEndpointr   r/   options_clsr   r&   r,   extendZAPIErrorZ	from_dictr   ZAPIMissingArgr0   fn	ExceptionZAPINoArgsForEndpointr   r   r   r   r   r   r   r
   r4   r!   r	   r   )r-   r   r'   r.   moduler/   Zoption_warningsr   r    r!   eresultZnew_versionr$   r$   r%   call_api^   s`    		 /# 			
		r>   c               @   s+   e  Z d  Z e e e d d d    Z d S)APIEndpoint)r4   r   r9   c             C   s(   | |  _  | |  _ | |  _ | |  _ d  S)N)r4   r   r9   r7   )selfr4   r   r9   r7   r$   r$   r%   __init__   s    			zAPIEndpoint.__init__N)__name__
__module____qualname__strr   rA   r$   r$   r$   r%   r?      s   r?   )r(   	importlibr   Ztypingr   r   r   r   r   Zuaclient.apir   Zuaclient.api.data_typesr	   r
   r   Zuaclient.configr   Zuaclient.data_typesr   Zuaclient.messagesr   r   Zuaclient.versionr   r6   rE   r&   r,   r>   r?   r$   r$   r$   r%   <module>   sF   (	-
-F