a c8h;%@sddlmZddlmZddlmZddlmZddlZddlZz ddlZWne yjddl m ZYn0Gddde Z Gdd d e ZGd d d eZdS) ) raise_with_tb) rpcServer) up2dateErrors) capabilitiesNc@s0eZdZdZddZddZddZdd Zd S) _DoCallWrapperze A callable object that will handle multiple levels of attributes, and catch exceptions. cCs||_||_dSN)_server _method_name)selfZserver method_namer s$      z_DoCallWrapper.__call__cCs|jdkrt|j}n|jdkr4t|j}n|jdkrNt|j}nr|jdkrht|j}nX|jdkrt|j}n>|jdkrt|j}n$|jdkrt|j}n |jdkrt|j}n|jd krt|j}n|jd krt |j}n|jd kr"t |j}nt |jd krBt |j}n~t |jd krbt |j}n^t |jdkr~t}nBt |jdkrt|j}n"|jdkrt|j}nt |jdkrt |j}n|jdkrt|j}n|jdkr t|j}n|jdkr&t|j}n|jdkr@t|j}n|jdksX|jdkrft|j}nZ|jdkrt|j}n@|jdkrt|j}n&|jdkrt|j}n t|j}|S)Niiiiiiii1<Jic[iiiii/iDiCi)Z faultCoderZ$AuthenticationOrAccountCreationErrorZ faultStringZUnknownMethodExceptionZLoginMinLengthErrorZPasswordMinLengthErrorZValidationErrorZNoBaseChannelErrorZInsuffMgmntEntsErrorZ PasswordErrorabsZ AbuseErrorZAuthenticationTicketErrorZRegistrationDeniedErrorZRhnUuidUniquenessErrorZ DelayErrorZInvalidRegistrationNumberErrorZNotEntitlingErrorZPasswordMaxLengthErrorZActivationKeyUsageLimitErrorZUnableToCreateUserZCommunicationError)r Zfault exceptionr r r Z__exception_from_faultXs|                     z%_DoCallWrapper.__exception_from_faultN)__name__ __module__ __qualname____doc__rrr&rr r r r r.s rc@s:eZdZdZd ddZddZeeZdd Zd d Z dS) RhnServerz` An rpc server object that calls doCall for you, and catches lower level exceptions NFcCs,|durtj|||d|_n||_d|_dS)N)serverOverridetimeout registration)rZ getServerr _capabilities)r r8r9rpcServerOverrider:r r r rs zRhnServer.__init__cCsL|jdurF|j}|dur0|j|j}t|_|j||jSr)r;rZget_response_headersr:Zwelcome_messagerZ CapabilitiesZpopulate)r Zheadersr r r Z__get_capabilitiess      zRhnServer.__get_capabilitiescCs|j||dSr)r add_header)r keyvaluer r r r=szRhnServer.add_headercCs t|j|S)z6Return a callable object that will do the work for us.)rrrr r r rszRhnServer.__getattr__)NNNF) r3r4r5r6rZ_RhnServer__get_capabilitiespropertyrr=rr r r r r7s  r7cs"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)r8r9r<r:)superrAr)r r8r9r< __class__r r rs  zRegistrationRhnServer.__init__)NNN)r3r4r5r6r __classcell__r r rCr rAsrA)Zrhn.tbrZup2date_clientrrrrrr ImportErrorZ xmlrpc.clientZclientobjectrr7rAr r r r "s      x+