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    
contego / home / tvault / .virtenv / lib / python2.7 / site-packages / nova / block_device.pyc
Size: Mime:
ó
±EYc@sÞddlZddlmZddlmZddlZddlZddlm	Z	ddl
mZddlmZddl
mZejjZejeƒZdZid	d
6dd6ed
6dd6ZeddddddddgƒZedddddddddddddddgƒZed d!gƒZed"d#d$d%gƒZeddddgƒZed&gƒZeeeBZd'efd(„ƒYZd)„Z d*d+„Z!dd,„Z#d-„Z$d.„Z%d/de&d0„Z'd1„Z(d2„Z)d3„Z*ej+d4ƒZ,d5„Z-d6„Z.d7„Z/d8„Z0d9„Z1d:„Z2e&d;„Z3d<„Z4ej+d=ƒZ5d>„Z6d?„Z7ej+d@ƒZ8dA„Z9ej+dBƒZ:dC„Z;dD„Z<dE„Z=dF„Z>dG„Z?dH„Z@dI„ZAdS(JiÿÿÿÿN(tlog(tstrutils(t	exception(t_(tutils(tdrivers	/dev/sda1tsda1tamitsda2t
ephemeral0troottsda3tswaptdevice_nametdelete_on_terminationtvirtual_nametsnapshot_idt	volume_idtvolume_sizet	no_devicetconnection_infotsource_typetdestination_typetguest_formattdevice_typetdisk_bust
boot_indextimage_idttagtidt
instance_uuidt
created_att
updated_att
deleted_attdeletedtuuidtBlockDeviceDictcBsueZdZeZeeBZedgƒZ	ddd„Zd„Ze
d„ƒZe
d„ƒZd„Zd„ZRS(	s*Represents a Block Device Mapping in Nova.RcKsÅtt|ƒjƒ|pi}|j|ƒ|p8tƒ}|j|ƒ|jdƒrnt|dƒ|d<nt|jdƒƒ|d<|jd„|j	|Dƒƒ|jt
tj|ƒƒƒdS(NR
RcSsi|]}d|“qS(N(tNone(t.0tfield((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys
<dictcomp>[s	(
tsuperR$t__init__tupdatetsett	_validatetgettprepend_devtboolt_fieldstlisttsixt	iteritems(tselftbdm_dicttdo_not_defaulttkwargs((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyR)Ns

cCsNtd„tj|ƒDƒƒ}||j|jBksPtjdtdƒƒ‚n|jdƒrcdS|j	rž||j	@|j	kržtjdtdƒƒ‚nd|krÄt
j|dƒ|d<n|jdƒdk	rêt
|dƒnt|ƒ|jd	ƒrJyt|d	ƒ|d	<WqJtk
rFtjdtd
ƒƒ‚qJXndS(sBasic data format validations.css|]\}}|VqdS(N((R&tkeyR((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys	<genexpr>`stdetailssSome fields are invalid.RNs Some required fields are missingRR
RsBoot index is invalid.(R+R2R3R0t_db_only_fieldsRtInvalidBDMFormatRR-t_required_fieldsRtbool_from_stringR%tvalidate_device_namet validate_and_default_volume_sizetintt
ValueError(R4R5tdict_fields((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyR,^s0		

	

	cs4tt@‰ˆttBO‰tddddgƒ}‡fd†tj|ƒDƒ}|jdƒ}t|ƒr±d|d<t	|d	<d
|d<|dkr¡d|d<q't
j|d<nv|jd
ƒr×d|d<d|d<nP|jdƒrýd|d<d|d<n*|jdƒrntj
dtdƒƒ‚|||ƒS(NRRRRcs+i|]!\}}|ˆkr||“qS(((R&tfldtval(tcopy_over_fields(sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys
<dictcomp>Žs		RtblankRRtlocalRRRtsnapshottvolumeRRR9sUnrecognized legacy format.(tbdm_legacy_fieldstbdm_new_fieldstbdm_db_only_fieldstbdm_db_inherited_fieldsR+R2R3R-tis_swap_or_ephemeraltTruetCONFtdefault_ephemeral_formatRR;R(tclst
legacy_bdmtnon_computable_fieldstnew_bdmt	virt_name((REsF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytfrom_legacy‚s2
	







	cCs{|jdƒsa|jdƒ}|jdƒ}|jdƒ}|dkrctjd	td
ƒƒ‚nk|dkr|rtjd	tdƒƒ‚n>|dkrÎ|s½tjd	tdƒƒ‚n|||d
<n|dkra|dkrayt|jddƒƒ}Wn)tk
r-tjd	tdƒƒ‚nX|o=|dks^tjd	tdƒƒ‚q^qan|jddƒ||ƒS(s‚Transform the API format of data to the internally used one.

        Only validate if the source_type field makes sense.
        RRR#RRItimageRHRFR9sInvalid source_type field.sInvalid device UUID.sMissing device UUID.t_idRGRiÿÿÿÿsBoot index is invalid.is(Mapping image to local is not supported.(svolumesimagessnapshotsblankN(R-RR;RR@RAtpopR%(RRtapi_dicttimage_uuid_specifiedRtdevice_uuidRR((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytfrom_api¯s4			
		csñttdgƒ}|ttBO}‡fd†|Dƒ}ˆjdƒ}ˆjdƒ}ˆjdƒ}|dkršˆddkrd|d<qíd	|d<nS|d
ks¬|r¹d|d<n4|dkrí|d
kràtjƒ‚nd|d<n|S(NRcs.i|]$}|ˆkrˆj|ƒ|“qS((R-(R&R'(R4(sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys
<dictcomp>Ús	RRRRFRRR	RIRHRX(svolumessnapshot(RJR+RLRMR-R%RtInvalidBDMForLegacy(R4REtlegacy_block_deviceRRR((R4sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytlegacyÕs&




cCsGtdgƒ|jB}t|ƒ}x|D]}|j|dƒq)W|S(NR(R+R:tdictRZR%(R4tdrop_fieldstmapping_dictRC((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_image_mappingòs

N(t__name__t
__module__t__doc__RKR0RLRMR:R+R<R%R)R,tclassmethodRWR^RaRe(((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyR$Es	$-&	cCs$t|jƒƒ}|ttBtBkS(sßDetermine if passed dict is a safe subset for update.

    Safe subset in this case means a safe subset of both legacy
    and new versions of data, that can be passed to an UPDATE query
    without any transformation.
    (R+tkeysRKRMRL(tblock_device_dicttfields((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytis_safe_for_updateûsicCs4tidd6|d6td6|d6dd6dd	6ƒS(
s·Create a block device dict based on the image_ref.

    This is useful in the API layer to keep the compatibility
    with having an image_ref as a field in the instance requests
    RXRRRRtdiskRRGR(R$RO(t	image_refR((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytcreate_image_bdms
cCs;tidd6td6dd6dd6dd	6|d
6|d6ƒS(NRFRRRnRiÿÿÿÿRRGRRR(R$RO(tsizeR((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytcreate_blank_bdms
cCsOd}idd6d	d
6|d6}x!|D]}|j|ƒ||<q(Wt|ƒS(
s=Create a basic volume snapshot BDM from a given template bdm.RRRRRR
RHRRIRR(sdisk_bussdevice_types
boot_indexsdelete_on_terminationsvolume_sizesdevice_name(R-R$(Rttemplatetcopy_from_templatet
snapshot_dictR8((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytsnapshot_from_bdm"s


cCs›g}xK|D]C}yt|ƒjƒ}Wntjk
rBq
nX|j|ƒq
Wx@td„|DƒƒD](\}}|dd t|ƒ|d<qkW|S(sYTransform a list of block devices of an instance back to the
    legacy data format.
    css/|]%}|drt|dƒr|VqdS(RN(tis_ephemeral(R&tdev((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys	<genexpr>@s
Riÿÿÿÿ(R$RaRR_tappendt	enumeratetstr(tblock_device_mappingtlegacy_block_device_mappingtbdmR`tiRx((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytlegacy_mapping0s
# tc
Cs_g|D]}tj|ƒ^q}|rGx|D]}d|d<q/W|Sd}t}|r¤|r¤g|D]}|ddkrh|^qh}	|	rHd|	dd<qHn¤x|D]w}|ddkr|dk	rt|jd	ƒƒt|ƒkrd|d<t}q«|d
sd|d<q«d|d<q«W|rH|rHt|ddƒ}n|rW|gng|S(
s@Transform a legacy list of block devices to the new data format.iÿÿÿÿRRRFiRIRHRXR
RN(svolumessnapshotsimage(R$RWR%tFalset	strip_devR-RORp(
R}t
image_uuidtroot_device_nametno_rootRStnew_bdmsR~t	image_bdmt
volume_backedt	non_blank((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytfrom_legacy_mappingHs2
)

	


cCs]d}x7|jdgƒD]#}|ddkr|d}qqWd|krY|d}n|S(sWget root device name from image meta data.
    If it isn't specified, return None.
    tmappingstvirtualR
tdeviceR…N(R%R-(t
propertiesR…R~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytproperties_root_device_namess
cCszy tj|dddddƒWn,tjk
rNtjdtdƒƒ‚nXd|krvtjdtd	ƒƒ‚ndS(
NsDevice namet
min_lengthit
max_lengthiÿR9sDevice name empty or too long.t sDevice name contains spaces.(Rtcheck_string_lengthRtInvalidInputR;R(tvalue((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyR>†s		cCsi|jdƒrey$tj|ddddƒ|d<Wqetjk
ratjdtdƒƒ‚qeXndS(NRt	min_valueiR9sInvalid volume_size.(R-Rtvalidate_integerRR•R;R(R~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyR?–s	s^ephemeral(\d|[1-9]\d+)$cCstj|ƒdk	S(N(t
_ephemeraltmatchR%(R
((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyRw¦scCs(t|ƒst‚ttjd|ƒƒS(Ns\1(RwtAssertionErrorR@R™tsub(tephemeral_name((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyt
ephemeral_numªscCs|o|dkpt|ƒS(NR(Rw(R
((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyRN¯scCsG|jdƒdkrC|jdƒdkrC|jdƒdkrCtStS(NRRFRRGRR(R-ROR‚(R~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytnew_format_is_swap´s
cCsG|jdƒdkrC|jdƒdkrC|jdƒdkrCtStS(NRRFRRGRR(R-ROR‚(R~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytnew_format_is_ephemeral¼s
cCs1ytd„|DƒƒSWntk
r,dSXdS(Ncss-|]#}|jddƒdkr|VqdS(RiÿÿÿÿiN(R-(R&R~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys	<genexpr>Æs(tnextt
StopIterationR%(tbdms((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_root_bdmÄs
cs‡fd†|DƒS(svWill return non-root mappings, when exclude_root_mapping is true.
       Otherwise all mappings will be returned.
    c3s4|]*}|jddƒdks(ˆr|VqdS(RiÿÿÿÿiN(R-(R&R~(texclude_root_mapping(sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys	<genexpr>Ïs((R£R¥((R¥sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_bdms_to_connectËscCsTxM|D]E}|d}t|ƒr|djdƒrd|d|d<qqW|S(sAPrepend '/dev/' to 'device' entry of swap/ephemeral virtual type.RRŽt/s/dev/(RNt
startswith(RŒtmR((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytmappings_prepend_devÓs

s^/dev/cCs|rtjd|ƒS|S(sremove leading '/dev/'.R(t_devRœ(R
((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyRƒàscCs|odt|ƒS(s%Make sure there is a leading '/dev/'.s/dev/(Rƒ(R
((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyR.åss
^((x?v|s|h)d)cCs&t|ƒ}|r"tjd|ƒS|S(s4remove both leading /dev/ and xvd or sd or vd or hd.R(Rƒt_prefRœ(R
((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytstrip_prefixíss\d+cCs&t|ƒ}|r"tjd|ƒS|S(NR(R­t_numsRœ(R
tletter((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_device_letteröscCsÜ|d}|dkr2tjƒr+d}q2tSni}t|ƒ|d<||d<|jdƒ}|rt||d<n|jdƒ}|r–||d<ng}g}xR|D]J}|jd	krÔ|j|jƒq©n|j	d
kr©|j|ƒq©q©W|r5|j
ƒx+t|ƒD]\}	}
|
|d|	<qWng|D]}|jdkr<|^q<}|ry|j
ƒj|d<ng|D]}|jdkr€|^q€}|rØx.t|ƒD]\}
}|j|d|
<q´Wn|S(
NR…s	/dev/xvdaRR
tdefault_ephemeral_deviceR	tdefault_swap_deviceRRIRFsebs%dsephemeral%d(R%Rt	is_xenapit_DEFAULT_MAPPINGSRƒR-RRyR
RtsortRzRRZ(tinstanceR£R…RŒR±R²tebs_devicestblanksR~tnebstebsRt
ephemeralstnumteph((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytinstance_block_mappingýsD
	




((cCs&tjd|ƒ}|sdS|jƒS(s/Matches device name and returns prefix, suffix.s-(^/dev/x{0,1}[a-z]{0,1}d{0,1})([a-z]+)[0-9]*$N(treRšR%tgroups(RŽRš((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytmatch_device0scCsÃgtj|ƒD]}t|dƒ^q}tj|ƒ}tj|ƒrd|jt|dƒƒn|gtj|ƒD]}t|dƒ^qw7}tjdt	t
d|ƒƒƒt|ƒ|kS(Ntmount_deviceR
sblock_device_list %s(Rtblock_device_info_get_mappingRƒtblock_device_info_get_swaptswap_is_usableRyt block_device_info_get_ephemeralstLOGtdebugtsortedtfilterR%(RÂtblock_device_infotvoltblock_device_listRt	ephemeral((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytvolume_in_mapping8s#$cCstd„|DƒƒS(Ncss-|]#}t|ƒr|jddƒVqdS(RiN(R R-(R&R~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pys	<genexpr>Ls(tsum(tblock_device_mappings((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_bdm_ephemeral_disk_sizeKs	cCs#g|D]}t|ƒr|^qS(N(RŸ(RÑR~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_bdm_swap_listQs
cCs2tg|D]!}|jdƒdkr
|^q
ƒS(NRRG(tlenR-(RÑR~((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pytget_bdm_local_disk_numVs(BR¿toslo_logRtloggingt
oslo_utilsRR2t	nova.conftnovaRt	nova.i18nRRt	nova.virtRtconfRPt	getLoggerRfRÇtDEFAULT_ROOT_DEV_NAMER´R+RJRKRLRMtbdm_new_non_api_fieldstbdm_new_api_only_fieldstbdm_new_api_fieldsRbR$RmRpR%RrRvR€R‚R‹RR>R?tcompileR™RwRžRNRŸR R¤R¦RªR«RƒR.R¬R­R®R°R¾RÁRÏRÒRÓRÕ(((sF/home/tvault/.virtenv/lib/python2.7/site-packages/nova/block_device.pyt<module>s‚

						¶	
		*			
							
					3