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 / objects / instance.pyc
Size: Mime:
ó
±EYc@s£ddlZddlmZddlmZddlmZddl	m
Z
ddlmZddlm
Z
ddlmZdd	lmZdd
lmZddlmZddlmZdd
lmZddlmZddlmZddlmZddlmZddl m!Z!m"Z"ddlm#Z#ddlm$Z$ddl%m&Z&ddl%m'Z'ddlmZej(Z(ej)e*ƒZ+dddddddgZ,dddd d!gZ-d"d#dd$d%d&d'gZ.d"d#dgZ/e,e-e.Z0ddddgZ1d(Z2d)„Z3e4ƒZ5e&j6j7d*e&j8e&j9e&j:fd+„ƒYƒZ;d,„Z<e&j6j7d-e&j=e&j9fd.„ƒYƒZ>ej?j@d/„ƒZAd0„ZBdS(1iÿÿÿÿN(tcfg(t	exception(tlog(t	jsonutils(t	timeutils(tversionutils(t
joinedload(topts(trpcapi(tutils(ttask_states(t	vm_states(tdb(tapi(tmodels(t_LEt_LW(t
notifications(tobjects(tbase(tfieldstmetadatatsystem_metadatat
info_cachetsecurity_groupstpci_devicesttagstservicestfaulttflavort
old_flavort
new_flavortec2_idst
numa_topologytpci_requestst
vcpu_modeltmigration_contexttkeypairstdevice_metadatai2cCs›|s
|Sg|D]}|tkr|^q}gtD]}||kr6d|^q6}|rn|jdƒng|D]}|tkru|^qu}||S(sžReturn expected_attrs that are columns needing joining.

    NB: This function may modify expected_attrs if one
    requested attribute requires another.
    sextra.%stextra(t _INSTANCE_OPTIONAL_JOINED_FIELDSt_INSTANCE_EXTRA_FIELDStappend(texpected_attrstattrtsimple_colstfieldtcomplex_colstx((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_expected_colsIs

%tInstancecBs„eZdZiAejƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd	6ejdeƒd
6ejdeƒd6ejdeƒd6ejdeƒd
6ejdeƒd6ejdƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd6ej	deƒd6ej	deƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd 6ej
d!eƒd"6ejdeƒd#6ejdeƒd$6ejdeƒd%6ejdeƒd&6ejƒd'6ejdeƒd(6ejdeƒd)6ejdeƒd*6ejdeƒd+6ejdeƒd,6ej
deƒd-6ej
d!eƒd.6ejdeƒd/6ej
d!eƒd06ej
d!eƒd16ejdeƒd26ejƒd36ejƒd46ejd5deƒd66ejd7ƒd86ejd9deƒd:6ej
d!eƒd;6ejd<deƒd=6ejd>deƒd?6ejd@deƒdA6ejdBdeƒdC6ejdDƒdE6ejdFƒdG6ejdFdeƒdH6ejdFdeƒdI6ejdJdeƒdK6ejdLƒdM6ejdNdeƒdO6ejdPƒdQ6ZdRgZdS„ZdT„ZedU„ƒZd‰dV„ZdW„Zd‰edX„ZdY„ZedZ„ƒZed[„ƒZd\„Zed‰d]„ƒZee j!ed^„ƒƒZ"e#j$d‰ed_„ƒZ%e#j$d‰d`„ƒZ&e#j'da„ƒZ(e#j'db„ƒZ)dc„Z*dd„Z+de„Z,df„Z-dg„Z.dh„Z/di„Z0dj„Z1dk„Z2dl„Z3dm„Z4e#j'd‰d‰edn„ƒZ5e#j'edo„ƒZ6dp„Z7dq„Z8d‰dr„Z9d‰ds„Z:d‰dt„Z;du„Z<d‰dv„Z=dw„Z>dx„Z?dy„Z@eAdz„ZBeAd{„ZCd|„ZDd}„ZEd~„ZFd„ZGeHjId€„ƒZJe#j'd„ƒZKd‚„ZLdƒ„ZMd‰d„„ZNe#j'd…„ƒZOd†„ZPd‡„ZQeHjIdˆ„ƒZRRS(Šs2.3tidtnullabletuser_idt
project_idt	image_reft	kernel_idt
ramdisk_idthostnametlaunch_indextkey_nametkey_datatpower_statetvm_statet
task_statetServiceListRt	memory_mbtvcpustroot_gbtephemeral_gbtephemeral_key_uuidthosttnodetinstance_type_idt	user_datatreservation_idtlaunched_att
terminated_attavailability_zonetdisplay_nametdisplay_descriptiontlaunched_ontdefaulttlockedt	locked_bytos_typetarchitecturetvm_modetuuidtroot_device_nametdefault_ephemeral_devicetdefault_swap_devicetconfig_drivetaccess_ip_v4taccess_ip_v6tauto_disk_configtprogresstshutdown_terminatetdisable_terminatet	cell_nameRRtInstanceInfoCacheRtSecurityGroupListRt
InstanceFaultRtcleanedt
PciDeviceListRtInstanceNUMATopologyR!tInstancePCIRequestsR"tInstanceDeviceMetadataR&tTagListRtFlavorRRRtVirtCPUModelR#tEC2IdsR tMigrationContextR$tKeyPairListR%tnamecCs’tt|ƒj||ƒtj|ƒ}|dkrJd|krJ|d=n|dkrld|krl|d=n|d	krŽd|krŽ|d=ndS(
NiiR&R%iR(ii(ii(ii(tsuperR2tobj_make_compatibleRtconvert_version_to_tuple(tselft	primitivettarget_version((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRtÓs

cOs'tt|ƒj||Ž|jƒdS(N(RsR2t__init__t_reset_metadata_tracking(Rvtargstkwargs((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRyÝscCstjj|ƒS(N(Rt	ImageMetat
from_instance(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt
image_metaáscCs‚|dksd|kr?d|kr3t|jƒni|_n|dksWd|kr~d|krrt|jƒni|_ndS(NRR(tNonetdictRt_orig_system_metadataRt_orig_metadata(RvR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRzås'cCsatt|ƒjƒ}t|dƒr9t|jƒ|_nt|dƒr]t|jƒ|_n|S(s&Create a copy of this instance object.RƒR‚(RsR2t	obj_clonethasattrRRƒR‚(Rvtnobj((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR„íscCs0tt|ƒj|d|ƒ|jd|ƒdS(Nt	recursiveR(RsR2tobj_reset_changesRz(RvRR‡((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRˆúscCsutt|ƒjƒ}d|krC|j|jkrC|jdƒnd|krq|j|jkrq|jdƒn|S(NRR(RsR2tobj_what_changedRRƒtaddRR‚(Rvtchanges((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR‰ÿscCs,tt|ƒj|||ƒ}|jƒ|S(N(RsR2t_obj_from_primitiveRz(tclstcontexttobjverRwRv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRŒs	
cCsytj|j}Wnêtk
r¤i}xF|jD];}|dkrLq4n|j|ƒsaq4n||||<q4Wytj|}Wqtk
r |j}qXn]tj	k
r|j
tjkrá|j
tjkrád}qtjtdƒƒ|j}nX|S(NRrtsOCould not lazy-load instance.id while attempting to generate the instance name.(tCONFtinstance_name_templateR3t	TypeErrorRtobj_attr_is_settKeyErrorRXRtObjectActionErrorR?RtBUILDINGR@R
t
SCHEDULINGtLOGterrorR(Rvt	base_nametinfotkey((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRrs*

	
cCs tj|ƒ}tjj|dƒ|_|drNtjj|dƒ|_n	d|_|dr}tjj|dƒ|_n	d|_|j	dddgƒdS(s5Load instance flavor information from instance_extra.tcurtoldtnewRRRN(
RtloadsRRmtobj_from_primitiveRRR€RRˆ(Rvt	db_flavortflavor_info((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_flavor_from_db5s
		
		c	Cs²||_|dkrg}nxy|jD]n}|tkr@q(q(|dkrf|d|dk|_q(|dkrˆ|ddk|_q(||||<q(Wt|dƒrÅd|jko¿|d}nd|koØ|d}d|krýtj	|ƒ|d<nd|krtj
|ƒ|d<nd	|krJtjj
||jƒ|d	<nd
|kr…|ry|j|djd
ƒƒq…d|_nd|krÀ|r´|j|djdƒƒqÀd|_nd|krû|rï|j|djdƒƒqûd|_nd
|kr6|r*|j|djd
ƒƒq6d|_nd|krO|jƒnd|krŠ|r~|j|djdƒƒqŠd|_nd|kr¼|r¼|j|djdƒƒq¼nd|kr?|jdƒdkréd|_n$|jdƒs
tj|ƒ|_n|jdk	r?|jj||j|dƒq?nt gdD]}||k^qIƒr˜|r˜|djdƒr˜|j!|ddƒq˜nd|krÙt"j#|tj$|ƒtj%|dƒ}||d<nd|kr"t"j#|tj&|ƒtj'|jdgƒƒ}||d<nd|krct"j#|tj(|ƒtj)|dƒ}	|	|d<nd|kr¤t"j#|tj*|ƒtj+|dƒ}
|
|d<n|j,ƒ|S(sjMethod to help with migration to objects.

        Converts a database entity to a formal object.
        tdeletedR3Rgit__dict__R'RRRR!R"R&R#R R$R%RRRRRRRRN(sflavors
old_flavors
new_flavor(-t_contextR€RtINSTANCE_OPTIONAL_ATTRSR¦RgR…R§R	t
instance_metatinstance_sys_metaRRftget_latest_for_instanceRXt_load_numa_topologytgetR!t_load_pci_requestsR"t_load_device_metadataR&t_load_vcpu_modelR#t
_load_ec2_idst_load_migration_contextR$t_load_keypairsRR”Rdt_from_db_objecttanyR¥Rt
obj_make_listRht	PciDeviceRet
SecurityGroupRltTagRAtServiceRˆ(RŽtinstancetdb_instR+R.t
have_extraR0Rt
sec_groupsRR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRµGs®			
 




cCstj||d|ƒS(Ntcolumns_to_join(Rtinstance_get_by_uuid(RŽRXRÀt	use_slave((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_db_instance_get_by_uuid¼scCs[|dkrddg}nt|ƒ}|j|||d|ƒ}|j||ƒ||ƒS(NRRRÂ(R€R1RÃRµ(RRŽRXR+RÂRÀR½((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_uuidÃs	cCsX|dkrddg}nt|ƒ}tj||d|ƒ}|j||ƒ||ƒS(NRRRÀ(R€R1Rtinstance_getRµ(RRŽtinst_idR+RÀR½((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt	get_by_idÍs	cCsJ|jdƒr*tjddddƒ‚n|jƒ}gtD]}||kr=|^q=}d|krŽg|dD]}|j^qr|d<nd|kr»i|djjƒd6|d<ni|d	<|jd
dƒ}|j
d
ƒ|r|jƒ|d	d
<nd|d	d
<|jddƒ}|j
dƒ|rK|jƒ|d	d<nd|d	d<|jddƒ}|j
dƒ|r•|jƒ|d	d<nd|d	d<|jd
dƒ}|r`|j
d
ƒ|jdƒrï|j
rï|j
jƒpòd}	|jdƒr|jr|jjƒpd}
i|jjƒd6|	d6|
d6}tj|ƒ|d	d
<n|jddƒ}|dk	r«|j
dƒtj|jƒƒ|d	d<n|jddƒ}
|j
dƒ|
rðtj|
jƒƒ|d	d<nd|d	d<tj|j|ƒ}|j|j|||ƒ|jƒ|jdgƒdS(NR3tactiontcreatetreasonsalready createdRRtnetwork_infoR'R!R"R&RRRRžRŸR R%R#R (R”RR–tobj_get_changestINSTANCE_DEFAULT_FIELDSRrRËtjsontpopR€R*t_to_jsontto_jsonRtobj_to_primitiveRRRtdumpsRtinstance_createR¨RµR²Rˆ(RvtupdatesR,R+R0R!R"R&RRŸR R¤R%R#R½((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRÉ×sp
$




		


 
cCsh|jdƒs*tjddddƒ‚n|jdƒsTtjddddƒ‚n|jdƒsn|jrŒtjdtjdƒƒ}nd}tj	ƒ}|dk	r¹|j
ƒ}ny8tj|j|j
d	|ƒ}|j|j||ƒWn,tjk
rtjdddd
ƒ‚nX|dkrNtjƒ}|j|j|ƒnt|tjdƒƒdS(NR3RÈtdestroyRÊsalready destroyedRXsno uuidRGt
constraintshost changedtcompute(R”RR–RGRR×t	equal_anyR€t
cells_optst
get_cell_typeR„tinstance_destroyR¨RXRµtConstraintNotMettcells_rpcapitCellsAPItinstance_destroy_at_toptdelattrRtget_attrname(RvR×t	cell_typetstale_instanceR½t	cells_api((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRÖ s.	
cCs6|jr2|jj|ƒ|jjƒWdQXndS(N(Rtobj_alternate_contexttsave(RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_info_cache>s	cCsQ|jpg}x.|D]&}|j|ƒ|jƒWdQXqW|jjƒdS(N(RRæRçRˆ(RvRŽRtsecgroup((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_security_groupsCs

cCsdS(N((RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_faultJscCs|jjƒ|jd<dS(NR"(R"RÑt_extra_values_to_save(RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_pci_requestsNscCsdS(N((RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_pci_devicesUscCs³tgdD]}||jƒk^q
ƒs/dSi|jjƒd6|jrZ|jjƒp]dd6|jry|jjƒp|dd6}tj|ƒ|j	d<|j
dddgƒdS(NRRRRžRŸR (sflavors
old_flavors
new_flavor(R¶R‰RRÒRR€RRRÓRìRˆ(RvRŽR0R¤((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_flavor[s%		cCs&d|jƒkr"|j|ƒndS(NR(R‰Rï(RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_old_flavoriscCs&d|jƒkr"|j|ƒndS(NR(R‰Rï(RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_new_flavormscCsdS(N((RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt
_save_ec2_idsqscCsdS(N((RvRŽ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_keypairsuscCs_||jƒkr[t||ƒ}d}|dk	rKtj|jƒƒ}n||j|<ndS(N(R‰tgetattrR€RRÓRÒRì(RvR.tobjtvalue((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_save_extra_genericysc
sΈjƒˆ_ˆj‰tjƒ}|dk	r@ˆjƒ‰n|dko[ˆjo[ˆj}|r‚‡‡‡‡‡fd†}niˆ_i}ˆj	ƒ}xWˆj
D]L}	ˆj|	ƒrtˆj
|	t
j
ƒrytˆd|	ƒˆƒWqótk
r>|	tkrˆj|	ƒq§ntjtdƒ|	dˆƒqótjk
r}}
|
jdkre‚ntjdˆjƒ‚qóXq§|	|kr§|	dkrâˆ|	dk	râˆ|	jtjƒrâˆ|	jtjd	d
ƒ||	<qóˆ|	||	<q§q§Wˆjrtjˆˆjˆjƒn|s6|r2|ƒndSd|krf|drYd
|d<qfd
|d<nˆdk	rˆ|d<nˆdk	r˜ˆ|d<ngt D]}ˆj|ƒrŸ|^qŸ}d|krÜ|j!dƒnd|kr|j"dƒ|j"dƒntj#ˆˆj|dt$|ƒƒ\‰}
ˆj%ˆˆ|
d|ƒ|rX|ƒn7|dkrˆjrt&j'ƒ}|j(ˆˆƒqn‡‡‡fd†}ˆjs¹d„}n|ƒˆj)ƒdS(srSave updates to this instance

        Column-wise updates will be made based on the result of
        self.what_changed(). If expected_task_state is provided,
        it will be checked against the in-database copy of the
        instance before updates are made.

        :param:context: Security context
        :param:expected_task_state: Optional tuple of valid task states
        for the instance to be in
        :param:expected_vm_state: Optional tuple of valid vm states
        for the instance to be in
        :param admin_state_reset: True if admin API is forcing setting
        of task_state/vm_state

        R
cs)tjƒ}|jˆˆˆˆˆƒdS(N(RÞRßtinstance_update_from_api(Rå(tadmin_state_resetRŽtexpected_task_statetexpected_vm_stateRä(sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_handle_cell_update_from_api«s
s_save_%ssNo save handler for %sR¼t
instance_uuidtinstance_idRcRiNRgiRúRûRRRRÀR+RØcs#ˆjƒ}tjˆˆ|ƒdS(N(R„Rtsend_update(tnew_ref(RŽtold_refRv(sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_notifyscSsdS(N(R€(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt<lambda>s(*t_cell_name_blocks_synct_sync_cellsR¨RÚRÛR€R„RcRìR‰RR”t
isinstancetObjectFieldRôtAttributeErrorR)R÷R™RRtdb_exctDBReferenceErrorRtInstanceNotFoundRXt
startswithtcells_utilstBLOCK_SYNC_FLAGtreplaceRtinstance_extra_update_by_uuidR(tremoveR*t instance_update_and_get_originalR1RµRÞRßtinstance_update_at_topRˆ(RvRûRúRùRãtcells_update_from_apiRüRÕR‹R.texpR,R+tinst_refRåR((RùRŽRúRûRRvRäsJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRçsŽ	
		



	









		cCsÐgtD]}|j|ƒr|^q}|jj|jd|jd|d|ƒ}d|_xd|jD]Y}|j|ƒre|dkr–|jj	ƒq¾||||kr¾||||<q¾qeqeW|j
ƒdS(NRXR+RÂR(R©R”t	__class__RÄR¨RXR€RRtrefreshRˆ(RvRÂR.R'tcurrent((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRs
		cCsg|jj|jd|jd|gƒ}|j|ƒrG||||<ntjdddd|ƒ‚dS(NRXR+RÈt
obj_load_attrRÊsloading %s requires recursion(RRÄR¨RXR”RR–(RvtattrnameR¼((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt
_load_generic*s		cCs"tjj|j|jƒ|_dS(N(RRfR¬R¨RXR(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_load_fault7s	cCsp|dk	r*tjj|j|ƒ|_nBy"tjj|j|jƒ|_Wntj	k
rkd|_nXdS(N(
R€RRitobj_from_db_objRXR!tget_by_instance_uuidR¨RtNumaTopologyNotFound(Rvtdb_topology((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR­;s	cCsR|dk	r0tjj|j|j|ƒ|_ntjj|j|jƒ|_dS(N(R€RRjtobj_from_dbR¨RXR"R(Rvtdb_requests((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR¯Hs
		cCsL|dk	r*tjj|j|ƒ|_ntjj|j|jƒ|_dS(N(R€RRkR"R¨R&RRX(RvR#((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR°Rs
		cCsƒ|jj|jd|jdddgƒ}d|_|j|_|j|_|j|_|jj	|j
diƒƒ|j|_dS(NRXR+RR(RRÄR¨RXR€RRRRtupdateR®(RvR¼((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_load_flavor\s		cCsU|dkr-tjj|j|jƒ|_n$tj|ƒ}tjj	|ƒ|_dS(N(
R€RRnRR¨RXR#RR¡R¢(Rvt
db_vcpu_model((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR±ns		cCstjj|j|ƒ|_dS(N(RRotget_by_instanceR¨R (Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR²wscCstjj|j|ƒ|_dS(N(RReR'R¨R(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_load_security_groupszs	cCs"tjj|j|jƒ|_dS(N(RRhRR¨RXR(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_load_pci_devices~s	cCs‚|tkrQy"tjj|j|jƒ|_Wq~tjk
rMd|_q~Xn-|dkrid|_ntjj
|ƒ|_dS(N(t_NO_DATA_SENTINELRRpRR¨RXR$RtMigrationContextNotFoundR€R(Rvt
db_context((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR³‚s		cCs|tkrÜtjj|j|jddgƒ}d|kro|j|_|jjdtƒ|jdgƒdStj	dgƒ|_y>tj
j|j|j|j
dtƒ}|jjj|ƒWqtjk
rØqXn7|rtj	jtj|ƒƒ|_|jdgƒndS(NR+R%R‡Rt	localonly(R*RR2RÄR¨RXR%RˆtTrueRqtKeyPairtget_by_nameR5R<R*RtKeypairNotFoundR¢RR¡(Rvtdb_keypairstinstR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR´s*			cCs"tjj|j|jƒ|_dS(N(RRltget_by_resource_idR¨RXR(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt
_load_tags¯s	cCs3|jr|jddƒntjdd|ƒdS(Ntprefixtnew_sRTrying to apply a migration context that does not seem to be set for this instanceR¼(R$t"_set_migration_context_to_instanceR™tdebug(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytapply_migration_context³s	cCs3|jr|jddƒntjdd|ƒdS(NR6told_sSTrying to revert a migration context that does not seem to be set for this instanceR¼(R$R8R™R9(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytrevert_migration_contextºs	cCscx\tD]T}t||dƒ||}||jkrt|j|ƒ}t|||ƒqqWdS(N(t_MIGRATION_CONTEXT_ATTRStsetattrR€R$Rô(RvR6tinst_attr_namet	attr_namet
attr_value((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR8Ás

c	csji}x!tD]}t||ƒ||<q
W|jƒz	dVWdx"tD]}t||||ƒqGWXdS(sþContext manager to temporarily apply the migration context.

        Calling .save() from within the context manager means that the mutated
        context will be saved which can cause incorrect resource tracking, and
        should be avoided.
        N(R=RôR:R>(Rvtcurrent_valuesR@((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytmutated_migration_contextÊs

	
cCs9|jr5tj|j|jidd6ƒd|_ndS(NR$(R$RRR¨RXR€(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytdrop_migration_contextÜs	cCs+|j}|dk	r'|jƒ|_ndS(N(R!R€tclear_host_pinning(RvR!((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytclear_numa_topologyãs	cCs|tkr+tjdddd|ƒ‚n|jsUtjddd|jƒƒ‚ntjdi|d6|jƒd	6|jd
6ƒ|dkrœ|j	ƒnk|dkrµ|j
ƒnR|d
krÎ|jƒn9|dkrç|jƒn |dkr|j
ƒn|dkr|jƒnî|dkr2|jƒnÕ|dkrH|jƒS|dkra|jƒn¦|dkrz|jƒnd|kr“|jƒnt|dkrÀ|jrÀtj|jƒ|_nG|dkrú|jrítj|jƒ|_q|jƒn
|j|ƒ|j|gƒdS(NRÈRRÊsattribute %s not lazy-loadabletmethodtobjtypes1Lazy-loading '%(attr)s' on %(name)s uuid %(uuid)sR,RrRXRR!R&R"R#R R$R%RRRRR(R©RR–R¨tOrphanedObjectErrortobj_nameR™R9RXRR­R°R¯R±R²R³R´R(R)R%R¦RRARRlRR5RRˆ(RvR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRèsR			












	

cCsS|dk	rd|nd}d|}yt||ƒSWntjk
rNdSXdS(Ns%s_Rs%sflavor(R€RôRtFlavorNotFound(Rvt	namespaceR6R,((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt
get_flavor$s
cCs{tj|j|j|ƒd|jƒk}|j|=|jj|dƒt	j
|j||ƒ|sw|jdgƒndS(s"Optimized metadata delete method.

        This provides a more efficient way to delete a single metadata
        key, instead of just calling instance.save(). This should be called
        with the key still present in self.metadata, which it will update
        after completion.
        RN(Rtinstance_metadata_deleteR¨RXR‰RRƒRÏR€RRÿRˆ(RvRtmd_was_changed((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytdelete_metadata_key2s	
cCs;|jdƒr7|jdk	r7|jjtjƒr7tStS(NRc(R”RcR€RR
RR.tFalse(Rv((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRCs
cCs©|jdƒs|jdkr#dSd|jƒk}|jjtjƒrŒ|jjtjddƒ|_t|jƒdkrŒd|_qŒn|s¥|j	dgƒndS(s9Undo skip_cell_sync()'s cell_name modification if appliedRcNRii(
R”RcR€R‰RR
RRtlenRˆ(Rvt
cn_changed((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_normalize_cell_nameJs	ccsŠd|jƒk}|jdƒs1|jdkr=d|_ndtj|jf|_|so|jdgƒnz	dVWd|jƒXdS(sCContext manager to save an instance without syncing cells.

        Temporarily disables the cells syncing logic, if enabled.  This should
        only be used when saving an instance that has been passed down/up from
        another cell in order to avoid passing it back to the originator to be
        re-saved.
        RcRs%s%sN(R‰R”RcR€R
RRˆRT(RvRS((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytskip_cells_syncZs		N(St__name__t
__module__tVERSIONRtIntegerFieldtStringFieldR.Rt	UUIDFieldt
DateTimeFieldtBooleanFieldRQtIPV4AddressFieldtIPV6AddressFieldtDictOfStringsFieldtDictOfNullableStringsFieldtobj_extra_fieldsRtRytpropertyRR€RzR„RˆR‰tclassmethodRŒRrR¥tstaticmethodRµRtselect_db_reader_modeRÃRtremotable_classmethodRÄRÇt	remotableRÉRÖRèRêRëRíRîRïRðRñRòRóR÷RçRRRR­R¯R°R%R±R²R(R)R*R³R´R5R:R<R8t
contextlibtcontextmanagerRCRDRFRRMRPRRTRU(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyR2bs








		
		
		&	t		I											“	
	


												<		c
Cs|od|k}i}|r|jdƒg|D]}|d^q2}tjj||ƒ}x0|D]%}	|	j|krd|	||	j<qdqdWntj}
g|_x`|D]X}|
j||
|ƒ|d|ƒ}|rñ|j|jdƒ|_
n|jj|ƒq©W|jƒ|S(NRRXR+(
RRtInstanceFaultListtget_by_instance_uuidsRýR2RµR®RXR€RR*Rˆ(
RŽt	inst_listtdb_inst_listR+t	get_faulttinst_faultsR3tinstance_uuidstfaultsRtinst_clsR½tinst_obj((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_make_instance_listos*
	
		
	
tInstanceListcBs°eZdZiejdƒd6Zeejddddde	ddd„ƒƒZ
ejddddde	ddd„ƒZ
eeje	d„ƒƒZejde	d„ƒZejdd	„ƒZejddd
„ƒZejdd„ƒZejdd„ƒZeeje	d
„ƒƒZejdddde	d„ƒZedddde	d„ƒZejd„ƒZed„ƒZejd„ƒZd„Zejd„ƒZRS(s2.1R2Rt
created_attdesccCs‹|	s|
rEtj||d|d|dt|ƒd|	d|
ƒ}n0tj||||d|d|dt|ƒƒ}t||ƒ||ƒS(NtlimittmarkerRÀt	sort_keyst	sort_dirs(Rt instance_get_all_by_filters_sortR1tinstance_get_all_by_filtersRu(RRŽtfilterstsort_keytsort_dirRyRzR+RÂR{R|Rn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_get_by_filters_impl”scCs@|j||d|d|d|d|d|d|d|	d|
ƒS(	NR€RRyRzR+RÂR{R|(R‚(RRŽRR€RRyRzR+RÂR{R|((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_filters¦scCstj||d|ƒS(NRÀ(Rtinstance_get_all_by_host(RŽRGRÀRÂ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_db_instance_get_all_by_host°scCs:|j||dt|ƒd|ƒ}t||ƒ||ƒS(NRÀRÂ(R…R1Ru(RRŽRGR+RÂRn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_host·s
	cCs7tj|||dt|ƒƒ}t||ƒ||ƒS(NRÀ(Rt!instance_get_all_by_host_and_nodeR1Ru(RRŽRGRHR+Rn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_host_and_node¿s
cCs.tj||d|ƒ}t||ƒ||ƒS(Nttype_id(Rt%instance_get_all_by_host_and_not_typeRu(RRŽRGR‰R+Rn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_host_and_not_typeÇscCs1tj|dt|ƒƒ}t||ƒ||ƒS(s#Returns all instances on all nodes.RÀ(Rtinstance_get_allR1Ru(RRŽR+tdb_instances((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_allÏscCs(tj||ƒ}t||ƒ||ƒS(N(Rt"instance_get_all_hung_in_rebootingRu(RRŽt
reboot_windowR+Rn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_hung_in_rebooting×s		cCstj|||||d|ƒS(NRÀ(Rt$instance_get_active_by_window_joined(RŽtbegintendR6RGRÀRÂ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt(_db_instance_get_active_by_window_joinedßsc	
Csmtj|ƒ}|r$tj|ƒnd}|j|||||dt|ƒd|ƒ}t||ƒ||ƒS(NRÀRÂ(Rt
parse_isotimeR€R•R1Ru(	RRŽR“R”R6RGR+RÂRn((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_get_active_by_window_joinedès	c	CsLtj|ƒ}|r$tj|ƒnd}|j||||||d|ƒS(s[Get instances and joins active during a certain time window.

        :param:context: nova request context
        :param:begin: datetime for the start of the time window
        :param:end: datetime for the end of the time window
        :param:project_id: used to filter instances by project
        :param:host: used to filter instances on a given compute host
        :param:expected_attrs: list of related fields that can be joined
        in the database layer when querying for instances
        :param use_slave if True, ship this query off to a DB slave
        :returns: InstanceList

        RÂN(R	tisotimeR€R—(RRŽR“R”R6RGR+RÂ((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_active_by_window_joinedøscCs>tj||dddgƒ}t||ƒ|dddgƒS(NRÀsinstances.info_cachesinstances.system_metadatat	instancesRR(Rtsecurity_group_getRu(RRŽtsecurity_group_idtdb_secgroup((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_security_group_ids	cCs|j||jƒS(N(RžR3(RRŽtsecurity_group((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_by_security_groupscCs(tj||ƒ}t||ƒ|gƒS(N(Rt+instance_get_all_by_grantee_security_groupsRu(RRŽtsecurity_group_idsR((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt!get_by_grantee_security_group_ids scCsÀg|D]}|j^q}tjj|j|ƒ}i}x-|D]%}|j|krA|||j<qAqAWxI|D]A}|j|kr™||j|_n	d|_|jdgƒqqW|j	ƒS(s…Batch query the database for our instances' faults.

        :returns: A list of instance uuids for which faults were found.
        RN(
RXRRkRlR¨RýRR€Rˆtkeys(RvR3tuuidsRrtfaults_by_uuidRR¼((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytfill_faults&s	

	cCs3tj||dgƒ}g|D]}|d^qS(NRÀRX(RR„(RRŽRGRR3((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytget_uuids_by_host>s	N(RVRWRXRtListOfObjectsFieldRdRRfR€RQR‚RRgRƒReR…R†RˆR‹RŽR‘R•R—R™RžR R£R§R¨(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyRvŠsX		
				c	CsA|jjtjƒjtdƒƒjddƒjddƒj|ƒj	ƒ}t
|ƒ}d}x×|D]Ï}|jj}t
jdgƒ}|ry2t
jj||jj|ƒ}|j
j|ƒWqtjk
rýtjtdƒi|jd6|d6ƒqXntj|jƒƒ|_|j|jƒ|d	7}qdW||fS(
NR¼R%R¦iRs/Instance %(uuid)s keypair %(keyname)s not foundRXtkeynamei(tsessiontqueryRt
InstanceExtratoptionsRt	filter_byR€RytallRRR¼R<RRqR/R0R5R*RR1R™twarningRRýRRÓRÒR%Rç(	tctxttcountt	db_extrast	count_allt	count_hittdb_extraR<R%R((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt_migrate_instance_keypairsGs0	
			cCs
t||ƒS(N(R¸(R²R³((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pytmigrate_instance_keypairsfs(CRitoslo_configRtoslo_dbRR	toslo_logRtloggingtoslo_serializationRt
oslo_utilsRRtsqlalchemy.ormRt
nova.cellsRRÚRRÞR	R
tnova.computeR
RtnovaRtnova.db.sqlalchemyR
tdb_apiRt	nova.i18nRRRRtnova.objectsRRR‘t	getLoggerRVR™R(t$_INSTANCE_OPTIONAL_NON_COLUMN_FIELDSR)R=R©RÍt
MAX_TAG_COUNTR1tobjectR*tNovaObjectRegistrytregistertNovaPersistentObjectt
NovaObjecttNovaObjectDictCompatR2RutObjectListBaseRvtmain_context_managertwriterR¸R¹(((sJ/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance.pyt<module>sj						ÿÿÿÿ	¼