????

Your IP : 3.14.251.36


Current Path : /lib/python3.6/site-packages/up2date_client/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/up2date_client/__pycache__/capabilities.cpython-36.pyc

3

@4�f�@s�ddlmZddlmZyddlZWnek
r@ddlZYnXddlZejddd�Ze	ed�sjeje_
ej
Zdd	idd
idd
idd
idd
idd
idd
idd
id�Zdd
�Z
Gdd�dej�ZdS)�)�config)�
up2dateErrorsNzrhn-client-toolsT)Zfallback�ugettext�versionZ21�1)�caneatCheese�supportsAutoUp2dateOptionzregistration.finish_messagez xmlrpc.packages.extended_profilezregistration.delta_packagesz registration.update_contact_infoz$registration.extended_update_supportzregistration.smbiosc	Cs�d}|jd�}g}x�|D]�}ydd�|jdd�D�\}}Wntk
rPwYnX|jdd�\}}|d
dkrvtd�|dd�}||d	�}|j||f�qW|S)N�,cSsg|]}|j��qS�)�strip)�.0�ir
r
�"/usr/lib/python3.6/capabilities.py�
<listcomp>#szparseCap.<locals>.<listcomp>�=��(�)z2something broke in parsing the capabilited headers)r�value���r)�split�
ValueError�print�append)	Z	capstringrZcaps�capslist�capZkey_version�keyr�datar
r
r�parseCaps


rc@sNeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	ddd�Z
dS)�CapabilitiescCs&tjj|�i|_t|_tj�|_dS)N)�UserDict�__init__�missingCaps�
neededCapsrZinitUp2dateConfig�cfg)�selfr
r
rr!:szCapabilities.__init__cCsJxD|j�D]8\}}|j�dkr
t|�}x|D]\}}||j|<q,Wq
WdS)Nzx-rhn-server-capability)�items�lowerrr)r%Zheadersr�valrrrr
r
r�populateCs
zCapabilities.populatecCsx|jd�}|dkrF|jd�}|d}|d}tt|�t|�d�}|S|jd�}t|�dkrndd�|D�}|St|�gS)N�-rr�:cSsg|]}t|��qSr
)�int)r�ar
r
rrWsz0Capabilities.parseCapVersion.<locals>.<listcomp>)�findr�ranger,�len)r%Z
versionString�index�rng�start�endZversionsZversr
r
r�parseCapVersionKs


zCapabilities.parseCapVersioncCsZ||jkr"td�|}d|j|<n4|j|}t|d�|j|d�krV|j||j|<dS)NzXThis client requires the server to support %s, which the current server does not supportr)r�_r"r,r5r#)r%rZcapvalueZerrstrrr
r
r�validateCap\s

zCapabilities.validateCapcCs2x$|jj�D]}|j||j|�qW|j�dS)N)r#�keysr7�workaroundMissingCaps)r%rr
r
r�validatehszCapabilities.validatecCs,||jkrd|j|<|j|=n
d|j|<dS)Nrr)�tmpCapsr$)r%rZ
configItemr
r
r�	setConfigns


zCapabilities.setConfigc	CsZ|j|_d}||jkr |j|=ndddddddd	�}x |j�D]}|j|||�q>Wg}g}t|j�r�x>|jD]4}|j|}|dkr�|j||f�qp|j||f�qpWd
}g}t|��rxH|D]@\}}|d||d|j|df}|j|||j|d
��q�Wt|��r@x0|D](\}}|d|}|j||d
d
���qWt|��rVtj||��dS)NrrZsupportsFinishMessageZsupportsUpdateContactInfoZsupportsDeltaPackagesZsupportsExtendedPackageProfileZsupportsEUSZsupportsSMBIOS)rzregistration.finish_messagez registration.update_contact_infozregistration.delta_packagesz xmlrpc.packages.extended_profilez$registration.extended_update_supportzregistration.smbios�z3Needs %s of version: %s but server has version: %s
r)ZcapName�capInfoZ
serverVersionz5Needs %s but server does not support that capability
)	r"r;r8r<r0rrrZServerCapabilityError)	r%rZ
capsConfigMapr"ZwrongVersionCapsrr>Z	errStringZ	errorListr
r
rr9usF

	




z"Capabilities.workaroundMissingCapsNcCsR|dkst|�j�st�||jkr&dS|rN|j|}t|�|j|d�krNdSdS)a�Checks if the server supports a capability and optionally a version.
        Returns True or False.

        This complements the neededCaps mechanism provided by this module.
        Using hasCapability makes it easier to do something only if the server
        supports it or to put workaround code in the user of this class. The
        neededCaps mechanism makes it easier to put workaround code in this
        module, which makes sense if it is to be shared.

        'capability' should be a string such as 'registration.foobar'. It can
        be a capability in 'neededCaps' above or one that isn't there. 'version'
        can be a string (where isdigit() is True) or an int.

        NFrT)�str�isdigit�AssertionErrorrr,r5)r%Z
capabilityrrr
r
r�
hasCapability�s

zCapabilities.hasCapability)N)�__name__�
__module__�__qualname__r!r)r5r7r:r<r9rBr
r
r
rr9s	<r)Zup2date_clientrrr �ImportError�collections�gettextZtranslation�t�hasattrrr6r#rrr
r
r
r�<module>s(