a mic,@s@ddlZddlZddlZddlZddlZddlZddlmZddlm Z ddlm Z ddlm Z ddl m Z z$ddlZddlZddlZddlZWnBeyddlmZddlmZddlmZddlmZYn0ddlZejddd Zeed seje_ejZd d ZGd dde j Z!GdddZ"dddZ#ddZ$dS)N)config) up2dateLog) up2dateErrors) up2dateUtils)rpclibzrhn-client-toolsT)fallbackugettextcCs t|dSN)print)msgr Iz)RetryServer._request1..z>Errors occurred while trying to connect to the remote servers.z!An error occurred talking to %s: z%s %s rzTrying the next serverURL: %s )httphttpsz%Redirected to unsupported protocol %sz/RPC2)!rinitLoglogsuperZ_ServerProxy__request xmlrpclibZFaulthttplibZ BadStatusLinelog_mer_sysexitrnextresetServerIndex_error_messagesjoinitemsZ_hostexc_infoserverurlparseurlsplitZ_handlerlowerrZInvalidRedirectionErrorZ _orig_handlerZ_typeZ_uriZ_allow_redirect) rZ methodnameparamsretr-Zerror_combined_msgr Z exception_msgZ parse_restyp __class__r r _request10sT              zRetryServer._request1cCstj|j|Sr )xmlrpcclientZ_Methodr6)rnamer r r __getattr__pszRetryServer.__getattr__)__name__ __module__ __qualname__r)rr6r: __classcell__r r r4r r)s @rc@s0eZdZgfddZddZddZddZd S) ServerListcCs||_d|_dSNr)rindex)rZ serverlistr r r __init__wszServerList.__init__cCs|j|j|_|jSr )rrAZ serverurlrr r r r-{szServerList.servercCs(|jd|_|jt|jkr dS|S)Nr)rAlenrr-rCr r r r's zServerList.nextcCs d|_dSr@)rArCr r r r(szServerList.resetServerIndexN)r;r<r=rBr-r'r(r r r r r?vs r?FcCsXt}t}ttjj|d}t|t r:t d|p@d}|drTt }nd}|stj |d}tj|d} | r| D]} | |vr||| q|n|}t|} d} d} |dr|dpd} |dpd} t| || | |d }|| |d td d |jjD}|rTt|tjsJd td|f}|d|t ||||S)NZ sslCACertz SSL certificate must be a stringz'/usr/share/rhn/CLN-ORG-TRUSTED-SSL-CERTZ enableProxy) registrationZenableProxyAuth proxyUser proxyPassword)proxyusernamepasswordtimeoutzX-Up2date-VersioncSs"g|]}t|ddkrdqS)rrT)r.)rir r r rrzgetServer..z%s: %sz ERROR: can not find RHNS CA filez%s)rrrinitUp2dateConfigurllib3Zdisable_warnings exceptionsZSubjectAltNameWarning isinstancelistrZValidationErrorZgetProxySettingZ getServerURLZgetFallbackServerURLappendr?rr-rZ add_headerrversionrosaccessR_OKr$r#ZSSLCertificateFileNotFoundZset_trusted_cert)ZserverOverriderKrErcfgcaZ rhns_ca_certZ proxyHostZ serverUrlsZ fallbackURLurlrrFrGsZneed_car r r r getServersV          r[c Ost}|d|jdt}d}d}zt|d}WntyRd}Yn0|dkr`d}d}d}z||i|}Wntyt t dYnt j y.} zv|dtd|f||krtd} t| jdkrt | jdnt | jdnd}WYd} ~ n*d} ~ 0tjyVtdt dYntjytd} d } | d | j} | d | j} | d | j} || t | Yntjy0td} |d | j|f| jdkr|d| j|dt !| j"\} } d} t#| dkrT|d| ddl$m%}|&t#| dkr||t dt | jt#| dkr t'|dt'gkr|d}n|d}t'|t'gkrd|d|d|d|df}n|}d|| f} || t (| | s,||kr(t | jnd}Yn tj)yNt dYn0|dkr`qnd}|r|t*+d|d}||kr`t dq`|S)NzrpcServer: Calling XMLRPC %sZ _Method__namerZnetworkRetriesrzConnection aborted by the userz(A socket error occurred: %s, attempt #%szhttplib.IncompleteReadz An HTTP error occurred: zURL: %s zStatus Code: %s zError Message: %s z,A protocol error occurred: %s , attempt #%s,izCould not find URL, %sz)Check server name and/or URL, then retry "z'Auth token timeout occurred errmsg: %s) up2dateAuth3z.Server has refused connection due to high loadz %s-%s-%s.%srzFile Not Found: %s %sz Broken response from the server.z0The data returned from the server was incomplete),rrZ log_debug__dict__rrMint ValueErrorKeyboardInterruptrZCommunicationErrorr$socketrr#r%r,rDargsr"ZIncompleteReadr urllib2Z HTTPErrorfilenamecoder r!Z ProtocolErrorerrmsgZerrcoderYrZ reportErrorZheadersabsup2date_clientr]ZupdateLoginInfotypeFileNotFoundErrorZ ResponseErrortimesleep)methodrgkwargsrrWr2Z attempt_countZattemptsZfailureer ZerrCodeZerrMsgresetr]pkgZpkgNamer r r doCalls              "       rw)NNF)%rTr%rfrpZ xmlrpc.clientr7rNrmrrrrZrhnrr"rhr.r! ImportErrorZ http.clientr8Zurllib.requestZrequest urllib.parseparsegettext translationthasattrrr$rZServerrr?r[rwr r r r sB           M F