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    
idna / lib / python2.7 / site-packages / nova / api / openstack / __init__.pyc
Size: Mime:
ó
±EYc@sdZddlmZddlZddlZddlZddlZddl	Zddl
mZddlZ
ddlmZddlmZddlmZddlmZdd	l
mZdd
l
mZddl
mZejeƒZe
jjZdejfd„ƒYZd
ejfd„ƒYZdejfd„ƒYZdefd„ƒYZ defd„ƒYZ!dej"fd„ƒYZ#dS(s0
WSGI middleware for OpenStack API controllers.
iÿÿÿÿ(tlogN(twsgi(t_LE(t_LI(t_LW(t	translate(t
notifications(tutilstFaultWrappercBsMeZdZiZed„ƒZd„Zejj	de
jƒd„ƒZRS(s?Calls down the middleware stack, making exceptions into faults.cCsXtjs<x0tjtjjƒD]}|tj|j<qWntjj|tjj	ƒƒS(N(
Rt_status_to_typeRtwalk_class_hierarchytwebobtexct	HTTPErrortcodetgettHTTPInternalServerError(tstatustclazz((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pytstatus_to_type0s
		c
Cstjtdƒtj|ƒƒt|dtƒ}t|ddƒ}t|ddƒ}|dkrjd}ntd|j	d|ƒ}tj
tdƒ|ƒ|j|ƒ}|r¹||_
n|rù|jƒ}t|j|ƒ}	d	|jj|	f|_ntj|j	||ƒtj|ƒS(
NsCaught error: %stsafetheadersRiôturlRs%%(url)s returned with HTTP %(status)ds%s: %s(tLOGt	exceptionRtsixt	text_typetgetattrtFalsetNonetdictRtinfoRRRtbest_match_languageRtmessaget	__class__t__name__texplanationRtsend_api_faultRtFault(
tselftinnertreqRRRtmsg_dicttoutertuser_localet	inner_msg((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt_error8s$	tRequestClasscCs;y|j|jƒSWn tk
r6}|j||ƒSXdS(N(tget_responsetapplicationt	ExceptionR.(R'R)tex((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt__call__Vs(
R#t
__module__t__doc__R	tstaticmethodRR.RtdectwsgifyRtRequestR4(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR+s
	tLegacyV2CompatibleWrappercBs;eZd„Zd„Zejjdejƒd„ƒZ	RS(cCsHtj|jkr"|jtj=ntj|jkrD|jtj=n|S(s©For keeping same behavior with v2 API, ignores microversions
        HTTP headers X-OpenStack-Nova-API-Version and OpenStack-API-Version
        in the request.
        (RtAPI_VERSION_REQUEST_HEADERRt!LEGACY_API_VERSION_REQUEST_HEADER(R'R)((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt_filter_request_headers`s
cCsítj|jkr"|jtj=ntj|jkrD|jtj=nd|jkré|jdjdƒ}g}xK|D]C}|jƒ}|tjksv|tjkr¬qvn|j|ƒqvW|rÜdj|ƒ|jd<qé|jd=n|S(s†For keeping same behavior with v2 API, filter out microversions
        HTTP header and microversions field in header 'Vary'.
        tVaryt,(RR<RR=tsplittstriptappendtjoin(R'tresponsetvary_headerst
filtered_varytvary((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt_filter_response_headersls"

R/cCs8|jƒ|j|ƒ}|j|jƒ}|j|ƒS(N(t
set_legacy_v2R>R0R1RI(R'R)RE((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR4…s
(
R#R5R>RIRR8R9RR:R4(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR;^s		t	APIMappercBs eZddd„Zd„ZRS(cCsF|dkr0|jd|ƒ}|d|dfStjj|||ƒS(Ntii(t_matchtroutestMappert
routematch(R'Rtenvirontresult((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRPŽscOsJ|jdiƒ|djdƒs4d|dd<ntjj|||ŽS(Ntrequirementstformatsjson|xml(t
setdefaultRRNROtconnect(R'targstkargs((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRV”sN(R#R5RRPRV(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRKst
ProjectMappercBseZd„ZRS(c	Ksûd}tjjr!tjj}nd|}d|krHd||d<n5|d}|d}|d}d|||f|d<tjj||||d|kr¬|d=n2|d}|d}|d}d	||f|d<tjj||||dS(
Ns[0-9a-f\-]+s{project_id:%s}tparent_resources%s/tpath_prefixtcollection_nametmember_names%s/%s/:%s_ids	%s/:%s_id(tCONFt	osapi_v21tproject_id_regexRNROtresource(	R'R]R\tkwargsR`tproject_id_tokenRZtp_collectiontp_member((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRaŸs8



	



(R#R5Ra(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRYžstPlainMappercBseZd„ZRS(cKs^d|krA|d}|d}|d}d||f|d<ntjj||||dS(NRZR\R]s	%s/:%s_idR[(RNRORa(R'R]R\RbRZRdRe((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRaÈs


(R#R5Ra(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRfÇstAPIRouterV21cBsteZdZed„ƒZed„ƒZd
d„Zd„Z	d„Z
ed„ƒZd„Z
d„Zd	„ZRS(s\Routes requests on the OpenStack v2.1 API to the appropriate controller
    and method.
    cKs|ƒS(sASimple paste factory, :class:`nova.wsgi.Router` doesn't have one.((tclst
global_configtlocal_config((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pytfactoryØscCsdS(Nsnova.api.v21.extensions((((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pytapi_extension_namespaceÝscs҇fd†}tjjdˆjƒd|dtdiˆjd6ƒˆ_tƒ}iˆ_t	ˆjƒrˆj
|ƒˆjjˆjƒnt
jtdƒtˆjjƒjƒƒƒttˆƒj|ƒdS(Ncs
ˆj|ƒS(N(t_register_extension(text(R'(sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt_check_load_extensionâst	namespacet
check_functinvoke_on_loadtinvoke_kwdstextension_infosLoaded extensions: %s(t	stevedoretenabledtEnabledExtensionManagerRltTruetloaded_extension_infotapi_extension_managerRYt	resourcestlistt"_register_resources_check_inheritstmapt_register_controllersRRRtsortedtget_extensionstkeystsuperRgt__init__(R't	init_onlyRotmapper((R'sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR„ás		
cCs%x|D]}|j||ƒqWdS(N(t_register_resources(R'text_listR†Rn((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt_register_resources_listûs
cCs…g}g}xR|jD]G}x>|jjƒD] }|jr,|j|ƒPq,q,W|j|ƒqW|j||ƒ|j||ƒdS(N(Rztobjt
get_resourcestinheritsRCR‰(R'R†text_has_inheritstext_no_inheritsRnRa((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR}ÿs	
cCs
tƒ‚dS(N(tNotImplementedError(R'((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRyscCs
tƒ‚dS(N(R(R'Rn((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRmsc	Cs;|j}tjd|jƒx|jƒD]
}tjd|jƒd}|jr|jj|jƒ}|j	s|j	|_	qnt
j|j	d|ƒ}||j|j<td|d|j
d|jƒ}|jrã|j|d<n|jrø|j}n	|j}|j||j||jr)|j||ƒq)q)WdS(	s™Register resources defined by the extensions

        Extensions define what resources they want to add through a
        get_resources function
        s!Running _register_resources on %ssExtended resource: %sRŒt
controllert
collectiontmemberRZN(RŠRtdebugR‹R‘RRŒR{RRRtResourceV21Rtcollection_actionstmember_actionstparentR]Ratcustom_routes_fn(	R'RnR†thandlerRaRŒt
wsgi_resourceRXR]((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR‡s2									cCsÓ|j}tjd|jƒx°|jƒD]¢}|jj}|j}|j}||jkr†tj	t
dƒi|d6|d6ƒq)ntjdi|d6|d6ƒ|j|}|j|ƒ|j|ƒq)WdS(s§Register controllers defined by the extensions

        Extensions define what resources they want to add through
        a get_controller_extensions function
        s#Running _register_controllers on %ssOExtension %(ext_name)s: Cannot extend resource %(collection)s: No such resourcetext_nameR‘s9Extension %(ext_name)s extending resource: %(collection)sN(
RŠRR“tget_controller_extensionst	extensiontnameR‘RR{twarningRtregister_actionstregister_extensions(R'RnR™RR›R‘RRa((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyR?s				

N(R#R5R6tclassmethodRkR7RlRR„R‰R}tpropertyRyRmR‡R(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyRgÓs				*($R6toslo_logRtloggingRNRRut	webob.decRt	webob.exctnova.api.openstackRt	nova.conftnovat	nova.i18nRRRRRRt	base_wsgit	getLoggerR#RtconfR^t
MiddlewareRR;RORKRYRftRouterRg(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/api/openstack/__init__.pyt<module>s.3/)