3 0Q=j%" @sddlmZddlmZddlZddlZy ddlZWnek rRddljZYnXGddde Z Gddde Z Gdd d e Z dS) ) rpcServer) up2dateErrorsNc@s0eZdZdZddZddZddZdd Zd S) _DoCallWrapperze A callable object that will handle multiple levels of attributes, and catch exceptions. cCs||_||_dS)N)_server _method_name)selfZserver method_namer /usr/lib/python3.6/rhnserver.py__init__2sz_DoCallWrapper.__init__cCst|jd|j|fS)z= Recursively build up the method name to pass to the server. z%s.%s)rrr)rrr r r __getattr__6sz_DoCallWrapper.__getattr__c Ost|j|j}ytj|f||Stjk rH|jtj dYnt j j k rt tj d}|jd}|jd}d}t|dkr|d}nt|dkr|d}|jd}d|krtjn tj|YnXdS) z3 Call the method. Catch faults and translate them. z[()],z 'zcertificate verify failedN)getattrrrrZdoCall xmlrpclibZFault$_DoCallWrapper__exception_from_faultsysexc_inforequests exceptionsZSSLErrorstrstripsplitlenrZSSLCertificateVerifyFailedErrorZ NetworkError)rargskwargsmethoderrorpiecesmessager r r __call__;s$       z_DoCallWrapper.__call__cCs|jdkrtj|j}n|jdkr4tj|j}n|jdkrNtj|j}nr|jdkrhtj|j}nX|jdkrtj|j}n>|jd krtj|j}n$|jd!krtj|j}n |jd"krtj|j}n|jd#krtj|j}n|jd$krtj |j}n|jd%kr"tj |j}nt |jd krBtj |j}n~t |jd krbtj |j}n^t |jdkr~tj}nBt |jdkrtj|j}n"|jdkrtj|j}nt |jdkrtj |j}n|jd&krtj|j}n|jd'kr tj|j}n|jd(kr&tj|j}n|jd)kr@tj|j}n|jd*ksX|jd+krftj|j}nZ|jd,krtj|j}n@|jd-krtj|j}n&|jd.krtj|j}n tj|j}|S)/Nrnr $1<Jic[jiXiYiZiii=iiiiiiiiiiiii/iDiCi)Z faultCoderZ$AuthenticationOrAccountCreationErrorZ faultStringZUnknownMethodExceptionZLoginMinLengthErrorZPasswordMinLengthErrorZValidationErrorZNoBaseChannelErrorZInsuffMgmntEntsErrorZ PasswordErrorabsZ 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 ddZddZdd ZdS) RhnServerz` An rpc server object that calls doCall for you, and catches lower level exceptions NFcCs&|dkrtj|||d|_n||_dS)N)serverOverridetimeout registration)rZ getServerr)rr?r@rpcServerOverriderAr r r r s  zRhnServer.__init__cCs|jj||dS)N)r add_header)rkeyvaluer r r rCszRhnServer.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"eZdZdZdfdd ZZS)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|||dddS)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 rFsrF) Zup2date_clientrrrrr ImportErrorZ xmlrpc.clientZclientobjectrr>rFr r r r !s   u