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 / service.pyc
Size: Mime:
ó
±EYc@sûdZddlZddlZddlZddlmZddlmZddl	Z
ddlmZddl
mZddlmZddlmZddlZdd	lmZdd
lmZddlmZddlmZmZmZmZdd
lmZddlmZddlmZddlm Z ddlm!Z!ddlm"Z"ddlm#Z#ddlm$Z$ej%e&ƒZ'ej(j)Z)d„Z*d„Z+dej,fd„ƒYZ,dej,fd„ƒYZ-d„Z.da0dd„Z1d„Z2dS(s:Generic Node base class for all workers that run on hosts.iÿÿÿÿN(tprocessutils(tlog(tservice(timportutils(tbaserpc(t	conductor(tcontext(tdebugger(t	exception(t_t_LEt_LIt_LW(tobjects(tbase(trpc(tservicegroup(tutils(tversion(twsgicCsJtj|ƒ}|j|_|j|_|j|_d|_|jƒ|S(Ni(R
tServicethosttbinaryttopictreport_counttcreate(tthis_serviceRR((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyt_create_service_ref3s	
cCsm|jtjkritjtdƒi|jd6|jd6|jd6tjd6ƒtj|_|jƒndS(NsKUpdating service version for %(binary)s on %(host)s from %(old)i to %(new)iRRtoldtnew(	Rtservice_objtSERVICE_VERSIONtLOGtinfoRRRtsave(R((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyt_update_service_ref=s


RcBs›eZdZdddded„Zd„Zd„Zd„Ze	dddddddded„	ƒZ
d„Zd„Ze
d„Zd	„Zd
„ZRS(sõService object for binaries running on hosts.

    A service takes a manager and enables rpc by listening to queues based
    on topic. It also periodically runs tasks on the manager and reports
    its state to the database services table.
    c

Osëtt|ƒjƒ||_||_||_||_tjƒ|_	t
j|jƒ}|d|j|
|Ž|_d|_||_||_||_||_|
||_|_d|_tjd|	ƒ|_|jjtjƒƒdS(NRt	use_local(tsuperRt__init__RRRtmanager_class_nameRtAPItservicegroup_apiRtimport_classtmanagertNonet	rpcservertreport_intervaltperiodic_enabletperiodic_fuzzy_delaytperiodic_interval_maxt
saved_argstsaved_kwargst
backdoor_portRt
conductor_apitwait_until_readyRtget_admin_context(
tselfRRRR+R.R/R0R1t
db_allowedtargstkwargst
manager_class((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR&Qs"										cCs3di|jjd6|jd6|jd6|jd6S(NsP<%(cls_name)s: host=%(host)s, binary=%(binary)s, manager_class_name=%(manager)s>tcls_nameRRR+(t	__class__t__name__RRR'(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyt__repr__gs


cCsLtjƒ}tjtdƒi|jd6|d6ƒ|jƒ|jjƒt	|_
tjƒ}t
jj||j|jƒ|_|jr™t|jƒnWyt||ƒ|_Wn>tjtjfk
rït
jj||j|jƒ|_nX|jjƒ|jdk	r|j|j_ntjd|jƒtjd|jd|jƒ}|jtj|jj |jƒg}|j!|jj"ƒt#j$ƒ}t%j&|||ƒ|_'|j'j(ƒ|jj)ƒtjd|jƒ|j*j+|j|j|ƒ|j,rH|j-rt.j/d|j-ƒ}nd}|j0j1|j2d|d	|j3ƒndS(
Ns-Starting %(topic)s node (version %(version)s)RRs"Creating RPC server for service %stservers0Join ServiceGroup membership for this service %sit
initial_delayR1(4Rtversion_string_with_packageR R!RRtbasic_config_checkR+t	init_hosttFalsetmodel_disconnectedRR7R
Rtget_by_host_and_binaryRRtservice_refR#RRtServiceTopicExiststServiceBinaryExiststpre_start_hookR4R,tdebugt	messagingtTargetRt
BaseRPCAPItservice_nametextendtadditional_endpointstobjects_basetNovaObjectSerializerRt
get_serverR-tstarttpost_start_hookR)tjoinR/R0trandomtrandintttgtadd_dynamic_timertperiodic_tasksR1(R8tverstrtctxtttargett	endpointst
serializerRB((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRWpsN

				


	
		cCs"|jjddƒ}t||ƒS(NR+(t__dict__tgetR,tgetattr(R8tkeyR+((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyt__getattr__­sc
Cs|stj}n|s4tjjtjdƒ}n|sP|jdƒd}n|s‚d|jdƒd}
tj|
d
ƒ}n|d
krštj
}n|d
kr²tj}n|d
krÊtj}nt
jƒ|||||d|d|d|d|d	|	ƒ}|S(s6Instantiates class and passes back application object.

        :param host: defaults to CONF.host
        :param binary: defaults to basename of executable
        :param topic: defaults to bin_name - 'nova-' part
        :param manager: defaults to CONF.<topic>_manager
        :param report_interval: defaults to CONF.report_interval
        :param periodic_enable: defaults to CONF.periodic_enable
        :param periodic_fuzzy_delay: defaults to CONF.periodic_fuzzy_delay
        :param periodic_interval_max: if set, the max time to wait between runs

        isnova-is
%s_managerR.R/R0R1R9N(tCONFRtostpathtbasenametsystargvt
rpartitionReR,R.R/R0Rtinit(tclsRRRR+R.R/R0R1R9tmanager_clsR((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR±s0
	cCsI|jƒy|jjƒWn'tjk
rDtjtdƒƒnXdS(sþDestroy the service object in the datastore.

        NOTE: Although this method is not used anywhere else than tests, it is
        convenient to have it here, so the tests might easily and in clean way
        stop and remove the service_ref.

        s)Service killed that has no database entryN(tstopRItdestroyRtNotFoundR twarningR(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pytkillÞs

cCsy|jjƒ|jjƒWntk
r1nXy|jjƒWn$tk
ritjtdƒƒnXt	t
|ƒjƒdS(Ns*Service error occurred during cleanup_host(R-Rstwaitt	ExceptionR+tcleanup_hostR RR
R%R(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRsìs


cCs"tjƒ}|jj|d|ƒS(s'Tasks to be run at a periodic interval.traise_on_error(RR7R+R^(R8R{R`((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR^ûscCsTytjƒWdQXWn6tk
rO}tjtdƒ|ƒtjdƒnXdS(s7Perform basic config checks before starting processing.Ns"Temporary directory is invalid: %si(RttempdirRyR terrorR
Rmtexit(R8te((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRDs

cCs|jjƒdS(N(R+treset(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR€
sN(R?t
__module__t__doc__R,tTrueR&R@RWRhtclassmethodRRwRsRFR^RDR€(((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRIs"			=	)			
tWSGIServicecBsMeZdZdedd„Zd„Zd„Zd„Zd„Z	d„Z
RS(s<Provides ability to launch API from a 'paste' configuration.cCs†||_d||_d|_|jƒ|_|p=tjƒ|_|jj	|ƒ|_
|jdƒrpd}n|}tt
d|dƒ|_tt
d|dƒ|_tt
d|dƒpÇtjƒ|_|jr(|jd	kr(d|}td
ƒi|d6t|jƒd6}tj|ƒ‚n||_tj||j
d
|jd|jd|jd|ƒ|_|jj|_d|_dS(sÝInitialize, but do not start the WSGI server.

        :param name: The name of the WSGI server given to the loader.
        :param loader: Loads the WSGI application using the given name.
        :returns: None

        snova-%stopenstack_compute_apit
osapi_computes	%s_listens0.0.0.0s%s_listen_portis
%s_workersisG%(worker_name)s value of %(workers)s is invalid, must be greater than 0tworker_nametworkersRtporttuse_ssltmax_url_lenN(tnameRR,Rt_get_managerR+RtLoadertloadertload_apptappt
startswithRfRiRRŠRtget_worker_countR‰R	tstrRtInvalidInputR‹tServerRAR4(R8RRR‹RŒtwnameRˆtmsg((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR&s8	
		
	
						cCs|jjƒtjjƒdS(scReset server greenpool size to default and service version cache.

        :returns: None

        N(RAR€RRtclear_min_version_cache(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR€<s
cCsOd|j}|tkrdStj|dƒ}|s9dStj|ƒ}|ƒS(s$Initialize a Manager object appropriate for this service.

        Use the service name to look up a Manager subclass from the
        configuration and initialize an instance. If no class name
        is configured, just return None.

        :returns: a Manager instance, or None.

        s
%s_managerN(RRiR,ReRR*(R8tflR'R<((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRŽEs

cCsÿtjƒ}tjj||j|jƒ}|r=t|ƒnQyt||ƒ}Wn;t	j
t	jfk
rtjj||j|jƒ}nX|jrÕ|jj
ƒ|jjƒ|jdk	rÕ|j|j_qÕn|jjƒ|jrû|jjƒndS(sÕStart serving this service using loaded configuration.

        Also, retrieve updated port number in case '0' was passed in, which
        indicates a random port should be used.

        :returns: None

        N(RR7R
RRHRRR#RRRJRKR+RERLR4R,RARWRX(R8R`RI((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRWZs&	
		


	cCs|jjƒdS(s8Stop serving this API.

        :returns: None

        N(RARs(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRs{scCs|jjƒdS(sPWait for the service to stop serving this API.

        :returns: None

        N(RARx(R8((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRxƒsN(R?RR‚R,RFR&R€RŽRWRsRx(((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyR…s+				!	cCstjtddƒS(Ntrestart_methodtmutate(RtProcessLauncherRi(((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pytprocess_launcherŒscCs7trttdƒƒ‚ntjt|d|ƒadS(Nsserve() can only be called onceR‰(t	_launchertRuntimeErrorR	RtlaunchRi(RAR‰((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pytserve–scCstjƒdS(N(R Rx(((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyRxžs(3R‚RjRZRmtoslo_concurrencyRtoslo_logRtloggingtoslo_messagingRNtoslo_serviceRt
oslo_utilsRtnovaRRt	nova.confRRRt	nova.i18nR	R
RRR
tnova.objectsRRTRRRRRRt	getLoggerR?R tconfRiRR#RR…RŸR,R R£Rx(((sA/home/tvault/.virtenv/lib/python2.7/site-packages/nova/service.pyt<module>sB"	
	Å~