3 �Xj%"� @s�ddlmZddlmZddlZddlZy ddlZWnek rRddljZYnXGdd�de �Z Gdd�de �Z Gdd �d e �Z dS) �)� rpcServer)� up2dateErrorsNc@s0eZdZdZdd�Zdd�Zdd�Zdd �Zd S) �_DoCallWrapperze A callable object that will handle multiple levels of attributes, and catch exceptions. cCs||_||_dS)N)�_server� _method_name)�selfZserver� method_name�r �/usr/lib/python3.6/rhnserver.py�__init__2sz_DoCallWrapper.__init__cCst|jd|j|f�S)z= Recursively build up the method name to pass to the server. z%s.%s)rrr)rrr r r � __getattr__6sz_DoCallWrapper.__getattr__c Os�t|j|j�}ytj|f|�|�Stjk rH|jtj �d��Yn�t j j k r�t tj �d�}|jd�}|jd�}d}t|�dkr�|d}nt|�dkr�|d}|jd�}d|kr�tj��n tj|��YnXdS) z3 Call the method. Catch faults and translate them. �z[()]�,��z 'zcertificate verify failedN)�getattrrrrZdoCall� xmlrpclibZFault�$_DoCallWrapper__exception_from_fault�sys�exc_info�requests� exceptionsZSSLError�str�strip�split�lenrZSSLCertificateVerifyFailedErrorZ NetworkError)r�args�kwargs�method�error�pieces�messager r r �__call__;s$       z_DoCallWrapper.__call__cCs�|jdkrtj|j�}�n�|jdkr4tj|j�}�n�|jdkrNtj|j�}�nr|jdkrhtj|j�}�nX|jdkr�tj|j�}�n>|jd kr�tj|j�}�n$|jd!kr�tj|j�}�n |jd"kr�tj|j�}�n�|jd#kr�tj|j�}�n�|jd$k�rtj |j�}�n�|jd%k�r"tj |j�}�n�t |j�d k�rBtj |j�}�n~t |j�d k�rbtj |j�}�n^t |j�dk�r~tj�}�nBt |j�dk�r�tj|j�}�n"|jdk�r�tj|j�}�nt |j�dk�r�tj |j�}n�|jd&k�r�tj|j�}n�|jd'k�r tj|j�}n�|jd(k�r&tj|j�}n�|jd)k�r@tj|j�}n�|jd*k�sX|jd+k�rftj|j�}nZ|jd,k�r�tj|j�}n@|jd-k�r�tj|j�}n&|jd.k�r�tj|j�}n tj|j�}|S)/N�r�nr � ������$�1�<�J�i�c�[�jiXiYiZi�i�i��=�����������i���������i����i����i����i����i����i����i����i����i����i����i����i/���iD���iC���i���������)Z faultCoderZ$AuthenticationOrAccountCreationErrorZ faultStringZUnknownMethodExceptionZLoginMinLengthErrorZPasswordMinLengthErrorZValidationErrorZNoBaseChannelErrorZInsuffMgmntEntsErrorZ PasswordError�absZ AbuseErrorZAuthenticationTicketErrorZRegistrationDeniedErrorZRhnUuidUniquenessErrorZ DelayErrorZInvalidRegistrationNumberErrorZNotEntitlingErrorZPasswordMaxLengthErrorZActivationKeyUsageLimitErrorZUnableToCreateUserZCommunicationError)rZfaultZ exceptionr r r Z__exception_from_faultRsr                          z%_DoCallWrapper.__exception_from_faultN)�__name__� __module__� __qualname__�__doc__r r r"rr r r r r+s rc@s*eZdZdZd dd�Zdd�Zdd �ZdS) � RhnServerz` An rpc server object that calls doCall for you, and catches lower level exceptions NFcCs&|dkrtj|||d�|_n||_dS)N)�serverOverride�timeout� registration)rZ getServerr)rr?r@�rpcServerOverriderAr r r r �s  zRhnServer.__init__cCs|jj||�dS)N)r� add_header)r�key�valuer r r rC�szRhnServer.add_headercCs t|j|�S)z6Return a callable object that will do the work for us.)rr)rrr r r r �szRhnServer.__getattr__)NNNF)r:r;r<r=r rCr r r r r r>�s r>cs"eZdZdZd�fdd� Z�ZS)�RegistrationRhnServerz� A specialized RhnServer subclass for handling registration-related calls. Intended to be used as a shorthand for registration tasks instead of the plain RhnServer. Ncstt|�j|||dd�dS)NT)r?r@rBrA)�superrFr )rr?r@rB)� __class__r r r �s  zRegistrationRhnServer.__init__)NNN)r:r;r<r=r � __classcell__r r )rHr rF�srF) Zup2date_clientrrrrr� ImportErrorZ xmlrpc.clientZclient�objectrr>rFr r r r �!s   u