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:
ó
È:–[c@sÞdZddlZddlZddlZddlZddlmZddlmZm	Z	m
Z
yddlmZ
Wn!ek
r™ddlmZ
nXyddlZWn!ek
rÍddlmZnXyddlmZWn!ek
rddlmZnXyddlmZWn!ek
r=ddlmZnXdd	lmZdd
lmZdd
lmZddlmZddlm Z!dd
l"m#Z#ddl"m$Z$ddl"m%Z%ddl&m'Z'ddl(m)Z)ddl*m+Z+m,Z,ej-dddddƒej-dddddƒgZ.e
j/e0ƒZ1e#j2e1ƒZ2ej3Z3e3j4e.ƒe
e3j5ƒZ6e
e3j7ƒZ8e3j9j:ƒd!kre;e3_<n	e=e3_<d„Z>d„Z?d„Z@dejAfd „ƒYZBdS("sÒ
Handles all processes relating to Contego functionality

The :py:class:`ContegoManager` class is a :py:class:`nova.manager.Manager` that
handles RPC calls relating to Contego functionality creating instances.
iÿÿÿÿN(t	threading(tThreadtEventtBoundedSemaphore(tlog(t	messaging(tsleep(tcfg(t	conductor(tmanager(tapi(tinstance(tautolog(tutils(tasync_utils(tvault(t
LibvirtDriver(tRetryExceptiont
ErrorOccurredtmax_uploads_pendingtdefaultithelpsxMaximum upload requests that a hypervisor can handle. 3 is a guestimate which can be overridden based on the environemnttmax_commit_pendings~Maximum commit image requests that a hypervisor can handle. 3 is a guestimate which can be overridden based on the environemntsswift-sts3cs+‡fd†}ˆj|_ˆj|_|S(sÞ
    A decorator to lock methods to ensure that mutliple operations do not
    occur on the same instance at a time. Note that this is a local lock
    only, so it just prevents concurrent operations on the same host.
    csb|jddƒ}|jddƒ}|re|retjj||ƒ}||d<|dk	st‚n(|r|r|d}|d|d<ntjdˆjt	|ƒƒt
|tƒrøytj
|d|d<Wqøtk
rôt	|ƒ|d<qøXntjd|ˆjfƒ|j|ƒzˆ|||SWd|j|ƒtjd|ˆjfƒXdS(	Nt
instance_uuidtinstance_reftuuids
%s called: %stidtnamesLocking instance %s (fn:%s)sUnlocked instance %s (fn: %s)(tgettNonetinstance_objtInstancetget_by_uuidtAssertionErrortLOGtdebugt__name__tstrt
isinstancetdicttCONFtinstance_name_templatet
BaseExceptiont_lock_instancet_unlock_instance(tselftcontexttkwargsRR(tfn(sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt
wrapped_fn]s0
	





	(R%t__doc__(R1R2((R1sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt
_lock_callVs cCstjd|ƒdS(s& Log exceptions with a common format. sError during %sN(R#t	exception(t	operation((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt
_log_errorƒscs+‡fd†}ˆj|_ˆj|_|S(Ncs™tj}d}tjƒ}xwtr”yˆ||ŽSWqtjk
rtjƒ|}||krj‚ntjdˆj||ƒ|d7}qXqWdS(Nis'%s timing out after %d seconds, try %d.i(	R)tcontego_compute_timeoutttimetTrueRtMessagingTimeoutR#R$R%(targsR0ttimeouttitstarttelapsed(R1(sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR2‰s			(R%R3(R1R2((R1sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt
_retry_rpcˆstContegoManagercBsJeZd„Zd„Zd„Zeejdeƒd„ƒƒZ	eejdeƒd„ƒƒZ
eejdeƒd„ƒƒZeejdeƒd„ƒƒZejdeƒe
jd„ƒƒZeejdeƒd	„ƒƒZeejdeƒd
„ƒƒZejdeƒe
jeƒd„ƒƒZeejdeƒd„ƒƒZejdeƒe
jeƒd
„ƒƒZeejdeƒd„ƒƒZeejdeƒd„ƒƒZed„ƒZe
jd„ƒZeejdeƒd„ƒƒZeejdeƒd„ƒƒZejdeƒe
jd„ƒƒZeejdeƒd„ƒƒZe
jd„ƒZ eejdeƒd„ƒƒZ!ejdeƒe
jd„ƒƒZ"ejdeƒe
jd„ƒƒZ#eejdeƒd„ƒƒZ$eejdeƒd„ƒƒZ%eejdeƒd„ƒƒZ&RS(cOsŒtjƒ|_tjƒ|_t|jjƒ|_tjƒ|_i|_	t
j|_i|_
i|_tt|ƒjdd||ŽdS(Ntservice_nametcontego(tcompute_managertComputeManagertcompute_apitAPIRtdrivert
gthreadingt	Conditiontcondtlocked_instancesR)tmy_ipt
ip_addresst
snaps_datatsnaps_transfertsuperRBt__init__(R.R<R0((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRS s			cCsã|jjƒzÁtjd|ƒttjƒƒ}xbtr—|jj	||dfƒ\}}||kr“tjd|||fƒ|jj
ƒq6Pq6Wtjd|||dfƒ||df|j|<Wd|jjƒXdS(NsAcquiring lock for instance %sis4Lock for instance %s already acquired by %s (me: %s)s3Acquired lock for instance %s (me: %s, refcount=%s)i(RLtacquireR#R$Rtgreenlett
getcurrentR:RMRtwaittrelease(R.Rtcurrent_threadtlocking_threadtrefcount((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR,³s"
				cCsˆ|jjƒzf||jkrr|j|\}}|dkrX|j|=|jjƒqr||df|j|<nWd|jjƒXdS(Ni(RLRTRMt	notifyAllRX(R.RRZR[((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR-Ìs

tloggercCs|jj||||ƒS(s&
        Prepare for the VAST
        (RItvast_prepare(R.R/RRtparams((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR^ÞscCs|jj||||ƒS(s
        Freeze
        (RItvast_freeze(R.R/RRR_((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR`çscCs|jj||||ƒS(s
        Thaw
        (RIt	vast_thaw(R.R/RRR_((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRaðscCsºtjd|ƒi}|d|d<|d|d<|d|d<tjtj|ƒ|jdƒtjtj|ƒdƒ|j||||ƒtjd|ƒtd	ƒid
d6}|S(s#
        VAST the instance
        s$Initiating snapshot for instance: %stinstance_vm_idtresource_idtsnapshot_idtbackend_endpoints
sIn Progress
s#Scheduled snapshot for instance: %sitsuccesstresult(	R#R$R
tupdate_progressRtget_progress_tracker_pathROt_vast_snapshot_async_fnR(R.R/RRR_tmetadatatstatus((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt
vast_instanceùs


cCsltdƒyñtjd|dƒ|jj||||ƒ}i}|d|d<|d|d<|d|d<itd6|d6|j|<tjd	|dƒtjt	j
|ƒd
ƒtjd|dƒtjrút
jdƒtjt	j
|ƒd
ƒnWnjtk
rg}i}|d|d<|d|d<|d|d<tjt	j
|ƒd
t|ƒdƒnXdS(NisSnapshot in progress: %sRdRbRcRetfetchedtsnapssSnapshot done: %ss
Completed
sProgress updated: %sisError: s
(RR#tinfoRIRmR:RPR
RhRRiR)tvault_using_fuseR9t	ExceptionR&(R.R/RRR_RoRktex((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRjs4
	
cCs|jj||||ƒ}|S(s<
        Get the info(disks etc) of a VAST Snapshot
        (RIt
vast_get_info(R.R/RRR_t
disks_info((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRt2scCsigd6S(s'
        Get the VAST Data URL
        turls((R.R/RRR_((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt
vast_data_url<scCsŸyZtjd|ƒ|jj||||ƒtjd|ƒtjtj|dƒdƒWn>tk
rš}tjtj|dƒdt	|ƒdƒnXdS(NsCommit image in progress: %ssCommit image done: %sRks
Completed
sError: s
(
R#R$RItvast_commit_imageR
RhRRiRrR&(R.R/RRR_Rs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt_vast_commit_image_async_fnDs
cCs¯y•idd6}tjd|ƒtjtj|dƒ|jdƒtjtj|dƒdƒ|j||||ƒtjd|ƒidd6}Wntk
rª}nX|S(	s1
        Initiate async image commit job
        tretryRgs(Initiating image commit for instance: %sRks
sIn Progress
s'Scheduled commit image for instance: %sRf(	R#R$R
RhRRiRORyR(R.R/RRR_RlRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRxUs$
	
	cCsyÀtjd|dd|ddƒ|jj||||ƒ}tjd|dd|ddƒitd6|j|dd<tdƒtjt	j
|dƒdƒtjd	|ddƒWn>tk
r}tjt	j
|dƒd
t|ƒdƒnXdS(Ns Data transfer in progress: %s %sRkRdtvm_disk_resource_snap_idsData transfer done: %s %sRnis
Completed
sProgress updated: %ssError: s
(
R#RpRItvast_data_transferR:RQRR
RhRRiRrR&(R.R/RRR_tretRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt_vast_data_transfer_async_fnos*		
cCsßyÅidd6}tjd|ddƒ|dd|dd<tjtj|dƒ|jdƒtjtj|dƒdƒ|j||||ƒtjd	|dd
ƒtdƒidd6}Wnt	k
rÚ}nX|S(
s1
        Initiate async data tranfer job
        RzRgs)Initiating data transfer for instance: %sRkR{Rcs
sIn Progress
s(Scheduled data transfer for instance: %sRdiRf(
R#RpR
RhRRiROR~RR(R.R/RRR_RlRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR|Šs(
	
	
cCs|jj||||ƒS(s3
        Check if the prev snapshot exists
        (RItvast_check_prev_snapshot(R.R/RRR_((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR§sc	CsSigd6}ytj|dƒ}tjd|ƒtj|ƒ|d<tjd|dƒ||jkrÁ|j|dtkrÁd|krÁ|dtkrÁ|j|d}|jj|ƒ|S|dd|j	kr|j	|dddtkr|j	j|ddƒidgd6SWn.t
k
rN}d	t|ƒd
g|d<nX|S(s.
        Get data transfer job status
        RlRksGet vast async snapshot: %ssProgress tracking status: %sRnRoRct	CompletedsError: s
(RRiR#RpR
tget_progressRPR:tpopRQRrR&(	R.R/RRR_tasync_task_statustprogress_tracking_file_pathRoRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pytvast_async_task_status±s,
&cCs£tdƒyJtjd|ƒ|jj||||ƒtjtj|dƒdƒWn>t	k
r”}tjtj|dƒdt
|ƒdƒnXtdƒdS(NisVAST Finalize in progress: %sRksVAST Finalize Completed
sError: s
(RR#R$RIt
vast_finalizeR
RhRRiRrR&(R.R/RRR_Rs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt_vast_finalize_async_fnÓs

cCs¢tjd|ƒ|dd|dd<tjtj|dƒ|jdƒtjtj|dƒdƒ|j||||ƒtjd|ƒtdƒid	d
6S(s,
        Finalize the VAST Snapshot
        s)Initiating VAST Finalize for instance: %sRktsnapshot_vm_idRcs
sIn Progress
s'Finished VAST Finalize for instance: %siRfRg(	R#R$R
RhRRiROR‡R(R.R/RRR_((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR†äs

cCs|jj||||ƒdS(s#
        VAST the instance
        N(RIt
vast_reset(R.R/RRR_((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyR‰ûscCsÕytjd|ƒ|jj||||ƒtjd|ƒtjtj|dƒdƒtj	rt
jdƒtjtj|dƒdƒnWn>tk
rÐ}tjtj|dƒdt
|ƒdƒnXdS(Ns"Map snapshot files in progress: %ssMap snapshot files done: %sRks
Completed
isError: s
(R#R$RItmap_snapshot_filesR
RhRRiR)RqR9RRrR&(R.R/RRR_Rs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt_map_snapshot_files_async_fns"
	
cCsˆtjd|ƒtjtj|dƒ|jdƒtjtj|dƒdƒ|j||||ƒtjd|ƒidd6}|S(s2
        Map snapshot files to fmsnapshot
        s.Initiating map snapshot files for instance: %sRks
sIn Progress
s-Scheduled map snapshot files for instance: %sRfRg(R#R$R
RhRRiROR‹(R.R/RRR_Rl((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRŠs	
	
cCs“tdƒyGtjd|ƒ|d}|jj||||ƒtj|dƒWn1tk
r„}tj|dt|ƒdƒnXtdƒdS(Nis+Copy backup image to volume in progress: %sR„s)Copy backup image to volume is Completed
sError: s
(	RR#R$RItcopy_backup_image_to_volumeR
RhRrR&(R.R/RRR_R„Rs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt_copy_backup_image_to_volume0s
	

		cCs´tjd|ƒ|d}tjj|ƒd}tjj|ƒsRtj|ƒntj||j	dƒtj|dƒ|j
||||ƒtjd|ƒtdƒidd	6S(
s-
        Copy backup image to volume
        s7Initiating copy_backup_image_to_volume for instance: %sR„is
sIn Progress
s5Finished copy_backup_image_to_volume for instance: %siRfRg(R#R$tostpathtsplittexiststmakedirsR
RhRORR(R.R/RRR_R„tprogress_dir((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRŒBs$	

	
cCsóy¨tjd|dƒtj|||ƒ|d}tjd|dƒtjtj|ƒdƒtjd|dƒtjr§t	j
dƒtjtj|ƒdƒnWnDtk
rî}|d}tjtj|ƒdt|ƒd	ƒnXdS(
Ns*Config backup for database in progress: %st	backup_idRks&Config backup of remote files done: %ss
Completed
sProgress updated: %sisError: s
(
R#RpRtbackup_databaseR
RhRiR)RqR9RRrR&(R.R/R„R_RkRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt%_vast_config_backup_database_async_fn`s*
	

cCsóy¨tjd|dƒtj|||ƒ|d}tjd|dƒtjtj|ƒdƒtjd|dƒtjr§t	j
dƒtjtj|ƒdƒnWnDtk
rî}|d}tjtj|ƒdt|ƒd	ƒnXdS(
NsConfig backup in progress: %sR”RksConfig backup done: %ss
Completed
sProgress updated: %sisError: s
(
R#RpRtbackup_config_filesR
RhRiR)RqR9RRrR&(R.R/R„R_RkRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt_vast_config_backup_async_fns$

	

cCs£tjdƒ|d}tj|ƒ}tj||jdƒ|jdƒdkrh|j|||ƒn|j	|||ƒtjdƒt
dƒidd	6}|S(
s:
        Backup configuration files and database.
        s.Initiating backup for OpenStack configuration.Rks

In Progress
ttargettdatabases,Scheduled backup for OpenStack configurationiRfRg(R#R$RRiR
RhRORR–R˜R(R.R/R_RkR„Rl((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pytvast_config_backupžs

	



cCsbtjdƒidd6}y|ddd}|dd}xé|dD]Ý}d	ttjƒƒ}i|d6|d
6|d6}tjd|}	|	d
d|g}
dj|
ƒ}tjd|ƒtj|
ƒ}tj	||ddƒ}
|
rHd|t
|jjƒdƒf}t
d|ƒ‚qHqHW|SWn-tk
r]}tj|ƒidd6}nX|S(s8
        Validate trusted user and private key.
        sValidating trusted nodes.RfRgttrust_credsttrusted_usertusernametauthorized_keytcontroller_nodess/tmp/tuserthosttsshtsudotmkdirt s%validate_trusted_user_and_key cmd %s tno_of_countis5Error while making key based ssh connection to %s: %ssutf-8treasontfailed(R#R$R&Rtuuid4R
t
get_cmd_specstjointrun_cmdtpoll_processtunicodetstderrtreadRRrR5(R.R/R_RlR¡RŸtcontroller_nodettemp_folderR0tssh_cmdtcmdspectcmdtprocesst
returncodetmessageRs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pytvalidate_trusted_user_and_key´s4



cCs[tjdƒidd6}|ddd}|dd}yíxæ|djƒD]Ô\}}d	|d
|df}i|d6|d
6|dd6}	tjd
|	}
|
|g}dj|ƒ}tjd|ƒtj|ƒ}
tj|
|ddƒ}|rNd|
jj	ƒ}t
d|ƒ‚qNqNWWn-tk
rV}tj|ƒidd6}nX|S(s6
        Validate given database credentials.
        sValidating database credentialsRfRgRœRRžRŸt	databasessmysql -u%s -p%sR¡tpasswordR¢R£R¦svalidate_database_creds cmd %s R§is*Error while making connection to mysql: %sR¨R©(
R#R$t	iteritemsR
R«R¬R­R®R°R±RRrR5(R.R/R_RlRRŸRštdatabase_credst
mysql_connectR0R´RµR¶R·R¸R¹Rs((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pytvalidate_database_credsÕs2




('R%t
__module__RSR,R-R4Rt
log_methodtLoggerR^R`RaRmRt	run_asyncRjRtRwtrun_async_by_throttletcommit_jobs_throttlingRyRxtupload_jobs_throttlingR~R|RR…R‡R†R‰R‹RŠRRŒR–R˜R›RºRÀ(((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyRBžsd			 		"	 (sswift-sR(CR3RR9RURŽteventlet.greenRRJRRRtoslo_logRtloggingtImportErrortnova.openstack.commontoslo_messagingRtosloteventletRtoslo_configRtoslo.configtnovaRR	tnova.computeRER
RGtnova.objectsRRRDRR
Rtcontego.nova.extension.driverRt+contego.nova.extension.driver.libvirtdriverRtcontego.exceptionRRtIntOpttextension_optst	getLoggerR%R#RÃR)t
register_optsRRÇRRÆtvault_storage_typetlowerR:RqtFalseR4R7RAtManagerRB(((sS/home/tvault/.virtenv/lib/python2.7/site-packages/contego/nova/extension/manager.pyt<module>	sh



	
		-