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@s
dZddlZddlmZddlmZddlZddl	m
Z
ddl	mZddlZddl
mZddl
mZdd	l
mZdd
lmZddl
mZddlmZdd
lmZddlmZddlmZddlmZmZm Z m!Z!ddlm"Z"ddlm#Z#ddlm$Z$ddlm%Z%ddl&mZ'ddlm(Z(ddl)m*Z+dd	l)mZ,ddlm-Z-dd	lmZej.e/ƒZ0ej1Z1de#j2fd„ƒYZ3dej4fd„ƒYZ5dS(s3Handles database requests from other nova services.iÿÿÿÿN(tcfg(tlog(texcutils(tversionutils(trpcapi(ttask_states(tutils(twrap_instance_event(t	vm_states(tlive_migrate(tmigrate(tbase(t	exception(t_t_LEt_LIt_LW(timage(tmanager(tnetwork(tobjects(trpc(tclient(tservicegrouptConductorManagercBs_eZdZejddƒZd„Zd„Zd„Zd„Z	d„Z
d„Zd	„ZRS(
sôMission: Conduct things.

    The methods in the base API for nova-conductor are various proxy operations
    performed on behalf of the nova-compute service running on compute nodes.
    Compute nodes are not allowed to directly access the database, so this set
    of methods allows them to get specific work done without locally accessing
    the database.

    The nova-conductor service also exposes an API in the 'compute_task'
    namespace.  See the ComputeTaskManager class for details.
    tversions3.0cOsBtt|ƒjdd||Žtƒ|_|jj|jƒdS(Ntservice_namet	conductor(tsuperRt__init__tComputeTaskManagertcompute_task_mgrtadditional_endpointstappend(tselftargstkwargs((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyRBs
cCsgS(N((R"tcontext((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytprovider_fw_rule_get_allIscCs>yt||ƒ||ŽSWntk
r9tjƒ‚nXdS(sDispatch a call to an object method.

        This ensures that object methods get called and any exception
        that is raised gets wrapped in an ExpectedException for forwarding
        back to the caller (without spamming the conductor logs).
        N(tgetattrt	Exceptiont	messagingtExpectedException(R"ttargettmethodR#R$((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt_object_dispatchMs
cCsÕtjj|||ƒ}t|gt|ƒƒ}|j||||ƒ}t|tjƒrÑ||}	tj|	ƒ}
tj|j	ƒ}|
|k}|
d|dk}
|s³|
rÑ|j
d|	d|ƒ}qÑn|S(Nittarget_versiontversion_manifest(tnova_objectt
NovaObjecttobj_class_from_namettupletlistR-t
isinstanceRtconvert_version_to_tupletVERSIONtobj_to_primitive(R"R%tobjnamet	objmethodtobject_versionsR#R$tobjclasstresultR.trequested_versiontactual_versiontdo_backporttother_major_version((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytobject_class_action_versions[s"	
		cCsÏ|jƒ}|j||||ƒ}tƒ}x…|jjƒD]t\}	}
