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_group.pyc
Size: Mime:
ó
±EYc@s²ddlZddlmZddlmZddlmZddlmZddlm	Z	ddl
mZddl
mZdd	lmZdd
lmZddlmZddl
mZddl
mZdd
lmZddlmZdgZeed„Zd„Zed„Zd„Zd„Zd„Z ej!j"dej#ej$ej%fd„ƒYƒZ&ej!j"dej'ej$fd„ƒYƒZ(ej)j*d„ƒZ+d„Z,dS(iÿÿÿÿN(t	exception(t	uuidutils(tversionutils(tcontains_eager(t
joinedload(tutils(tdb(tapi(t
api_models(tmodels(tobjects(tbase(tfieldsthostscCs||jjtjƒjtdƒƒjtdƒƒ}|jsT|jd|jƒ}n|rx|rx|j	||kƒ}n|S(Nt	_policiest_memberst
project_id(
tsessiontqueryRt
InstanceGrouptoptionsRtis_admint	filter_byRtfilter(tcontexttid_fieldtidR((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_instance_group_get_query%s	cCs|jj|ƒjd|ƒS(Ntgroup_id(RRR(Rtmodel_classR((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_instance_group_model_get_query0sc
CsÊg}tƒ}x1|D])}	|jt|	|ƒƒ|j|	ƒqWx€|D]x}
|
|krbqJn|ƒ}i|d6}|
||<|j|ƒ|jj|ƒ|rµ|j|ƒn|j|ƒqJW|S(NR(tsettaddtgetattrtappendtupdateR(
RRtitemstitem_modelstfieldRtappend_to_modelsR	talready_existingtdb_itemtitemtmodeltvalues((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_instance_group_model_add4s"	

	


c	Csjt|tj|jƒ}|jtjjjt|ƒƒƒ}t|tj||j	ƒd|jd|j
ƒS(NtpolicyR'(RRtInstanceGroupPolicyRRR.tin_RR-tallR(RtgrouptpoliciesR((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_instance_group_policies_addIsc	Csjt|tj|jƒ}|jtjjjt|ƒƒƒ}t|tj||j	ƒd|jd|j
ƒS(Nt
instance_uuidR'(RRtInstanceGroupMemberRRR5R0RR-R1R(RR2tmembersR((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_instance_group_members_addTscCs |jjtjƒjtjtjjjt|ƒƒƒj	tjj
|kƒjtdƒƒj
ƒ}|s~tjd|ƒ‚nt|tj||jd|jƒS(NRt
group_uuidR5(RRRRt	outerjoinR6R5R0RRtuuidRRtfirstRtInstanceGroupNotFoundR-RR(RR9R7R2((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt#_instance_group_members_add_by_uuid_sRcBsqeZdZiejƒd6ejdeƒd6ejdeƒd6ejƒd6ejdeƒd6ejdeƒd6ejdeƒd6ejdeƒd	6Zd
„Z	e
d„ƒZe
ej
jd„ƒƒZe
ej
jd
„ƒƒZe
ej
jd„ƒƒZe
ej
jd„ƒƒZe
ej
jd„ƒƒZe
ej
jd!d!d„ƒƒZe
ej
jd„ƒƒZe
ej
jd„ƒƒZd„Zejd„ƒZejd„ƒZejd„ƒZed„ƒZ ej!d„ƒZ"ej!d„ƒZ#e$d„Z%ej!d„ƒZ&ej!d„ƒZ'ejd„ƒZ(ej!d!d„ƒZ)ej!d „ƒZ*RS("s1.10Rtnullabletuser_idRR;tnameR3R7R
cCs,tj|ƒ}|dkr(i|d<ndS(Niitmetadetails(ii(Rtconvert_version_to_tuple(tselft	primitivettarget_version((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytobj_make_compatiblescCsŒxr|jD]g}|tkr"q
nitd6dd6}||krct||ƒrc||||<q
||||<q
W||_|jƒ|S(sjMethod to help with migration to objects.

        Converts a database entity to a formal object.
        tdeletedt
deleted_atN(RtLAZY_LOAD_FIELDStFalsetNonethasattrt_contexttobj_reset_changes(Rtinstance_grouptdb_instR&tignore((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_from_db_object”s

	
cCsCt|dtjjd|ƒjƒ}|s?tjd|ƒ‚n|S(NRRR9(RRRR;R<RR=(RR;tgrp((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_get_from_db_by_uuid®s	cCsCt|dtjjd|ƒjƒ}|s?tjd|ƒ‚n|S(NRRR9(RRRRR<RR=(RRRT((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_get_from_db_by_id¸s	cCs=t|ƒjd|ƒjƒ}|s9tjd|ƒ‚n|S(NRAR9(RRR<RR=(RRART((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_get_from_db_by_nameÂscCs[|jjtjƒjd|ƒjƒ}|sBtjddƒ‚ntj	||j
ƒ}|S(NR5R9t(RRRR6RR<RR=RRVR(RR5t
grp_memberRT((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_get_from_db_by_instanceÊscCsÁt|dtjjd|ƒjƒ}|s?tjd|ƒ‚ntj|ƒ}|jddƒ}|jddƒ}|j
|ƒ|dk	ržt|||ƒn|dk	r½t|||ƒn|S(NRRR9R3R7(
RRRR;R<RR=tcopytpopRLR#R4R8(RR9R,RTtvalues_copyR3R7((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_save_in_dbÔs	
cCs¬y-tjƒ}|j|ƒ|j|jƒWn*tjk
rYtjd|dƒ‚nX|rxt	|||ƒ|_
n	g|_
|rŸt|||ƒ|_n	g|_|S(NR9R;(
RRR#tsaveRtdb_exctDBDuplicateEntryRtInstanceGroupIdExistsR4RR8R(RR,R3R7R2((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt
_create_in_dbês
				cCs§t|dtjjd|ƒ}|jƒdkrEtjd|ƒ‚n|jƒj}tj	tj
g}x0|D](}|jj|ƒj
d|ƒjƒqmW|jƒdS(NRRiR9R(RRRR;tcountRR=R<RR/R6RRRtdelete(RR9tqryRtinstance_modelsR+((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_destroy_in_dbs		
&cCst|||ƒS(N(R>(RR9R7((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_add_members_in_dbs	cCsN|dkr+tjdddd|ƒ‚n|jƒ|_|jdgƒdS(NR
tactiont
obj_load_attrtreasonsunable to load %s(RtObjectActionErrort	get_hostsR
RO(RDtattrname((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyRks
	cCsjd}y|j||ƒ}Wntjk
r2nX|dkrTtj||ƒ}n|j||ƒ|ƒS(N(RLRURR=Rtinstance_group_getRS(tclsRR;tdb_group((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytget_by_uuid#scCsŽy|j||ƒ}Wn_tjk
rwtj||jƒ}x!|D]}|j|krE|SqEWtjd|ƒ‚nX|j||ƒ|ƒS(NR9(RWRR=tInstanceGroupListt_get_main_by_project_idRRARS(RqRRARrtigstig((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytget_by_name.s	
cCsjd}y|j||ƒ}Wntjk
r2nX|dkrTtj||ƒ}n|j||ƒ|ƒS(N(RLRZRR=Rtinstance_group_get_by_instanceRS(RqRR5Rr((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytget_by_instance_uuid;s	cCs3tj|ƒr|j||ƒS|j||ƒSdS(N(Rtis_uuid_likeRsRx(RqRthint((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytget_by_hintGscCsç|jƒ}d|kr-tjddƒ‚n|s7dSt|ƒ}|j|d<y|j|j|j|ƒ}WnEtjk
r¶tj	|j|j|ƒtj
|j|jƒ}nX|j|j||ƒtj
|jd|ƒdS(s$Save updates to this instance group.R
R&Ntserver_group_idR#(tobj_get_changesRtInstanceGroupSaveExceptiontdictR;R^RNR=Rtinstance_group_updateRpRSt
compute_utilst notify_about_server_group_update(RDtupdatestpayloadRr((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyR_Ns
cCsq|jj|j|jƒ}xE|jD]:}|j|ƒr%||||kr%||||<q%q%W|jƒdS(sRefreshes the instance group.N(t	__class__RsRNR;Rtobj_attr_is_setRO(RDtcurrentR&((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytrefreshos
#cCsQ|jdƒr*tjddddƒ‚n|jƒ}t|ƒ}|jddƒ|jddƒ}|jddƒ}d|kr¡tjƒ|_	|j	|d<n|sóy2t
j|j|j	ƒtjdddd	ƒ‚Wqótj
k
rïqóXn|j|j|d|d|ƒ}|j|j||ƒ|j	|d
<tj|jd|ƒdS(NRRjtcreateRlsalready createdR3R7R;salready created in mainR~(RˆRRmRRR\RLRt
generate_uuidR;RRpRNR=RcRSRƒR„(RDt	skipcheckR…R†R3R7Rr((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_createxs4	
	
cCs|jƒdS(N(RŽ(RD((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyR‹™scCs{i|jd6}y|j|j|jƒWn*tjk
rVtj|j|jƒnX|jƒtj	|jd|ƒdS(NR~Re(
R;RhRNRR=Rtinstance_group_deleteRORƒR„(RDR†((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytdestroys
cCs“i|d6|d6}y6|j|||ƒ}g|D]}|d^q3}Wn)tjk
rutj|||ƒ}nXtj|d|ƒt|ƒS(NR~tinstance_uuidsR5t	addmember(RiRR=Rtinstance_group_members_addRƒR„tlist(RqRR9R‘R†R7tmember((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytadd_members¨s

	!
	
cCs†|j}|r(t|ƒt|ƒ}ni|d6td6}tjj|jd|ƒ}ttg|D]}|jrd|j^qdƒƒS(sGet a list of hosts for non-deleted instances in the group

        This method allows you to get a list of the hosts where instances in
        this group are currently running.  There's also an option to exclude
        certain instance UUIDs from this calculation.

        R;RHtfilters(	R7RRKR
tInstanceListtget_by_filtersRNR”thost(RDtexcludetfilter_uuidsR—t	instancestinstance((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyRn·s			cCsI|j}i|d6|d6td6}tjj|jd|ƒ}t|ƒS(s=Count the number of instances in a group belonging to a user.R;R@RHR—(R7RKR
R˜R™RNtlen(RDR@RœR—R((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytcount_members_by_userÉs
		N(+t__name__t
__module__tVERSIONRtIntegerFieldtStringFieldtTruet	UUIDFieldtListOfStringsFieldRGtstaticmethodRStdb_apitapi_context_managertreaderRURVRWRZtwriterR^RLRcRhRiRkRtremotable_classmethodRsRxRztclassmethodR}t	remotableR_RŠRKRŽR‹RR–RnR (((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyRosV

							
!	!RtcBsueZdZiejdƒd6Zeejjdd„ƒƒZ
ed„ƒZe
jd„ƒZe
jd„ƒZRS(s1.7RR
cCs7t|ƒ}|dk	r-|jd|ƒ}n|jƒS(NR(RRLRR1(RRR((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_get_from_dbäscCs1tj||ƒ}tj|||ƒtj|ƒS(N(Rt$instance_group_get_all_by_project_idRt
obj_make_listR
R(RqRRtmain_db_groups((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyRuìs		cCsJ|j|d|ƒ}tj||ƒ}tj|||ƒtj||ƒS(NR(R±RR²RR³R
R(RqRRt
api_db_groupsR´((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytget_by_project_idós
		cCsA|j|ƒ}tj|ƒ}tj|||ƒtj||ƒS(N(R±Rtinstance_group_get_allRR³R
R(RqRRµR´((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pytget_allûsN(R¡R¢R£RtListOfObjectsFieldR©RªR«R¬RLR±R¯RuRR®R¶R¸(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyRtÓs	cCsL|jjtjƒjtdƒƒjtdƒƒjddƒj|ƒjƒS(NRRRHi(	RRtmain_modelsRRRRtlimitR1(RR»((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt_get_main_instance_groupss
	cCsÆt||ƒ}d}xž|D]–}tjd|d|jd|jd|jd|jd|jd|jƒ}y|j	d	t
ƒWntjk
r”nXt
j||jƒ|d
7}qWt|ƒ|fS(NiRR@RR;RAR3R7Ri(R¼R
RR@RR;RAR3R7RŽR¦RRbRªRRŸ(RRdtmain_groupstdoneRrR2((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt!migrate_instance_groups_to_api_db
s"
					(-R[toslo_dbRR`t
oslo_utilsRRtsqlalchemy.ormRRtnova.computeRRƒtnovaRtnova.db.sqlalchemyRRªRR	RºR
tnova.objectsRRRJRLRRR-R4R8R>tNovaObjectRegistrytregistertNovaPersistentObjectt
NovaObjecttNovaObjectDictCompatRtObjectListBaseRttmain_context_managerR¬R¼R¿(((sP/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/instance_group.pyt<module>s:					ÿc/