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 / request_spec.pyc
Size: Mime:
ó
±EYc@s¢ddlmZddlmZddlZddlmZddlmZddl	m
Z
ddl	mZddlm
Z
dd	lmZdd
lmZddlmZddlmZd
gZe
jjde
jfd„ƒYƒZdZejjd„ƒZejje d„ƒZ!d„Z"d„Z#e
jjde
jfd„ƒYƒZ$e
jjde
jfd„ƒYƒZ%e
jjde
jfd„ƒYƒZ&dS(iÿÿÿÿ(t	jsonutils(tversionutilsN(tapi(t
api_models(t	exception(tobjects(tbase(tfields(tinstance(tutils(thardwaretrequested_destinationtRequestSpeccBseZdZiejƒd6ejddeƒd6ejddeƒd6ejddeƒd6ejdeƒd	6ejdeƒd
6ejddeƒd6ejd
dƒd6ej	deƒd6ej	deƒd6ej	deƒd6ejdded
d>ƒd6ejddeƒd6ejddeƒd6ejddeƒd6ejdeƒd6ejƒd6Zd„Z
d„Zed„ƒZed „ƒZed!„ƒZed"„ƒZed#„ƒZd$„Zd%„Zd&„Zd'„Zd(„Zd)„Zd*„Zd+„Zd,„Zed-„ƒZd>d.„Z d/„Z!d0„Z"d1„Z#d2„Z$d3„Z%ed4„ƒZ&e'd5„ƒZ(e'e)j*j+d6„ƒƒZ,e-j.d7„ƒZ/e'e)j*j0d8„ƒƒZ1d9„Z2e-j3d:„ƒZ4e'e)j*j0d;„ƒƒZ5e-j3d<„ƒZ6d=„Z7RS(?s1.6tidt	ImageMetatnullabletimagetInstanceNUMATopologyt
numa_topologytInstancePCIRequeststpci_requestst
project_idtavailability_zonetFlavortflavortdefaultit
num_instancestignore_hoststforce_hoststforce_nodestDestinationRtSchedulerRetriestretrytSchedulerLimitstlimitst
InstanceGrouptinstance_grouptscheduler_hintst
instance_uuidcCsQtt|ƒj||ƒtj|ƒ}|dkrMd|krM|d=qMndS(NiiR(ii(tsuperRtobj_make_compatibleRtconvert_version_to_tuple(tselft	primitivettarget_version((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR(Fs
cCs<|tkr+tjdddd|ƒ‚n|j|ƒdS(Ntactiont
obj_load_attrtreasonsattribute %s not lazy-loadable(tREQUEST_SPEC_OPTIONAL_ATTRSRtObjectActionErrortobj_set_defaults(R*tattrname((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR.Ms
	cCs
|jjS(N(Rtvcpus(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR4XscCs
|jjS(N(Rt	memory_mb(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR5\scCs
|jjS(N(Rtroot_gb(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR6`scCs
|jjS(N(Rtephemeral_gb(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR7dscCs
|jjS(N(Rtswap(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR8hscCsRt|tjƒr||_n0t|tƒrEtjj|ƒ|_n	d|_dS(N(t
isinstanceRRRtdictt	from_dicttNone(R*R((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_image_meta_from_imagels
cCsït|tjƒrt}nt|tƒr6d„}ndSdddddg}x™|D]‘}|dkr„t|d|||ƒƒqV|dkr©|j|||ƒƒqV|dkrÎ|j|||ƒƒqVt|||||ƒƒqVWdS(NcSs
|j|ƒS(N(tget(txty((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt<lambda>ƒsRRtuuidRRR&(R9tobj_instancetInstancetgetattrR:tsetattrt_from_instance_pci_requestst_from_instance_numa_topology(R*Rtgettertinstance_fieldstfield((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_from_instancexs		
cCs:t|tƒr-tj}|j|ƒ|_n	||_dS(N(R9R:RRt from_request_spec_instance_propsR(R*Rtpci_req_cls((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyRG”s
	cCs:t|tƒr-tjtd|ƒƒ|_n	||_dS(NR(R9R:R
tinstance_topology_from_instanceR(R*R((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyRHœscCsFt|tjƒr||_n$t|tƒrBtj||_ndS(N(R9RRRR:(R*R((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_from_flavor£scCs(|rtj|j|ƒnd|_dS(N(RR;t_contextR<R (R*t
retry_dict((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_from_retry®scCs¼|jdƒr$|jdƒ|_n”|jdƒtkr¯t|jdƒƒ}t|jdƒƒ}t|jdƒƒ}tjd|d|d|ƒ|_|jjdgƒn	d|_dS(	NR$t
group_updatedtgroup_policiestgroup_hostst
group_memberstpoliciesthoststmembers(R>R$tTruetlistRR#tobj_reset_changesR<(R*tfilter_propertiesRXRYRZ((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_populate_group_info²scCstj|ƒ|_dS(N(R!R;R"(R*tlimits_dict((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_from_limitsÆscCs9|dkrd|_dSd„tj|ƒDƒ|_dS(NcSs7i|]-\}}t|tƒr'|n|g|“qS((R9R\(t.0thinttvalue((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pys
<dictcomp>Îs	(R<R%tsixt	iteritems(R*t
hints_dict((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_from_hintsÉs
	cCs&|jddƒ}||d|ƒ}|jdƒ}|j|ƒ|jdƒ}|j|ƒ|jdƒ}|j|ƒ|jdƒ|_|jdƒ|_|jdƒ|_|jd	iƒ}	|j|	ƒ|jd
iƒ}
|j|
ƒ|j	|ƒ|jdiƒ}|j
|ƒ|jƒ|S(sØReturns a new RequestSpec object by hydrating it from legacy dicts.

        Deprecated.  A RequestSpec object is created early in the boot process
        using the from_components method.  That object will either be passed to
        places that require it, or it can be looked up with
        get_by_instance_uuid.  This method can be removed when there are no
        longer any callers.  Because the method is not remotable it is not tied
        to object versioning.

        That helper is not intended to leave the legacy dicts kept in the nova
        codebase, but is rather just for giving a temporary solution for
        populating the Spec object until we get rid of scheduler_utils'
        build_request_spec() and the filter_properties hydratation in the
        conductor.

        :param context: a context object
        :param request_spec: An old-style request_spec dictionary
        :param filter_properties: An old-style filter_properties dictionary
        RiRtinstance_propertiest
instance_typeRRRR R"R%(R>R=RLRPRRRRSRaR_RhR2(tclstcontexttrequest_specR^RtspecRRRR R"R%((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pytfrom_primitivesÑs(







cCse|jdƒs|jdkr#|S|jj||ƒ}t|tƒrat|ƒdkra|dS|S(sConvenient helper for accessing a particular scheduler hint since
        it is hydrated by putting a single item into a list.

        In order to reduce the complexity, that helper returns a string if the
        requested hint is a list of only one value, and if not, returns the
        value directly (ie. the list). If the hint is not existing (or
        scheduler_hints is None), then it returns the default value.

        :param hint_name: name of the hint
        :param default: the default value if the hint is not there
        R%iiN(tobj_attr_is_setR%R<R>R9R\tlen(R*t	hint_nameRthint_val((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pytget_scheduler_hintscCs,|jdƒr(|jr(tj|jƒSiS(NR(RpRRtobj_to_primitive(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_to_legacy_imagescCsÆi}dddddg}xX|D]P}|j|ƒs=q"n|dkr_t||ƒ|d<q"t||ƒ||<q"Wddd	d
g}|jdƒs›|Sx$|D]}t|j|ƒ||<q¢W|S(NRRRRR&RBR6R7R5R4R(RpRER(R*RRJRKt
flavor_fields((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_to_legacy_instances

cCs1itd6t|jjƒd6t|jjƒd6S(NRTRVRU(R[tsetR$RYRX(R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_to_legacy_group_info,s
cCs†i}|jdƒs,|jdj|d<n
|j|d<|jƒ|d<|jƒ|d<|jdƒrx|j|d<n
i|d<|S(s³Returns a legacy request_spec dict from the RequestSpec object.

        Since we need to manage backwards compatibility and rolling upgrades
        within our RPC API, we need to accept to provide an helper for
        primitiving the right RequestSpec object into a legacy dict until we
        drop support for old Scheduler RPC API versions.
        If you don't understand why this method is needed, please don't use it.
        RRRiRRj(RpRRRRvRxR(R*treq_spec((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pytto_legacy_request_spec_dict4s	

c
sDi}ˆjdƒr.ˆjr.ˆj|d<nˆjdƒrVˆjrVˆj|d<nˆjdƒr~ˆjr~ˆj|d<nˆjdƒr¬ˆjr¬ˆjjƒ|d<nˆjdƒrڈjrڈjjƒ|d<nˆjdƒrˆjr|jˆj	ƒƒnˆjdƒr@ˆj
r@‡fd†ˆj
Dƒ|d<n|S(	s¸Returns a legacy filter_properties dict from the RequestSpec object.

        Since we need to manage backwards compatibility and rolling upgrades
        within our RPC API, we need to accept to provide an helper for
        primitiving the right RequestSpec object into a legacy dict until we
        drop support for old Scheduler RPC API versions.
        If you don't understand why this method is needed, please don't use it.
        RRRR R"R$R%cs"i|]}ˆj|ƒ|“qS((Rt(RbRc(R*(sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pys
<dictcomp>cs	(RpRRRR tto_dictR"R$tupdateRzR%(R*t
filt_props((R*sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt to_legacy_filter_properties_dictJs"	c
Cs$||ƒ}
d|
_||
_||
_|
jdkrL|rL|
j|ƒn|j|
_|
j|ƒ|
j|ƒ|
j|ƒ|
j	|ƒ|j
dƒ|
_|j
dƒ|
_|j
dƒ|
_
|
j|j
diƒƒ|
j|j
diƒƒ|
j|j
diƒƒ|	|
_|
jƒ|
S(	sYReturns a new RequestSpec object hydrated by various components.

        This helper is useful in creating the RequestSpec from the various
        objects that are assembled early in the boot process.  This method
        creates a complete RequestSpec object with all properties set or
        intentionally left blank.

        :param context: a context object
        :param instance_uuid: the uuid of the instance to schedule
        :param image: a dict of properties for an image or volume
        :param flavor: a flavor NovaObject
        :param numa_topology: InstanceNUMATopology or None
        :param pci_requests: InstancePCIRequests
        :param filter_properties: a dict of properties for scheduling
        :param instance_group: None or an instance group NovaObject
        :param availability_zone: an availability_zone string
        iRRRR R"R%N(RR&R$R<R_RR=RPRGRHR>RRRRSRaRhRR2(RkRlR&RRRRR^R$Rtspec_obj((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pytfrom_componentsgs(			



	
cCsƒ|jtj|dƒƒ}xM|jD]B}|dkrOt||||ƒq&t||t||ƒƒq&W||_|jƒ|S(NRnR
R&(sids
instance_uuid(tobj_from_primitiveRtloadsRRFRERQR](RlRntdb_specRtkey((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_from_db_object”s	
cCsF|jjtjƒjd|ƒjƒ}|sBtjd|ƒ‚n|S(NR&(tsessiontqueryRRt	filter_bytfirstRtRequestSpecNotFound(RlR&R…((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_get_by_instance_uuid_from_db¢s	cCs(|j||ƒ}|j||ƒ|ƒS(N(RR‡(RkRlR&R…((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pytget_by_instance_uuid¬scCs-tjƒ}|j|ƒ|j|jƒ|S(N(RRR~tsaveRˆ(RltupdatesR…((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt
_create_in_db±s
cCsR|jƒ}|rNitj|jƒƒd6}d|krN|d|d<qNn|S(sySerialize object to match the db model.

        We store copies of embedded objects rather than
        references to these objects because we want a snapshot of the request
        at this point.  If the references changed or were deleted we would
        not be able to reschedule this instance under the same conditions as
        it was originally scheduled with.
        RnR&(tobj_get_changesRtdumpsRu(R*Rt
db_updates((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_get_update_primitives¹s	cCse|jdƒr*tjddddƒ‚n|jƒ}|j|j|ƒ}|j|j||ƒdS(NR
R-tcreateR/salready created(RpRR1R•R‘RQR‡(R*RR…((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR–ËscCs3tj||ƒ}|j|ƒ|j|jƒ|S(N(RRR~RRˆ(RlR&RR…((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_save_in_dbÖs
		
cCsK|jƒ}|j|j|j|ƒ}|j|j||ƒ|jƒdS(N(R•R—RQR&R‡R](R*RR…((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyRáscCs)d|_d|_|jddgƒdS(säClears the forced destination fields from the RequestSpec object.

        This method is for making sure we don't ask the scheduler to give us
        again the same destination(s) without persisting the modifications.
        RRN(R<RRR](R*((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pytreset_forced_destinationsès		N(8t__name__t
__module__tVERSIONRtIntegerFieldtObjectFieldR[tStringFieldtFalsetListOfStringsFieldR<tDictOfListOfStringsFieldt	UUIDFieldR(R.tpropertyR4R5R6R7R8R=RLRGRHRPRSR_RaRhtclassmethodRoRtRvRxRzR|R€R‚tstaticmethodR‡tdbtapi_context_managertreaderRRtremotable_classmethodRŽtwriterR‘R•t	remotableR–R—RR˜(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR sv	



											0					-		
s$00000000-0000-0000-0000-000000000000cCsA|jjtjƒjdtƒjƒ}|r7|dnd}|S(NR&Rn(RˆR‰RRRŠt	FAKE_UUIDR‹R<(RlR{tmarker((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt!_get_marker_for_migrate_instancesscCso|jjtjƒjdtƒjƒ|dk	rktjƒ}|jitd6|d6ƒ|j	|jƒndS(NR&Rn(
RˆR‰RRRŠR¬tdeleteR<R~R(RlR­t
db_mapping((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt+_set_or_delete_marker_for_migrate_instances	s
c
Cs€|j}ii|jd6d6}i}tj|||ƒtjj||j||j|j|j	|d|jƒ	}|jƒdS(NRBRi(
t
image_metaRBtscheduler_utilstsetup_instance_groupRRR‚RRRR<RR–(RlRRRmR^((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt_create_minimal_request_specs		cCsùt|ƒ}dddddg}tjj|ditd6dd	d
dd|d
|d|ƒ}t|ƒ}d}xS|D]K}ytj||jƒWqwt	j
k
rÁt||ƒ|d7}qwXqwW|dkrâ|dj}nt||ƒ||fS(sBCreates and persists a RequestSpec per instance not yet having it.tsystem_metadataRRRRtfilterstdeletedtsort_keyt
created_attsort_dirtasctlimitR­texpected_attrsiiiÿÿÿÿ(
R®RtInstanceListtget_by_filtersRŸRqRRŽRBRRŒRµR±(Rlt	max_countR­tattrst	instancest	count_allt	count_hitR((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt"migrate_instances_add_request_spec+s,	
	


RcBs4eZdZiejƒd6ejdeƒd6ZRS(s1.0thostRtnode(R™RšR›RRžR[(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyRIs
RcBsIeZdZiejƒd6ejdƒd6Zed„ƒZd„ZRS(s1.1tnum_attemptstComputeNodeListRYc
CsŠ|ƒ}dod|kr|S|jdƒ|_g|jdƒD]*\}}tjd|d|d|ƒ^qA}tjd|ƒ|_|S(NRÉRYRlRÇthypervisor_hostnameR(R>RÉRtComputeNodeRÊRY(RkRlRRt	retry_objRÇRÈtcomputes((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR;ds	=cCs=g|jD]}|j|jg^q
}i|jd6|d6S(NRÉRY(RYRÇRËRÉ(R*tcntlegacy_hosts((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR}us(
(	R™RšR›RRœRR¤R;R}(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyRWs
R!cBs“eZdZiejddedd
ƒd6ejdedd
ƒd6ejdedd
ƒd6ejdedd
ƒd6Zed„ƒZ	d	„Z
RS(s1.0tNUMATopologyLimitsRRRtvcputdisk_gbR5cCs||}|jƒ|S(N(R2(RkR`R"((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR;‰s
cCsIi}x<|jD]1}t||ƒdk	rt||ƒ||<qqW|S(N(RRER<(R*R"RK((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR}“s
N(R™RšR›RRR[R<RœR¤R;R}(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyR!{s

('toslo_serializationRt
oslo_utilsRRetnova.db.sqlalchemyRR¦RtnovaRRtnova.objectsRRRRCtnova.schedulerR	R³t	nova.virtR
R0tNovaObjectRegistrytregistert
NovaObjectRR¬R§R¨R®RªR<R±RµRÆRRR!(((sN/home/tvault/.virtenv/lib/python2.7/site-packages/nova/objects/request_spec.pyt<module>s6	ÿÞ			
#