|j|	ƒs^q=n|j|	ƒsŒt||	ƒt||	ƒkr=|
j||	t||	ƒƒ||	<q=q=W|jƒ|d<||fS(sPerform an action on an object.tobj_what_changed(	t	obj_cloneR-tdicttfieldstitemstobj_attr_is_setR'tto_primitiveRC(R"R%tobjinstR:R#R$toldobjR=tupdatestnametfield((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt
object_actionts	c	Csƒ||jƒ}tjdi|jƒd6|d6djg|jƒD]\}}d||f^qCƒd6ƒ|jd|d|ƒS(	Ns9Backporting %(obj)s to %(ver)s with versions %(manifest)stobjtvert,s%s=%stmanifestR.R/(tobj_nametLOGtdebugtjoinRGR8(R"R%RJR;R+RMRQ((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytobject_backport_versionsˆs	4cCstjjƒdS(N(RtServicetclear_min_version_cache(R"((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytreset“s(
t__name__t
__module__t__doc__R)tTargetR+RR&R-RBRORXR[(((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR3s						RcBsXeZdZejddddƒZd„Zd„Zeje	j
e	je	je	j
e	je	je	je	je	je	je	je	je	je	je	jƒeddƒdedd	„ƒƒZd
„Zd„Zd„Zeddƒd
„ƒZ d„Z!dd„Z"d„Z#d„Z$d„Z%ded„Z&d„Z'dd„Z(e)ddd„Z*RS(sMNamespace for compute methods.

    This class presents an rpc API for nova-conductor under the 'compute_task'
    namespace.  The methods here are compute operations that are invoked
    by the API service.  These methods see the operation to completion, which
    may involve coordinating activities on multiple compute nodes.
    t	namespacetcompute_taskRs1.15cCsztt|ƒjƒtjƒ|_tjƒ|_tjƒ|_	t
jƒ|_tj
ƒ|_tjdtjƒ|_dS(Ntcompute(RRRtcompute_rpcapit
ComputeAPIRtAPIt	image_apiRtnetwork_apiRtservicegroup_apitscheduler_clienttSchedulerClientRtget_notifiertCONFthosttnotifier(R"((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR¢scCs/tjtdƒƒdt_tjƒ|_dS(NsReloading compute RPC API(RUtinfoRtNoneRctLAST_VERSIONRd(R"((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR[«s	tprefixRcCs&|rRt|tjƒrRddddg}tjj|tjƒ|d|ƒ}n|r‡t|tjƒr‡tjj||dƒ}n|rº|rº|rº|j||||||ƒnh|r|r|r|j	}
t
j|d|
ƒ(|j||||d|	|
|ƒWdQXn	t
ƒ‚dS(	Ntmetadatatsystem_metadatat
info_cachetsecurity_groupstexpected_attrstidtcold_migratetfilter_properties(R5R0R1RtInstancet_from_db_objecttFlavort	get_by_idt
_live_migratetuuidt
compute_utilst
EventReportert
_cold_migratetNotImplementedError(R"R%tinstancetscheduler_hinttlivetrebuildtflavortblock_migrationtdisk_over_committreservationstclean_shutdowntrequest_spectattrst
instance_uuid((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytmigrate_server²s&				
cCs&tj|jƒ}|sQtjj||j|||j|j|d|j
ƒ	}n	||_|j||||||ƒ}	|j
ƒ}
y|	jƒWnttjk
r7}|j}|sÂtj}ni|d6dd6}
|j||jd|
||
ƒ|j|jkrtdƒ}ntdƒ}tjd|ƒ‚nÒtjk
r­}tjƒS|j}|sqtj}ni|d6dd6}
|j||jd|
||
ƒWdQXn\tk
r}tjƒ;i|jd6dd6}
|j||jd|
||
ƒWdQXnX|jƒr"|jƒndS(Ntvm_statet
task_stateR‘s$No valid host found for cold migratesNo valid host found for resizetreason(Rtget_image_from_system_metadataRtRtRequestSpectfrom_componentsR€t
numa_topologytpci_requestsRptavailability_zoneR‰t_build_cold_migrate_tasktto_legacy_request_spec_dicttexecuteRtNoValidHostR’RtACTIVEt_set_vm_state_and_notifyRxtinstance_type_idR
tUnsupportedPolicyExceptionRtsave_and_reraise_exceptionR(RCtsave(R"R%R…R‰RzRŒRRŽRttasktlegacy_spectexR’RLtmsg((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyRƒàsX			

	


cCs#tj||d||||ƒdS(NRa(tscheduler_utilstset_vm_state_and_notify(R"R%RR,RLR§RŽ((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR !scCs™y/|o|js.|jj||d|ƒnWn1tk
rbtdƒ}tj|d|ƒdSXd|jd<y|jƒWntj	k
r”nXdS(Ntrequested_networkssFailed to deallocate networksR…tFalsetnetwork_allocated(
tno_allocateRgtdeallocate_for_instanceR(RRURRtR¤tInstanceNotFound(R"R%R…R«R¨((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt_cleanup_allocated_networks's	

cCs |j||||||ƒdS(N(R(R"R%R…R†RŠR‹RŽ((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytlive_migrate_instance=scCs#|jdƒ}ddd„}tjd|jƒƒ}	||	_d|	_|j|	_|j	|	_
d|	_|jdƒr™|j
j|	_|j
j|	_n|j|	_|j|	_|	jƒ|j||||||	|ƒ}
y|
jƒWn2tjtjtjtjtjtjtjtjtjtjtj tj!tj"tj#tj$fk
r•}t%j&ƒ.|||||j'ƒd|	_|	j(ƒWdQXnŠt)k
r}t*j+t,dƒi|jd	6|d
6dt-ƒ||||t.j/|j0ƒd|	_|	j(ƒtj1dt2j3|ƒƒ‚nXdS(
NRmcSsUii|jd6d6}tj||jddtd|d|dtjƒ||ƒdS(NR€tinstance_propertiesRaR‘R’R“texpected_task_state(R€R©RªRERt	MIGRATING(R%R…R§R’R“RŽ((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt
_set_vm_stateGs		R%tacceptedslive-migrationR‰terrorsKMigration of instance %(instance_id)s to host %(dest)s unexpectedly failed.tinstance_idtdesttexc_infoR”(4tgetRpRt	Migrationtelevatedtdest_computetstatusR€RRmtsource_computetmigration_typeRHR‰Rxtold_instance_type_idtnew_instance_type_idR¡tcreatet_build_live_migrate_taskRRRžtComputeHostNotFoundtComputeServiceUnavailabletInvalidHypervisorTypetInvalidCPUInfotUnableToMigrateToSelftDestinationHypervisorTooOldtInvalidLocalStoragetInvalidSharedStoragetHypervisorUnavailabletInstanceInvalidStatetMigrationPreCheckErrort MigrationPreCheckClientExceptiont$LiveMigrationWithOldNovaNotSupportedtMigrationSchedulerRPCErrorRR£R’R¤R(RUR¸RtTrueRtERRORR“tMigrationErrortsixt	text_type(R"R%R…R†RŠR‹RŽtdestinationR¶t	migrationR¥R§((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyRCs`			

	
	
cCs1tj|||||||j|j|j|ƒ
S(N(R	tLiveMigrationTaskRcRhRi(R"R%R…RÚRŠR‹RÛRŽ((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyRƆsc	Cs(tj|||||||j|jƒS(N(R
t
MigrationTaskRcRi(R"R%R…R‰RŽRŒR((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR›‘s
c	Csžy&tjj||jƒ}|jƒWnqtjk
r™tjƒN}tj	j
|dƒ}|dkrln#tjdi|jd6ƒt
|_WdQXdSXdS(Nsnova-osapi_computeis^BuildRequest not found for instance %(uuid)s, likely due to an older nova-api service running.R€(RtBuildRequesttget_by_instance_uuidR€tdestroyRtBuildRequestNotFoundRR£RYtget_minimum_versionRURVR¬treraise(R"R%R…t
build_requesttexc_ctxttservice_version((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt_destroy_build_requestšs		cCs ytjj||jƒ}Wn(tjk
rFtjdd|ƒdSXytj	j
||dƒ}Wntjk
r…|jƒdSX|j
|_
|jƒ|S(NsSInstance was not mapped to a cell, likely due to an older nova-api service running.R…Rm(RtInstanceMappingRßR€RtInstanceMappingNotFoundRURVRptHostMappingtget_by_hosttHostMappingNotFoundRàtcell_mappingR¤(R"R%R…Rmtinst_mappingthost_mapping((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt_populate_instance_mappingµs 	

cCsõ|r.t|tjƒr.tjj|ƒ}n|jdƒ}|r„t|tjƒr„tjj||dƒ}t|d|ƒ}ni}yEtj	||dj
ƒtj|||ƒ}|j|||ƒ}
Wn™t
k
rj}itjd6dd6}xk|D]c}|j||j
d|||ƒy|j||ƒWntjk
rNnX|j|||ƒqÿWdSXxƒtjj||
ƒD]l\}}y|jƒWn3tjtjfk
rÐtjdd|ƒqnXtj|ƒ}tj ||ƒtj!j"||j
ƒ}|jd	iƒjd
dƒ}|dkr‰|j#|||ƒ}y|j||ƒWq‰tjk
r…|r|j$ƒndSXn|j%j&|d|d|dd
|d|d|d|d|d|d|d|d|dd|dƒqWdS(Nt
instance_typeRxiR’R“tbuild_instancessInstance deleted during buildR…tretrytnum_attemptsiRmRRŽRztadmin_passwordtinjected_filesR«Rvtblock_device_mappingtnodetnodenametlimits('R5RtNetworkRequestListtfrom_tuplesR¼R}R~RER©tpopulate_retryR€tbuild_request_spect_schedule_instancesR(RRÖRpR RçRRáR±RØtmovestziptrefreshR°tInstanceInfoCacheNotFoundRURVtcopytdeepcopytpopulate_filter_propertiestBlockDeviceMappingListRßRðRàRctbuild_and_run_instance(R"R%t	instancesRRzRõRöR«RvR÷t
legacy_bdmR‰RŽthoststexcRLR…Rmtlocal_filter_propstbdmsRôRî((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyRòÓs€
	

"					
cCsDtj|||ƒtjj|||ƒ}|jj||ƒ}|S(N(R©tsetup_instance_groupRR–tfrom_primitivesRitselect_destinations(R"R%RŽRztspec_objR((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyRÿ0s	csí|j}‡fd†}|jtjkr_tj|_|jdtjƒˆj	j
||ƒnŠ|jtjkr¶d}|j
dƒ}|r,tj|d|jƒƒy|||ƒ}Wnhtjk
r"tj|_|jƒtdƒ|}tj|d|ƒtjd|jd|ƒ‚nXWdQXnyëtj|d	|jƒÍ|soi}	tj|||gƒ}n"|jƒ|jƒ}	|jƒ}tj|	|jƒˆj|||	ƒ}
|
d
}tj|	|ƒ|d|d}}
ˆj	j |||d
|d|	d|
ƒWdQXWqétj!tj"fk
rcd|_|jƒtj#t$dƒd|ƒdSt%k
r²t&j'ƒ1d|_|jƒtjt(dƒd|ƒWdQXqéXn3tjt(dƒd|ƒtj|_|jƒdSdS(Ncs5|rˆjj||dtƒStjddƒ‚dS(Ntshow_deletedtimage_idt(RfR¼R¬Rt
ImageNotFound(tctxR(R"(sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pytsafe_image_show=sR´tshelved_image_idtget_image_infos4Unshelve attempted but the image %s cannot be found.R…R¹R”tschedule_instancesiRmRùRRzRøs)No valid host found for unshelve instances,Unshelve attempted but an error has occurreds@Unshelve attempted but vm_state not SHELVED or SHELVED_OFFLOADED()RtR’RtSHELVEDRtPOWERING_ONR“R¤t
UNSHELVINGRctstart_instancetSHELVED_OFFLOADEDRpR¼RR‚R€RRRÖR
RUR¸tUnshelveExceptionR©Rþtreset_forced_destinationst to_legacy_filter_properties_dictRœRýRÿRtunshelve_instanceRžR¢twarningRR(RR£R(R"R%R…RŽtsys_metaRRRR”RzRt
host_stateRmRø((R"sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR$:sz	
		

	


		


	

c$Cs«tj|d|jƒd}}|sÕ|
s]i|jgd6}tj|||gƒ}
nG|
jpig|
_|
jj|jƒ|
j	ƒ|
j
ƒ}|
jƒ}
yH|j||
|ƒ}|j
dƒ}|d|d|d}}}WqÕtjk
r`}tjƒN|j||jdi|jd6dd6||
ƒtjtd	ƒd
|ƒWdQXqÕtjk
rÑ}tjƒN|j||jdi|jd6dd6||
ƒtjtdƒd
|ƒWdQXqÕXnytjj||jdƒ}Wn-tjk
r#tjd
d
|ƒd}nXtj|j||dƒ|jj |d
|d|d|d|d|d|d|d|	d|
d|d|d|d|d|ƒWdQXdS(Ntrebuild_servertignore_hostsiRmRùRúR’R“sNo valid host found for rebuildR…s0Server with unsupported policy cannot be rebuiltR·s5No migration record for the rebuild/evacuate request.srebuild.scheduledtnew_passRöt	image_reftorig_image_reftorig_sys_metadataRtrecreateton_shared_storagetpreserve_ephemeralRÛRø(!RR‚R€RpRmR©RþR)R!R"R#RœRÿtpopRRžRR£R R’RUR%RR¢RR½tget_by_instance_and_statustMigrationNotFoundByStatusRVtnotify_about_instance_usageRnRctrebuild_instance(R"R%R…R,R+RöR*R-RR.R/R0RmRŽRøRúRzRt	host_dictR§RÛ((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR5“st






	
N(+R\R]R^R)R_R+RR[texpected_exceptionsRRžRÈRÇRÉRÊRËRÌRÍRÎRÏRÐRÑRÒRÓR¢RRpRÕR‘RƒR R±R²RRÆR›RçRðRòRÿR$R¬R5(((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyR—sJ					A			E					 [	
\(6R^Rtoslo_configRtoslo_logRtloggingtoslo_messagingR)t
oslo_utilsRRRØtnova.computeRRcRRRtnova.compute.utilsRRtnova.conductor.tasksR	R
tnova.dbRtnovaRt	nova.i18nR
RRRRRRRtnova.objectsR0Rtnova.schedulerRRiR©Rt	getLoggerR\RURltManagerRtBaseR(((sK/home/tvault/.virtenv/lib/python2.7/site-packages/nova/conductor/manager.pyt<module>s>"	d