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 / contego / nova / extension / driver / libvirtdriver.pyc
Size: Mime:
ó
w=4\c@sÀddlZddlZyddlmZWn!ek
rOddlmZnXddlZddlZddlZddlm	Z	ddl
mZddlZyddl
mZWn!ek
r×ddlmZnXyddlmZWn!ek
rddlmZnXyddlmZWn!ek
rGddlmZnXddlmZdd	lmZdd
lmZddljjjZ yddlm!Z"Wne#k
r´nXyddl$m"Z%Wne#k
rÜnXdd
l&m'Z'ddl(m)Z)ddl*m+Z+ddl,mZddl-Z-ddl.Z.ddl/Z/ej0dddddƒgZ1ej2Z2e2j3e1ƒej4e5ƒZ6de7fd„ƒYZ8d„Z9dej:fd„ƒYZ:dS(iÿÿÿÿN(tsleep(tgreenthread(tetree(tcfg(tlog(t	jsonutils(t	exception(tdriver(tconfig(tvolume(tcinder(t
qemuimages(tDiskfilesDriveBuilder(tBackend(tutilstqemu_agent_ping_timeouttdefaulti,thelpsAThe number of seconds to wait to qemu agent to be up and running.tChunkedFilecBs/eZdZdZd„Zd„Zd„ZRS(sW
    We send this back to the  as
    something that can iterate over a large file
    icCs"||_t|jdƒ|_dS(Ntrb(tfilepathtopentfp(tselfR((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt__init__Ps	ccsSzA|jr@x1tr<|jjtjƒ}|r8|VqPqWnWd|jƒXdS(s&Return an iterator over the image fileN(RtTruetreadRt	CHUNKSIZEtclose(Rtchunk((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt__iter__Ts		cCs&|jr"|jjƒd|_ndS(sClose the internal file pointerN(RRtNone(R((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyRas	
(t__name__t
__module__t__doc__RRRR(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyRGs
		
ccsXy$x|D]}tdƒ|Vq
WWn-tk
rS}d|}tj|ƒ‚nXdS(s™
    Return an iterator which schedules after each
    iteration. This can prevent eventlet thread starvation.

    :param iter: an iterator to wrap
    is$Error: cooperative_iter exception %sN(Rt	ExceptiontLOGterror(titerRterrtmsg((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytcooperative_iterhs




t
LibvirtDrivercBsUeZed„Zejƒd„ƒZejƒd„ƒZejƒd„ƒZejƒd„ƒZ	ejƒd„ƒZ
ejƒd„ƒZejƒd„ƒZejƒd„ƒZ
ejƒd	„ƒZejƒd
„ƒZejƒd„ƒZejƒd„ƒZd
„Zd„Zdd„Zd„Zd„Zejƒd„ƒZRS(cCs#tt|ƒj|ƒ||_dS(N(tsuperR*Rtvirt_driver(RR,t	read_only((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR{scCsyU|j|ƒ}|j||||ƒ\}}}t|ƒr¤tƒjdd|djdƒjdƒd|jƒ}	|	j|d|d|d	|d
|d|ƒnt|ƒdkrÿtƒjdd|jƒ}	|	j|d|d|d	|d
|d|ƒnt|ƒrTtƒjd
d|jƒ}	|	j|d|d|d	|d
|d|ƒnWn#tk
rz}
t	j
|
ƒ‚nXdS(NtrbdboottpathitsourcetnameR,tcontextt
instance_uuidt
instance_nametinstance_reftparamstfileR
(t_get_instance_name_by_uuidt_get_device_categoriestlenR
tgettfindR,tprepare_snapshotR#R$R(RR2R3R5R6R4tfile_disk_devicestrbd_disk_devicestcinder_disk_devicestbackend_drivertex((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytvast_preparesN		
	
	
cCs#|j||ƒ|j||tƒS(N(t_wait_for_guest_agentt_quiesceR(RR2R3R5R6((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytvast_freeze¯scCs|j||tƒS(N(REtFalse(RR2R3R5R6((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt	vast_thaw´scCsy”|j|ƒ}g}|j||||ƒ\}}}	t|ƒdkr¿tƒjdd|djdƒjdƒd|jƒ}
|
j|d|d|d	|d
|d|ƒ}|j|ƒnt|ƒdkr)tƒjdd|jƒ}
|
j|d|d|d	|d
|d|ƒ}|j|ƒnt|	ƒdkr“tƒjd
d|jƒ}
|
j|	d|d|d	|d
|d|ƒ}
|j|
ƒnWnzt	k
r}t
j|ƒt|dƒr
t
j|jjƒ}d|kr
d|dd}tj|ƒ‚q
n‚nXi|d6S(NiR.R/R0R1R,R2R3R4R5R6R7R
tresponset	overLimitsQuota Exceeded - tmessaget
disks_info(R8R9R:R
R;R<R,tcreate_snapshottextendR#R$RthasattrtjsontloadsRIttextt
QuotaError(RR2R3R5R6R4RLR>R?R@RAtrbd_disks_infotfile_disks_infotcinder_disks_infoRBtpayloadR(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt
vast_instance¸sh							
c
Cs¤ysg}d|krr|d}xP|D]E}tƒj|dd|dd|jƒ}|j|j|ƒƒq&WnWn#tk
r˜}	tj|	ƒ‚nXi|d6S(NRLtbackendR/R,(R
R;R,tappendtupdate_snapshot_infoR#R$R(
RR2R3R5R6tupdated_disks_infoRLt	disk_infoRARB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt
vast_get_infoõs

	


cCsùyq|j|ƒ}|d}tƒj|dd|dd|jƒ}|j|d|d|d|d|d	|ƒWnztk
rí}tj|ƒt|d
ƒrçt	j
|jjƒ}	d|	krçd|	dd
}
tj
|
ƒ‚qçn‚nXidd6S(NR]RYR/R,R3R4R5R2R6RIRJsQuota Exceeded - RKtsuccesstresult(R8R
R;R,tupload_snapshotR#R$RRORPRQRIRRRS(RR2R3R5R6R4R]RARBRWR(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytvast_data_transfers,
	


cCsÜ|d}xÄ|D]¼}x³tt|ƒgdŒD]˜\}}yf|}	|}
tj|	ƒ}tj|
ƒ}|j|jkr’tj|
|jƒntj|	tƒWq1tk
rÈ}
t	j
|
ƒ‚q1Xq1WqWidd6S(Ntcommit_image_listiR_R`(tzipR&Rt
qemu_img_infotvirtual_sizetresize_imagetcommit_qcow2RGR#R$R(RR2R3R5R6Rct
commit_imagesR/tbacking_patht
vault_pathtbacking_vault_patht
image_infotimage_backing_infoRB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytvast_commit_image!s"

&	
c
Csys|j|ƒ}|d}tƒj|dd|dd|jƒ}|j|d|d|d|d|d	|ƒ}Wn#tk
r˜}	tj|	ƒ‚nX|S(
NR]RYR/R,R3R4R5R2R6(R8R
R;R,tcheck_prev_snapshotR#R$R(
RR2R3R5R6R4R]RAtstatusRB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytvast_check_prev_snapshot6s$
	



cCsDytj||dƒ}Wn#tk
r?}tj|ƒ‚nX|S(Ntmetadata(tvaulttget_async_task_statusR#R$R(RR2R3R5R6R`RB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytvast_async_task_statusLs
c

Csâ|j|ƒ}d|krÈ|d}x¶|D]•}yXtƒj|dd|dd|jƒ}|j|d|d|d|d|d	|ƒWq,tk
rÀ}	tjd
|dƒtj|	ƒq,Xq,Wntj	d|||ƒdS(NRLRYR/R,R2R3R4R5R6sCannot delete snapshot %ssMCannot delete snapshot. No Disk Information for instance: %s, UUID %s, ref %s(
R8R
R;R,tdelete_snapshotR#R$tdebugRtwarning(
RR2R3R5R6R4RLR]RARB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt
vast_finalizeVs,

	

	
cCs9y|j|ƒ}g}|drŒtƒjddtjjtjj|dƒd|j	ƒ}|j
gd|d|d|d	|d
|ƒ}n{|j||||ƒ\}	}
}t|
ƒdkr3tƒjdd|
dj
dƒjd
ƒd|j	ƒ}|j
|
d|d|d|d	|d
|ƒ}|j|ƒnt|	ƒdkrtƒjdd|j	ƒ}|j
|	d|d|d|d	|d
|ƒ}|j|ƒnt|ƒdkrtƒjdd|j	ƒ}|j
|d|d|d|d	|d
|ƒ}
|j|
ƒnWn#tk
r-}tj|ƒ‚nXi|d6S(NtdeletedR.R/t_diskR,R2R3R4R5R6iR0R1R7R
RL(R8R
R;tosR/tjointCONFtlibvirttimages_rbd_poolR,treset_snapshotR9R:R<RNR#R$R(RR2R3R5R6R4RLRARTR>R?R@RURVRB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt
vast_resetpst
	
						
c&s2dd.‡‡fd†ƒY‰d„}‡‡fd†}‡‡fd†}‡‡fd†}d„‰‡fd†}	y•d	d
lm}
tƒjdd|jƒ}|d
}|d‰|jjjˆƒ‰ˆsßtdƒ‚nˆjƒ|ks÷t	‚ˆj
dƒ}
|
j|
ƒ}|jdƒ}g}x8t
ddƒD]'}|jdttdƒ|ƒƒq:Wx<|D]4}y|j|jdƒƒWqltk
rŸqlXqlW|j||ƒ}|sØdˆ}tj|ƒ‚n|ƒ}zqy4tƒ}xH|jƒD]:\}}x+|dD]}|jtjj|ƒƒqWqýW|j|t|ƒƒi}|jƒ|jƒ}t j!dƒ}x~|jƒD]p\}}||kr¹i|dd6||<nx=|dD]1}|	|ƒ}t"j#|ƒ}|j$|ksút	‚|
j%dƒ}|jddƒ|jddƒ|
j&|dƒ}|jddƒ|jd|j'ƒ|
j&|dƒ} | jd|ƒ|
j&|d ƒ}!|!jd|ƒ|!jd!d"ƒ|
j(|ƒ}"ˆj)|"t*j+t*j,Bƒ||||<|jƒ}qÄWq‰W|r||ƒ|ƒnWn6tk
rP}#d#||#f}t-j.|ƒ|#‚nXWdy|j/|t|ƒƒWn0tk
r¡}$d$|#}t-j.|ƒ|$‚nXXyxtjj0d%ƒràd&t1j2d%gƒkrt3d'ƒqn:tjj0d(ƒrd&t1j2d(gƒkrt3d'ƒqnWntk
r8t3d'ƒnXy|j4||t5ƒWntk
rmt3d)ƒnXt3d'ƒy |j4||t6d*t7j8ƒWn.tk
rÈd+}t-j.|ƒt3d,ƒnXy|j4||t5ƒWn$tk
rd-}t-j.|ƒnXWn#tk
r-}%t-j|%ƒ‚nXdS(/Ntopen_guest_filecsDeZdd„Z‡‡fd†Z‡fd†Z‡fd†ZRS(i<cSs||_||_||_dS(N(R/tmodettimeout(RR/R…R†((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR¹s		csäidd6i|jd6|jd6d6}tj|ƒ}d|j}tjd|ˆfƒtjˆ||jdƒ}t	j
|ƒ}|jd	dƒrÓd
|diˆd6|d	6}tj|ƒt
d
ƒ‚n|d|_|S(Nuguest-file-openuexecuteupathumodeu	argumentssReading s%s in %siR%s"Error from qemu-guest-agent while s  of %(instance_name)s: %(error)sR4sFile not foundtreturn(R/R…RPtdumpsR$Rxtlibvirt_qemutqemuAgentCommandR†RRQR;RR#tfile_handle(RtcommandRqtretR`R((tdomain_nametvirt_dom(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt	__enter__¾s$




csdyLidd6i|jd6d6}tj|ƒ}tjˆ||jdƒ}Wntk
r_nXdS(Nuguest-file-closeuexecuteuhandleu	argumentsi(R‹RPRˆR‰RŠR†t
BaseException(Rttypetvaluet	tracebackRŒR(R(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt__exit__Øs

csfidd6i|jd6|d6d6}tj|ƒ}tjˆ||jdƒ}tj|ƒd}|S(Nuguest-file-writeuexecuteuhandleubuf-b64u	argumentsiR‡(R‹RPRˆR‰RŠR†RRQ(RtdataRŒRR`(R(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytwriteãs

(R R!RRR•R—((RŽR(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR„·scSs!|jƒ}tj|d}|S(Ni(tinfotnova_drivertLIBVIRT_POWER_STATE(Rtdom_infotstate((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_get_power_stateïscs‹y ˆddƒ}tSWdQXWndtk
r†}d}t|dƒrV|jƒ}ndiˆd6|d6|d6}tj|ƒtSXdS(	Ns/etc/os-releasetriÿÿÿÿtget_error_codeskError from libvirt while reading /etc/os-release from %(instance_name)s: [Error Code %(error_code)s] %(ex)sR4t
error_codeRB(RR#RORŸR$RxRG(tfRBR R((RŽR„(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_is_guest_linuxõs
c	sy°ˆddƒ›}tjtj|ƒƒ}|j|ƒ}|dtksRt‚|dttj|ƒƒkr©dtt|ƒƒt|dƒf}t	j
|ƒ‚nWdQXWnftk
r}d}t|dƒræ|j
ƒ}ndiˆd	6|d
6|d6}tj|ƒ‚nXdS(Ns/root/mnt/diskfilessw+teoftcountsgthe amount of data written to /root/mnt/diskfiles is less than len of diskfiles. Expected %s, actual %siÿÿÿÿRŸsmError from libvirt while writing /root/mnt/diskfiles of %(instance_name)s: [Error Code %(error_code)s] %(ex)sR4R RB(tbase64t	b64encodeRPRˆR—RGtAssertionErrorR:tstrRt
NovaExceptionR#RORŸR$R˜(t	diskfilesR¡t
diskfiles_b64R`R(RBR (RŽR„(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_copy_diskdrives_fileto_guests,
csPyÜtjjtjjtƒdƒ}d}d}ttjj||ƒdƒ}|jƒjƒ}WdQXy/ˆtjjd|ƒdƒ}dSWdQXWntk
r«nXxtj	|ƒD]ô}ttjj||ƒdƒ}|jƒ}WdQXˆtjjd|ƒdƒ›}t
j|ƒ}|j|ƒ}|dt
ksJt‚|dt|ƒkrªd	tjjd|ƒtt|ƒƒt|dƒf}tj|ƒ‚nWdQXq¼Wˆtjjd|ƒdƒ}WdQXWnmtk
rK}	d
}
t|	dƒr|	jƒ}
ndi|d
6ˆd6|
d6|	d6}tj|ƒ‚nXdS(Ntfilemanager_scriptss#2.5.0sfm_scripts_version.pyRžs/home/ubuntusw+R£R¤sYthe amount of data written to %s is less than len of local script. Expected %s, actual %siÿÿÿÿRŸslError from libvirt while writing /home/ubuntu/%(n)s of %(instance_name)s: [Error Code %(error_code)s] %(ex)stnR4R RB(R}R/R~tdirnamet__file__RRtstripR‘tlistdirR¥R¦R—RGR§R:R¨RR©R#RORŸR$R˜(tscripts_pathtcontego_versionR®tlfR¡tscripttscripts_b64R`R(RBR (RŽR„(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt"_copy_filemanager_scripts_to_guest.sL	!!
!!#!

cSs#tjtjjtjdƒƒdS(Ntcontego_mount_overlays(Rtensure_treeR}R/R~Rtinstances_path(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_ensure_overlay_directory_scsŠˆƒtjj|ƒdd}tjjtjd|ƒ}ytj|ƒWntk
r`nXtj	|ƒ}t
j|||jƒ|S(Nis.overlayR¹(
R}R/tsplitR~RR»tremoveR‘RRet
libvirt_utilstcreate_cow_imageRf(tdisktoverlay_filenametabs_overlay_filenameR˜(R¼(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_create_overlay_filecs	

iÿÿÿÿ(RR7R,RªR1sCannot find virt_domisdevices/disk/targetitvdtatdevsOError: Waiting for guest agent timedout                         for instance %sRks_vd[a-z]tvm_nameRÁR’tdeviceRtqemuR0ttargettbustvirtios0Error: Cannot map snapshot volume images - %s %ss%Error: resetting app armor profile %ss/usr/bin/lspcitVMwareis/sbin/lspcii<R†s>Error calling fsfreeze freeze hook successfully. Continuing...i
s<Error calling fsfreeze thaw hook successfully. Continuing...((9tlxmlRR
R;R,t_conntlookupByNameR#t
UUIDStringR§tXMLDesct
fromstringtfindalltrangeRZtchrtordR¾R‘RDRR©tsett	iteritemstaddR}R/R¯tconfigure_security_profiletlisttreversetpoptretcompileRRetbacking_filetElementt
SubElementtfile_formatttostringtattachDeviceFlagsR€tVIR_DOMAIN_AFFECT_CONFIGtVIR_DOMAIN_AFFECT_LIVER$R%treset_security_profiletexistst
subprocesstcheck_outputRRERGRR‰t#VIR_DOMAIN_QEMU_AGENT_COMMAND_BLOCK(&RR2R3R5R6RR¢R¬R¸RÄRRAt
pervmdiskstxmltdoctdiskstdiskstrtitdR_R(tlinux_guesttdirectoriestvmRÁt
disksmetadatatdisknumtvdxptoverlay_fileR˜tdiskelementRR0RËtdevxmlR'terr2RB((R¼RŽR„Rs`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pytmap_snapshot_files´sê8	"1		

%


		!













cCsè|j|ƒ}d}d}tjd|ƒy1|jjj|ƒ}tj||ddƒ}Wn2tk
r}|j	ƒ}	|	dkrŠdS‚nXt
j|ƒ}
|
jddƒräd|d	i|d
6|d6}tj|ƒ‚ndS(Ns{"execute":"guest-ping"}spinging guest agentspinging guest agent in %si<iiJR%s"Error from qemu-guest-agent while s  of %(instance_name)s: %(error)sR4(R8R$RxR,RÐRÑR‰RŠR#RŸRRQR;RRR©(RR2R3R4RŒRqtdomainRRBR R`R(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_ping_guest_agent
s"csˆjˆƒ‰‡‡‡‡fd†}y?tj|ƒ}|jdddttjdƒƒjƒtSWnt	k
rzt
SXdS(Ncs½y ˆjˆˆƒtjƒ‚Wn–tjk
r9‚n€tjk
r¸}|jƒ}|dkryd}tj|ƒq¹diˆd6|d6|d6}tj|ƒtj	|ƒ‚nXdS(s4Called at an interval until the VM is running again.iVs2Still waiting for guest agent to be up and runningseError from libvirt while pinging guest agent of %(instance_name)s: [Error Code %(error_code)s] %(ex)sR4R RBN(
RtloopingcalltLoopingCallDoneR€tlibvirtErrorRŸR$RxR%R(RBR R((R2R4R3R(s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt_wait_for_ping)s$

tintervalitmax_durationi,(R8RtFixedIntervalLoopingCalltstarttmaxRRtwaitRR#RG(RR2R3Rttimer((R2R4R3Rs`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyRD%s	
i<cCs-|j|ƒ}|r4d}d}tjd|ƒnd}d}tjd|ƒy1|jjj|ƒ}tj|||dƒ}	WnTtk
r×}
|
j	ƒ}d|d	i|d
6|d6|
d6}tj
|ƒdSXtj|	ƒ}
|
j
d
dƒr)d|di|d
6|	d
6}tj
|ƒndS(Ns${"execute": "guest-fsfreeze-freeze"}sfreezing guest filesystemss freezing guest filesystems of %ss"{"execute": "guest-fsfreeze-thaw"}sthawing guest filesystemssThawing guest filesystems of %sisError from libvirt while s9 of %(instance_name)s: [Error Code %(error_code)s] %(ex)sR4R RBR%s"Error from qemu-guest-agent while s  of %(instance_name)s: %(error)s(R8R$RxR,RÐRÑR‰RŠR#RŸRyRRQR;R(RR2R3tquiesceR†R4RŒRqRRRBR R(R`((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyRELs.
cCs¶|j|ƒ}|jjj|ƒ}|jdƒ}tj|ƒ}|jdƒ}	|	rt|	ƒdkrd}
t	j
|
ƒ‚n|jdƒ}|s©t|ƒdkrÁd}
t	j
|
ƒ‚ng}g}
g}xÓ|D]Ë}|jdƒ}|jdƒdk	r»|jdƒj}ytjƒ}Wntk
rEtjƒ}nXyE|j||ƒ}|rq|j|ƒnd	|}
t	j
|
ƒ‚Wq¥tk
r·d	|}
t	j
|
ƒ‚q¥XqÚ|d
krg|jdƒdkrg|jdƒ}d|jƒkr$|jdƒ}|jd
ƒr$qÚq$n|jdƒjdƒ}|dksT|dkr¥|
j|ƒq¥qÚ|dkr|jdƒdkr|jdƒ}d|jƒkrÐ|jdƒ}|jd
ƒrÐqÚqÐn|jdƒjdƒ}|dks|dkr¥|
j|ƒq¥qÚ|dkrŒ|jdƒdkrŒ|jdƒ}d|jƒkr||jdƒ}|jd
ƒr|qÚq|n|j|ƒqÚd	|}
t	j
|
ƒ‚qÚW||
|fS(Nisdevices/disk[@device='lun']isLUN devices are not supportedsdevices/disk[@device='disk']s/Did not find any disks attached to the instanceR’tserials+Unknown disk type %s mapped to the instanceR	R0R1RtpooltrbdtcephtnetworktprotocolR7(R8R,RÐRÑRÓRRÔRÕR:RR©R;R<RRRR
tAPIR‘tcinder1RZR#tkeystendswith(RR2R3R5R6R4Rt
domain_xmlRñtlun_devicesR(tdisk_devicesR>R?R@RÉt	disk_typetcinder_volume_idt_volume_apiR	R0R1RYR7((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR9js~


!	!	!	cCsIxB|jjƒD]1}|jjj|ƒjƒ}||kr|SqWdS(N(R,tlist_instancesRÐRÑRÒR(RR3R1tiuuid((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR8¼s
cCs|yKddlm}|d}|jjj|ƒ}|sGtdƒ‚n|jƒ|ks_t‚|jdƒ}|j	|ƒ}	t
jƒ}
|
j|	ƒx±|
j
D]¦}|jdkr»q n|jdkrÐq nd}|jdk	r²|j|d
kr²|jdkr|j}
nK|jdkr.|j}
n0|j|kr^|jdkr^|jr^d
}
n|jpm|j}tƒj|
d|d|jƒ}|j|||dd|ƒPn|jdkr`|jd	kr`|jdkr`|jdkr`|ddk	r`|ddk	r`|jp|j|d<tƒjdd|jƒ}|j|||dd|ƒPq |jdkr |jdkr |jdkr |jdkr |jdkr |jdkr |d
dkr |ddk	r |ddk	r |jpù|j|d<tƒjdd|dd|jƒ}|j|||dd|ƒPq q WWn#tk
rp}tj|ƒ‚nXidd6S(Niÿÿÿÿ(RR1sCannot find virt_domiRÁtblocktlvmR7t	volume_idRR	R
R/R,R6tvdatsdatqcow2timage_idtimage_overlay_file_pathRtrawR.R_R`(sblockR"sfile(R$R%(R$R%(RÏRR,RÐRÑR#RÒR§RÓRÔtvconfigtLibvirtConfigGuestt	parse_domtdevicest	root_namet
target_devRRtsource_typetsource_protocoltsource_poolt
source_devicetsource_nametsource_pathR
R;tcopy_backup_image_to_volumet
driver_formatR$R(RR2R3R5R6RRŽRRðtxml_doctdevice_infot
guest_disktsource_typesRYR/RARB((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR6Ãs–

			
	
	
	
	


(R R!RGRRtwrap_exceptionRCRFRHRXR^RbRoRrRvRzRƒRRRDRER9R8R6(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyR*ys(0=
DÿZ		'	R	(;R¥RPteventletRtImportErrorttimeR}R€R‰RRÏRRàtoslo_configRtoslo.configtoslo_logRtloggingtnova.openstack.commontoslo_serializationRtnovaRtnova.virt.libvirtRR™RR*tnova.virt.libvirt.utilstvirtRR¿R	R
R‘tnova.volumeRtcontego.nova.extension.driverRt,contego.nova.extension.driver.diskfilesdriveRt.contego.nova.extension.driver.backends.backendR
tcontegoRtRRìtIntOpttcontego_driver_optsRt
register_optst	getLoggerR R$tobjectRR)R*(((s`/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/driver/libvirtdriver.pyt<module>sh





	
!