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@sBdZddlZddlZddlZddlZddlZddlmZddlm	Z
ddlmZddlm
Z
ddfZd	d
ddd
dddfZddfZidd
6Zidfd6ddddddfd6Ze
jZd„Zde
jfd„ƒYZdejejeƒfd„ƒYZdS( sG
Base utilities to build API operation managers and objects on top of.
iÿÿÿÿN(tparse(tbase(t
exceptions(tutilstasctdesctidtstatustsizetavailability_zonetnametbootablet
created_att	referencetdisplay_nametdata_timestamptbackupst
resource_typetevent_idt
resource_uuidt
message_leveltguaranteed_untilt
request_idtmessagescCs$y|jSWntk
r|SXdS(s‡
    Abstracts the common pattern of allowing both an object or an object's ID
    as a parameter when dealing with relationships.
    N(RtAttributeError(tobj((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pytgetid3s
tManagerc	Bs×eZdZdZd„Zed„ƒZddddd„Ze	dddddddd„Z
dd„Zdd„Zd„Z
ejd„ƒZd	„Zdd
„Zed„Zd„Zdd
„Zdd„ZRS(s„
    Managers interact with a particular type of API (servers, flavors, images,
    etc.) and provide CRUD operations for them.
    cCs
||_dS(N(tapi(tselfR((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt__init__EscCs
|jjS(N(Rtapi_version(R((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyRHscCs%d}|dkrg}n|rE|jjj|d|ƒ\}}n|jjj|ƒ\}}|dkrx|j}n||}t|tƒr¶y|d}Wq¶tk
r²q¶Xn|j	d|ddƒR|j	d|ddƒ3g|D]!}	|	rï|||	dt
ƒ^qï}
WdQXWdQX|rt|ƒ}|t|ƒ}|t|
ƒkrt||
| }t
j||ƒS||
}n
||
}d}d|kr|d}
|
rëx;|
D]0}d	|kr´d
|d	kr´|d}Pq´q´Wn|r|j|||d||ƒ}qnt
j||ƒS(Ntbodytvaluesthuman_idtmodetwtuuidtloadedt
volumes_linkstreltnextthref(tNoneRtclienttposttgettresource_classt
isinstancetdicttKeyErrortcompletion_cachetTruetinttlentcommon_basetListWithMetat_list(Rturltresponse_keyt	obj_classR tlimittitemstresptdatatrest	items_newtmarginR)R'tvolumes_link((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyR9LsL	$

7




c
Cs\|dkri}ni}
x-|jƒD]\}}|r(||
|<q(q(W|r^||
d<n|rq||
d<n|r|j||ƒ|
d<n;|r¯|j||ƒ|
d<n|rË|j|ƒ|
d<n|	rÞ|	|
d<ntj|
ƒ}
d}
|
r*t|
jƒdd	„ƒ}d
tj	|ƒ}
nd}|r?d}ndi|d
6|d6|
d6S(NtmarkerR=tsorttsort_keytsort_dirtoffsetttkeycSs|dS(Ni((tx((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt<lambda>«ss?%ss/details,/%(resource_type)s%(detail)s%(query_string)sRtdetailtquery_string(
R+R>t_format_sort_paramt_format_sort_key_paramt_format_sort_dir_paramRtunicode_key_value_to_stringtsortedRt	urlencode(RRtdetailedtsearch_optsRER=RGRHRFRItquery_paramsRKtvalROtparamsRN((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt_build_list_url„sB	

	
	c
Cs.|s
dSt|tjƒrGg|jdƒD]}|r,|^q,}ng}xÑ|D]É}t|tƒr€|d}|d}n|jdƒ\}}}|jƒ}|j||ƒ}|r|jƒ}|t	kröddj
t	ƒ}	t|	ƒ‚n|jd||fƒqT|j|ƒqTWdj
|ƒS(	sÝFormats the sort information into the sort query string parameter.

        The input sort information can be any of the following:
        - Comma-separated string in the form of <key[:dir]>
        - List of strings in the form of <key[:dir]>
        - List of either string keys, or tuples of (key, dir)

        For example, the following import sort values are valid:
        - 'key1:dir1,key2,key3:dir3'
        - ['key1:dir1', 'key2', 'key3:dir3']
        - [('key1', 'dir1'), 'key2', ('key3', dir3')]

        :param sort: Input sort information
        :returns: Formatted query string parameter or None
        :raise ValueError: If an invalid sort direction or invalid sort key is
                           given
        t,iit:s*sort_dir must be one of the following: %s.s, s%s:%sN(
R+R0tsixtstring_typestsplitttuplet	partitiontstripRQtSORT_DIR_VALUEStjoint
ValueErrortappend(
RRFRtst
sort_arrayt	sort_itemRGRHt_septmsg((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyRP¶s*+


cCsst}|r4tj|dƒ}|r4||7}q4n||krPtj||ƒSddj|ƒ}t|ƒ‚dS(Ns*sort_key must be one of the following: %s.s, (tSORT_KEY_VALUEStSORT_KEY_ADD_VALUESR.R+tSORT_KEY_MAPPINGSReRf(RRGRtvalid_sort_keyst
add_sort_keysRl((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyRQãscCs3|tkr|Sddjtƒ}t|ƒ‚dS(Ns*sort_dir must be one of the following: %s.s, (RdReRf(RRHRl((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyRRñs
ccsƒtjdddƒ}tjddƒ}tjddƒ}tj|jdƒ|jdƒƒjƒ}tjjtjj	||ƒƒ}ytj
|d	ƒWntk
r¬nX|jj
ƒ}	d
|	|jddƒf}
tjj	||
ƒ}d
|}yt||t||ƒƒWntk
r'nXz	dVWdt||dƒ}
|
r~|
jƒyt||ƒWq~tk
rzq~XnXdS(s†
        The completion cache store items that can be used for bash
        autocompletion, like UUIDs or human-friendly IDs.

        A resource listing will clear and repopulate the cache.

        A resource create will append to the cache.

        Delete is not handled because listings are assumed to be performed
        often enough to keep the cache reasonably up-to-date.
        tCINDERCLIENT_UUID_CACHE_DIRtdefaults~/.cinderclienttOS_USERNAMEtCINDER_USERNAMEtOS_URLt
CINDER_URLsutf-8iís%s-%s-cachet_t-s	_%s_cacheN(Rtenvthashlibtmd5tencodet	hexdigesttostpatht
expanduserRetmakedirstOSErrort__name__tlowertreplacetsetattrtopentIOErrortgetattrR+tclosetdelattrR(Rt
cache_typeR<R#tbase_dirtusernameR:t	uniqifiert	cache_dirtresourcetfilenameR€t
cache_attrtcache((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyR3ùs8
	!


	

cCs4t|d|dƒ}|r0|jd|ƒndS(Ns	_%s_caches%s
(RŠR+twrite(RRRYR•((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pytwrite_to_completion_cache4scCsa|jjj|ƒ\}}|rA|j|||dtd|ƒS|j||dtd|ƒSdS(NR&R?(RR,R.R/R4(RR:R;R?R ((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt_get9s
c
Ks°|jd|||jjj|d|ƒ\}}|rNtj|||ƒS|jd|jddƒA|jd|jddƒ|j|||d|ƒSWdQXWdQXdS(Ntmodify_body_for_createR R"R#taR%R?(t	run_hooksRR,R-R7tDictWithMetaR3R/(RR:R R;t
return_rawtkwargsR?((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt_createAs!cCs1|jjj|ƒ\}}tj||f|ƒS(N(RR,tdeleteR7t
TupleWithMeta(RR:R?R ((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt_deleteKscKsy|jd|||jjj|d||\}}|r]|j|||dtd|ƒS|pfi}tj||ƒS(Ntmodify_body_for_updateR R&R?(R›RR,tputR/R4R7Rœ(RR:R R;RžR?((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt_updateOs$cCsn|jjj|ƒ\}}|rTg||D]$}|r,|j||dtƒ^q,S|j||dtƒSdS(NR&(RR,tget_with_base_urlR/R4(RR:R;R?R RA((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt_get_with_base_url]s
0N(R„t
__module__t__doc__R+R/RtpropertyRR9R4R[RPRQRRt
contextlibtcontextmanagerR3R—R˜tFalseRŸR¢R¥R§(((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyR>s&	70-	;	
	tManagerWithFindcBs2eZdZejd„ƒZd„Zd„ZRS(sM
    Like a `Manager`, but with additional `find()`/`findall()` methods.
    cCsdS(N((R((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pytlistkscKsŠ|j|}t|ƒ}|dkrRd|jj|f}tjd|ƒ‚n4|dkrjtj‚n|dj|jƒ|dSdS(sÂ
        Find a single item with attributes matching ``**kwargs``.

        This isn't very efficient for search options which require the
        Python side filtering(e.g. 'human_id')
        isNo %s matching %s.i”iN(	tfindallR6R/R„RtNotFoundt
NoUniqueMatchtappend_request_idstrequest_ids(RRžtmatchestnum_matchesRl((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pytfindoscsãidd6}d|kr*|d|d<nd|krG|d|d<ntjgdƒ}|jƒ}|jd|ƒ}|j|jƒxU|D]M‰y0t‡fd†|DƒƒrÃ|jˆƒnWqŽt	k
rÚqŽqŽXqŽW|S(s¾
        Find all items with attributes matching ``**kwargs``.

        This isn't very efficient for search options which require the
        Python side filtering(e.g. 'human_id')
        itall_tenantsR
RRWc3s*|] \}}tˆ|ƒ|kVqdS(N(RŠ(t.0tattrtvalue(R(sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pys	<genexpr>ŸsN(
R7R8R+R>R¯R³R´tallRgR(RRžRWtfoundtsearchestlisting((RsF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyR°s"



(R„R¨R©tabctabstractmethodR¯R·R°(((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyR®fs	(R©RÀR«R{RR^tsix.moves.urllibRtcinderclient.apiclientRR7tcinderclientRRRdRmtSORT_MANAGEABLE_KEY_VALUESRoRntResourceRt
HookableMixinRtwith_metaclasstABCMetaR®(((sF/home/tvault/.virtenv/lib/python2.7/site-packages/cinderclient/base.pyt<module>s.

			ÿ)