3 0Q=j%" @ s d dl mZ d dl mZ d dlZd dlZyd dlZW n ek rR d dljZY nX G dd de Z G dd de ZG dd d eZdS ) ) rpcServer) up2dateErrorsNc @ s0 e Zd ZdZdd Zdd Zdd Zdd Zd S )_DoCallWrapperze A callable object that will handle multiple levels of attributes, and catch exceptions. c C s || _ || _d S )N)_server_method_name)selfZservermethod_name r /usr/lib/python3.6/rhnserver.py__init__2 s z_DoCallWrapper.__init__c C s t | jd| j|f S )z= Recursively build up the method name to pass to the server. z%s.%s)r r r )r r r r r __getattr__6 s z_DoCallWrapper.__getattr__c O s t | j| j}ytj|f||S tjk rH | jtj d Y n t jjk r t tj d }|jd}|jd}d}t|dkr|d }nt|dkr|d }|jd}d|krtj n tj|Y nX dS ) z3 Call the method. Catch faults and translate them. z[()], z 'zcertificate verify failedN)getattrr r r ZdoCall xmlrpclibZFault$_DoCallWrapper__exception_from_faultsysexc_inforequests exceptionsZSSLErrorstrstripsplitlenr ZSSLCertificateVerifyFailedErrorZNetworkError)r argskwargsmethoderrorpiecesmessager r r __call__; s$ z_DoCallWrapper.__call__c C s |j dkrtj|j}n|j dkr4tj|j}n|j dkrNtj|j}nr|j dkrhtj|j}nX|j dkrtj|j}n>|j d krtj|j}n$|j d!krtj|j}n |j d"krtj|j}n|j d#krtj|j}n|j d$krtj |j}n|j d%kr"tj |j}nt|j dkrBtj|j}n~t|j d krbtj |j}n^t|j dkr~tj }nBt|j dkrtj|j}n"|j dkrtj|j}nt|j dkrtj |j}n|j d&krtj|j}n|j d'krtj|j}n|j d(kr&tj|j}n|j d)kr@tj|j}n|j d*ksX|j d+krftj|j}nZ|j d,krtj|j}n@|j d-krtj|j}n&|j d.krtj|j}ntj|j}|S )/N r n r $ 1 <