Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
Size: Mime:
ó
³EYc@sdZddlmZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlm
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZejdƒZddlZddljjjZddlmZdd
lm Z ddl!Zddl"m#Z#yddl$m%Z%Wn!e&k
r•ddl'm%Z%nXyddl(Z(Wne&k
rÅddl)Z(nXdddgZ*dZ+dZ,dZ-ie-d6e,d6e+d6Z.dZ/x3dddfD]"Z0ej1e0e
j2dƒdƒqWd„Z3d„Z4d„Z5d„Z6d ej7fd!„ƒYZ8d"e9fd#„ƒYZ:e;e;e;e;e<e;e;e;e;d$de;e;e;e;e<d%e;e;e;e;e;e;d&„Z=d'„Z>d(„Z?d)„Z@d*„ZAd+„ZBd,„ZCdS(-sC
OpenStack Client interface. Handles the REST calls and responses.
iÿÿÿÿ(tprint_functionN(taccess(tadapter(tbase(tdiscover(tencodeutils(timportutils(tstrutilssosprofiler.web(tapi_versions(t
exceptions(t_(tsleeptv1tv2tv3tvolumev3tvolumev2tvolumet1t2t3sX-OpenStack-Request-IDs
/v[12]/\w+/?$t/cCsûtjtƒ}yštj|ƒ\}}}}}tj|d|ƒ}tj|j	ƒ}|d}	xB|	D]:}
d|
dkrjt
j|
dƒt
j|
dƒfSqjWWnKtj
k
rö}|jdtj|jƒƒt
jdƒt
jdƒfSXdS(	sÏQueries the server via the naked endpoint and gets version info.

    :param url: url of the cinder endpoint
    :returns: APIVersion object for min and max version supported by
              the server
    s://tversionss3.tversiontmin_versions9Error in server version query:%s
Returning APIVersion 2.0s2.0N(tloggingt	getLoggert__name__turlparseturlsplittrequeststgettjsontloadsttextRt
APIVersionR	tClientExceptiontwarningtsixt	text_typetmessage(turltloggertschemetnetloctpathtquerytfragtresponsetdataRRte((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytget_server_versionJs

	cCs@t|ƒ\}}tjj|ƒ}tt|ƒttjƒƒS(N(R3RR#t
get_stringtmintfloattMAX_VERSION(R)t
min_servert
max_servertmax_server_version((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt!get_highest_client_server_versionbsc	CsŒtj|ƒ\}}}}}|jdƒ}x"tD]}||kr4|dSq4Wtdƒi|d6djtƒd6}tj|ƒ‚dS(NRis<Invalid url: '%(url)s'. It must include one of: %(version)s.R)s, R(RRtsplitt_VALID_VERSIONSR
tjoinR	tUnsupportedVersion(	R)R+R,R-R.R/t
componentsRtmsg((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytget_volume_api_from_urlis
	cCsT|jjdƒ}|rP|jdi|jjd6|d6|jd6|d6ƒndS(Nsx-openstack-request-idsW%(method)s call to %(service_type)s for %(url)s used request id %(response_request_id)stmethodtservice_typeR)tresponse_request_id(theadersRtdebugtrequestRCR)(R*tresptservice_namet
request_id((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_log_request_idvs	t
SessionClientcBsŒeZd
Zd„Zd„Zd„Zd„Zd„Zd„Z	d„Z
d„Zd„Zd
d	„Z
ed
„ƒZd„Zd„ZRS(cOs†|jddƒ|_|jp'tjƒ|_|jddƒ|_|jddƒ|_tjt	ƒ|_
tt|ƒj
||ŽdS(Ntapi_versiontglobal_request_idtretriesi(tpoptNoneRNRR#RORPRRRt_loggertsuperRMt__init__(tselftargstkwargs((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRUƒscOsÓ|jd|jdiƒƒtj|d|jƒ|jdtƒ|jrf|djt|jƒn|jdt	ƒ}t
t|ƒjdt||Ž\}}|rÉ|j
dkrÉtj||ƒ‚n||fS(NRFt
authenticatedt	raise_exci(t
setdefaultRRtupdate_headersRNtFalseROt
REQ_ID_HEADERRQtTrueRTRMRHtstatus_codeR	t
from_response(RVRWRXRZRItbody((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRH‹s	cKs¯|jdtƒd}x’trª|d7}y|j|||SWqtjk
r¦}||jkss|jdkry‚nd|j}|jj|ƒt	|jƒqXqWdS(NRYiisRetrying after %s seconds.(
R[R_RHR	t	OverLimitRPtretry_afterRSRGR(RVR)RCRXtattemptstoverlimRA((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_cs_requestŸs	

cKs|j|d|S(NtGET(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyR®scKs|j|d|S(NtPOST(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytpost±scKs|j|d|S(NtPUT(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytput´scKs|j|d|S(NtDELETE(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytdelete·scCs0|jƒ}dj|jdƒd ƒd}|S(NRi(tget_endpointR>R<(RVtendpointtbase_url((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt
_get_base_urlºs cCs^yt|jƒƒ}WnAtjk
rY}tdƒtj|jƒ}tj|ƒ‚nX|S(Ns(Service catalog returned invalid url.
%s(RBRoR	R?R
R&R'R((RVRR2RA((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt$get_volume_api_version_from_endpoint¿s	cCs|j|ƒ|j|ƒS(N(t
invalidatet	get_token(RVtauth((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytauthenticateÉs
cCsJ|jp|jj}t|tjƒr:|j|jƒjStdƒ‚dS(Ns9There is no service catalog for this type of auth plugin.(Rvtsessiont
isinstanceRtBaseIdentityPlugint
get_accesstservice_catalogtAttributeError(RVRv((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyR|ÍscKs#|jƒ}|j||||S(N(RrRg(RVR)RCRXRq((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_cs_request_base_urlØs
cKs|j|d|S(NRh(R~(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytget_with_base_urlßsN(Rt
__module__RRRORURHRgRRjRlRnRrRsRwtpropertyR|R~R(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRM€s									
	t
HTTPClientcBsûeZdZdZdedddddddddddeddddddddd„Zd„Zd„Zd	„Z	d
„Z
d„Zd„Zd
„Z
d„Zd„Zd„Zed„Zd„Zd„Zd„Zd„Zd„Zd„ZRS(sX-Auth-TokensX-Subject-Tokenspython-cinderclientt	publicURLtkeystonetDefaultcCsÝ||_||_||_||_|p3tjƒ|_||_|rm|dkrm|rmtj	|ƒ‚n|rª|rª|dkrª|j
ƒ}|sªtjƒ‚qªn|r¿|jdƒnd|_d|_|
|_||_||_|
|_||_|r|jdƒn||_t|p(dƒ|_||_|jpFd|_d|_|	|_||_||_||_||_|r”t |_!n|r¦||_!n	t"|_!||_#||_$|pÓt%j&t'ƒ|_(dS(NR„RRi()tusertpasswordt	projectidt	tenant_idRR#RNROR	tAuthSystemNotFoundtget_auth_urltEndpointNotFoundtrstripRRtauth_urlRtregion_namet
endpoint_typeRDRJtvolume_service_namet
bypass_urltintRPthttp_log_debugtmanagement_urlt
auth_tokentproxy_tokentproxy_tenant_idttimeouttuser_domain_nametproject_domain_nameR]tverify_certR_tauth_systemtauth_pluginRRRRS(RVR†R‡RˆRŽtinsecureR™R‰R˜R—RRRDRJR‘R’RPR”tcacertRRžRNR*RšR›RO((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRUèsJ
																					cCsp|tjkrP|jdƒ}tj|ƒ}|jƒ}tj|ƒd|fStj|ƒtj|ƒfSdS(Nsutf-8s{SHA1}%s(R‚tSENSITIVE_HEADERStencodethashlibtsha1t	hexdigestRtsafe_decode(RVtnametvaluetencodedthashedtdigested((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_safe_header!scCsì|js
dSdg}x?|D]7}|dkrC|jd|ƒq|jd|ƒqWx=|dD]1}d	|j||d|ƒ}|j|ƒqcWd
|krËtj|d
ƒ}|jd|ƒn|jjdd
j|ƒƒdS(Nscurl -iRhRiRmRks -X %ss %sRFs-H '%s: %s'R1s -d '%s's	
REQ: %s
t(sGETsPOSTsDELETEsPUT(R”tappendR¬Rt
mask_passwordRSRGR>(RVRWRXtstring_partstelementtheaderR1((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pythttp_log_req+s		
cCsa|js
dS|jjd|j|jtj|jƒƒ|jpG|j	}t
|j||ƒdS(NsRESP: [%s] %s
RESP BODY: %s
(R”RSRGR`RFRR¯R"RJRDRL(RVRItservice((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt
http_log_resp@s		cKs­|jd|jdiƒƒ|j|dd<d|dd<tr[|djtjƒƒnd|kr”d|dd<tj|jdƒƒ|d<nt	j
|d|jƒ|jrÎ|djt
|jƒn|jrí|jd|jƒn|j||f|ƒtj||d	|j|}|j|ƒd}|jrytj|jƒ}Wqtk
r{}|jjd
|ƒqXn|jdkr£tj||ƒ‚n||fS(NRFs
User-Agentsapplication/jsontAcceptRbsContent-TypeR1R™tverifys!Load http response text error: %si(R[Rt
USER_AGENTtosprofiler_webtupdatetget_trace_id_headersR tdumpsRQRR\RNROR^R™R³RRHRœRµRRR"R!t
ValueErrorRSRGR`R	Ra(RVR)RCRXRIRbR2((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRHMs:			
	cKsÚd}d}d}xÁtrÕ|d7}|js9|jrF|jƒn|j|jdiƒd<|jr||j|dd<nyK|j|jƒs¡|j|}n|j|||\}}||fSWnÔtj	k
rô}	||j
krž‚qžnªtjk
rP|dkr‚n|jj
dƒd|_|_|d8}|d7}qnNtjk
r¶}
||j
ks€|
jdkr†‚nd|
j}|jj
|ƒt|
jƒqnètjk
r}	||j
krÝ‚nd|	jko÷d	knrÿqž‚n™tjjk
r\}	|jj
d
|	ƒ||j
kržd|	}tj|ƒ‚qžnBtjjk
r}	|jj
d|	ƒ||j
krž‚qžnX|jj
d
||j
|fƒt|ƒ|d9}qWdS(NiiRFsX-Auth-TokensX-Auth-Project-IdsUnauthorized, reauthenticating.sRetrying after %s seconds.iôiWsConnection error: %ss"Unable to establish connection: %ssTimeout error: %ss0Failed attempt(%s of %s), retrying in %s secondsi(R_R•R–RwR[Rˆt
startswithRHR	t
BadRequestRPtUnauthorizedRSRGRRRcRdRR$tcodeRtConnectionErrortTimeout(RVR)RCRXt
auth_attemptsRetbackoffRIRbR2RfRA((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRgssj	

		





	
cKs|j|d|S(NRh(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyR¬scKs|j|d|S(NRi(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRj¯scKs|j|d|S(NRk(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRl²scKs|j|d|S(NRm(Rg(RVR)RX((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRnµscCsŒyt|jƒ}Wnrtjk
r‡}|j|jkrYtdƒtj|jƒ}ntdƒtj|jƒ}tj|ƒ‚nX|S(Ns^Invalid url was specified in --os-endpoint or environment variable CINDERCLIENT_BYPASS_URL.
%ss(Service catalog returned invalid url.
%s(	RBR•R	R?R’R
R&R'R((RVRR2RA((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRs¸s		c	CsF|jdks|jdkry˜||_tjd|d|ƒ|_|jj|_|rl|jj|_n|jjd|jd|j	d|j
d|jƒ}|jd	ƒ|_
dSWqBtjk
rÙtd
ƒ‚qBtk
rõtjƒ‚qBtjk
rtdƒ‚qBXn)|jdkr0|d
Stj||ƒ‚dS(sÇSee what the auth service told us and process the response.
        We may get redirected to another site, fail or actually get
        back a service catalog with a token and our endpoints.
        iÈiÉRIRbRt	interfaceRDRJRsAFound more than one valid endpoint. Use a more restrictive filters5Could not find any suitable endpoint. Correct region?i1tlocationN(R`RŽRtcreatetauth_refR|R–turl_forRRRDRJRR•RRR	tAmbiguousEndpointstprintR½tAuthorizationFailureRŒRa(RVR)RIRbt
extract_tokenR•((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_extract_service_catalogÈs2				



cCs}dj|dd|j|jfgƒ}|jjd|ƒ|j|ddi|jd6ƒ\}}|j|||dtƒS(	sµWe have a token, but don't know the final endpoint for
        the region. We have to go back to the auth service and
        ask again. This request requires an admin-level token
        to work. The proxy token supplied could be from a low-level enduser.

        We can't get this from the keystone service endpoint, we have to use
        the admin endpoint.

        This will overwrite our admin token with the user token.
        Rttokenss%s?belongsTo=%ssUsing Endpoint URL: %sRhRFsX-Auth-TokenRÎ(	R>R—R˜RSRGRHR–RÏR](RVR)RIRb((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_fetch_endpoints_from_authðs
cCs
||_dS(N(R•(RVR)((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytset_management_urlsc
Cstj|jƒ}|\}}}}}|j}|dkrEd}n|jdƒ}x=|D]5}	t|	ƒdkr[|	ddkr[|	|_Pq[q[W|jd|ddƒ}
tj	||
|||fƒ}|j}|jdksó|jdkrox5|r*|j
s|j
d	krö|j|ƒ}qöqöW|jrÕ|j
rP|j|j
ƒn
|j|ƒ|j|_qÕnfy x|r|j|ƒ}quWWnCtjk
rÔ|jdƒdkrÄ|d
}n|j|ƒnX|j
rñ|j|j
ƒn|jstjdƒ‚ndS(
NiPRitvs:%diŠsv2.0RR„s/v2.0s
Cinder Client(iŠ(RRRŽtportRRR<tlenRtreplacet
urlunsplitRt_v2_or_v3_authR—R’RÒRÑR–t_v1_authR	RÍtfindR•RÀ(
RVtmagic_tupleR+R,R-R.R/RÔt
path_partstpartt
new_netloct	admin_urlRŽ((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRwsD		
"					
	
		cCs
|jrtjƒ‚ni|jd6|jd6}|jrK|j|d<n|j|dd|ƒ\}}|jd
krÝy<d}|j|j	d	ƒ|_
|jd
|_||_Wq	t
tfk
rÙtjƒ‚q	Xn,|jdkr÷|jdStj||ƒ‚dS(NsX-Auth-Users
X-Auth-KeysX-Auth-Project-IdRhRFiÈiÌsx-server-management-urlRsx-auth-tokeni1RÇ(iÈiÌ(R—R	tNoTokenLookupExceptionR†R‡RˆRHR`RFRR•R–RŽtKeyErrort	TypeErrorRÍRa(RVR)RFRIRbtmgmt_header((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRÙ=s$	

	
cCs?|jdkrÉiiidgd6iii|jd6d6|jd6|jd6d6d6d6d6}iii|jd6d6d	6}|jr›|j|d	d<n|jr¸|j|d	d
<n||dd<nbiii|jd6|jd6d
6d6}|jr|j|dd<n|jr+|j|dd<n|j||ƒdS(s)Authenticate against a v2.0 auth service.RR‡tmethodsR§tdomainR†tidentityRvtprojecttidtscopetusernametpasswordCredentialst
tenantNamettenantIdN(RRšR†R‡R›RˆR‰t
_authenticate(RVR)RbRé((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRØTs.

		
		cCs]|jdkr|d}n
|d}|j|dd|dtƒ\}}|j|||ƒS(s-Authenticate and extract the service catalog.Rs/auth/tokenss/tokensRiRbtallow_redirects(RRHR_RÏ(RVR)Rbt	token_urlRI((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRîss

(sX-Auth-TokensX-Subject-TokenN(RR€R¡R¸RRR]RUR¬R³RµRHRgRRjRlRnRsR_RÏRÑRÒRwRÙRØRî(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyR‚ãs:			0	
		
	&	9					(			5		RƒR„c+Ksò|rZ|jddƒ|jd|	ƒtd|d|d|
d|d|d	|d
||S|jdƒ}t||d|d
|d|d|d|d|d|d|d|	d|
d|d|d|
d	|d|d|d|d|d|d
|ƒSdS(Nt
user_agentspython-cinderclientRÆRxRvRDRJRRPRNR*RˆRŽRŸR™R‰R—R˜RR‘R’R”R RRž(R[RMRR‚(RêR‡t
project_idRŽRŸR™R˜R—RRRDRJR‘R’RPR”RRžR R‰RxRvRNRXR*((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_construct_http_clientƒsDcCsot|tjƒs$tj|ƒ}n
tj|ƒ|jƒrUtjtdƒƒ‚n|t	j
d|jƒfS(Ns+The version should be explicit, not latest.scinderclient.v%s.client.Client(RyRR#tget_api_versiontcheck_major_versiont	is_latestR	R?R
Rtimport_classt	ver_major(R((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt_get_client_class_and_version¹s
	cCs~idd6dd6dd6}y|t|ƒ}Wn?ttfk
rpd|dj|ƒf}tj|ƒ‚nXtj|ƒS(	Nscinderclient.v1.client.ClientRscinderclient.v2.client.ClientRscinderclient.v3.client.ClientRs/Invalid client version '%s'. must be one of: %ss, (tstrRáR½R>R	R?RR÷(Rtversion_maptclient_pathRA((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytget_client_classÅs
cCsXg}xKtjtƒt|ƒƒD].\}}tjj||ƒ}|j|ƒq"W|S(N(t	itertoolstchaint_discover_via_python_patht_discover_via_contrib_pathtcinderclientt	extensiont	ExtensionR®(Rt
extensionsR§tmoduleR((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytdiscover_extensionsÕs	ccsqxjtjƒD]\\}}}|jdƒr
t|dƒsL|j|ƒ}n|j|ƒ}||fVq
q
WdS(Ntcinderclient_exttload_module(tpkgutiltiter_modulestendswiththasattrtfind_moduleR	(t
module_loaderR§tispkgR((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRásccsÄtjjtjjtƒƒ}d|jddƒ}tjj||dƒ}tjj|dƒ}x\tj|ƒD]K}tjj	|ƒd }|dkrŸqqnt
j||ƒ}||fVqqWdS(Nsv%st.R
tcontribs*.pyiýÿÿÿRU(tosR-tdirnametabspatht__file__RÖR>tglobtiglobtbasenametimptload_source(Rtmodule_pathtversion_strtext_pathtext_globR§R((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyRìscOs%t|ƒ\}}|d|||ŽS(sÞInitialize client object based on given version.

    HOW-TO:
    The simplest way to create a client instance is initialization with your
    credentials::

    .. code-block:: python

        >>> from cinderclient import client
        >>> cinder = client.Client(VERSION, USERNAME, PASSWORD,
        ...                      PROJECT_NAME, AUTH_URL)

    Here ``VERSION`` can be a string or
    ``cinderclient.api_versions.APIVersion`` obj. If you prefer string value,
    you can use ``1`` (deprecated now), ``2``, or ``3.X``
    (where X is a microversion).


    Alternatively, you can create a client instance using the keystoneclient
    session API. See "The cinderclient Python API" page at
    python-cinderclient's doc.
    RN(Rù(RRWRXRNtclient_class((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pytClientüs	(Dt__doc__t
__future__RRR£RRþRRR
treR&t
keystoneauth1RRtkeystoneauth1.identityRRt
oslo_utilsRRRt
try_importR¹Rtsix.moves.urllib.parsetmovesturllibtparseRRRR	tcinderclient.extensiontcinderclient._i18nR
teventletRtImportErrorttimeR t
simplejsonR=tV3_SERVICE_TYPEtV2_SERVICE_TYPEtV1_SERVICE_TYPEt
SERVICE_TYPESR^tsvctadd_catalog_discover_hacktcompileR3R;RBRLtLegacyJsonAdapterRMtobjectR‚RRR]RóRùRýRRRR!(((sH/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/client.pyt<module>s†



 			
	
cÿ¡		+