Your IP : 172.28.240.42


Current Path : /usr/lib/python2.7/dist-packages/landscape/monitor/
Upload File :
Current File : //usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyc

ó
ÍÿŠTc@sÒddlZddlZddlZddlmZddlmZddlmZddl	m
Z
ddlmZy*ddl
mZddlmZeZWnek
r·eZnXd	efd
„ƒYZdS(iÿÿÿÿN(tthreads(tAccumulator(tCoverageMonitor(tget_active_device_info(t
MonitorPlugin(tRing(tScoutt
SwiftUsagecBs’eZdZdZdZddejdd„Zd„Zd„Ze	d	„Z
e	d
„Zd„Zd„Z
d
„Zd„Zd„Zd„ZRS(sÅPlugin reporting Swift cluster usage.

    This only works if the client runs on a Swift node.  It requires the
    'python-swift' package to be installed (which is installed on swift nodes).

    sswift-usagetstorageii<s/etc/swift/object.ring.gzcCsC||_||_||_||_t|_g|_t|_dS(N(	t	_intervalt_monitor_intervalt_create_timet_swift_ringt	has_swiftt
_has_swiftt_swift_usage_pointstTruetactive(tselftintervaltmonitor_intervaltcreate_timet
swift_ring((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyt__init__s						cCsªtt|ƒj|ƒt|j|jƒ|_t|jddd|j	ƒ|_
|jjj
|j|j
jƒ|jjjd|j
jddƒ|jd|jtƒdS(Ngš™™™™™é?sSwift device usage snapshotRtstoptpriorityiÐsswift-usage(tsuperRtregisterRt_persistR	t_accumulateRtrun_intervalRt_monitortregistrytreactort
call_everyR
tlogtcall_ontcall_on_acceptedtsend_messageR(RR ((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyR+s"cCs.|j}g|_|r*idd6|d6SdS(Nsswift-usagettypesdata-points(R(Rtusage_points((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pytcreate_message7s		cCs8|jƒ}|r4|jjj||jd|ƒndS(Nturgent(R)R tbrokerR&t_session_id(RR*tmessage((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyR&=scCs |jjjd|j|ƒdS(Nsswift-usage(R R+tcall_if_acceptedR&(RR*((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pytexchangeCscCsR|jƒsdS|jjƒ|jƒ}tj|j|ƒ}|j|jƒ|S(N(	t_should_runRtpingt_get_recon_hostRt
deferToThreadt_perform_recon_calltaddCallbackt
_handle_usage(Rthosttdeferred((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pytrunGs
cCsM|js
tS|js0tjdƒt|_tStjj|jƒsItSt	S(s%Return whether the plugin should run.sHThis machine does not appear to be a Swift machine. Deactivating plugin.(
RtFalseRtloggingtinfotostpathtexistsRR(R((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyR0Rs			cCs[|jƒ}t|jƒ}x9|jD].}|r%|d|kr%|d|dfSq%WdS(s'Return a tuple with Recon (host, port).tiptportN(t_get_local_ipsRRtdevs(Rt	local_ipstringtdev((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyR2es
cCsgtƒD]}|d^q
S(s0Return a list of IP addresses for local devices.t
ip_address(R(Rtdevice((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyRBmscCsB|s
dStdƒ}|j|ƒ\}}}|dkr>|SdS(s/Get usage information from Swift Recon service.Nt	diskusageiÈ(Rtscout(RR7RJt_t
disk_usagetcode((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyR4rscCsMt|jƒƒ}tƒ}xÎ|D]Æ}|ds8q"n|d}|j|ƒg}xDdD]<}d||f}|j||||ƒ}	|j|	ƒq\Wt|ƒr"|	d|g}
|
jd„|Dƒƒ|jjt	|
ƒƒq"q"Wt|j
jd	dƒƒ}x&||D]}|j
jd
|ƒqW|j
jd	t
|ƒƒdS(
NtmountedRHtsizetavailtusedsusage.%s.%sicss|]}t|dƒVqdS(iN(tint(t.0t
step_value((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pys	<genexpr>“stdevicessusage.%s(ssizeRPRQ((RRRtsettaddRtappendtalltextendRttupleRtgettremovetlist(RRLt	timestampRUtusageRHtstep_valuestkeytpersist_keyRTtpointtcurrent_devices((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyR6}s*	




i(t__name__t
__module__t__doc__tpersist_nametscopettimeRRR)R:R&R/R9R0R2RBR4R6(((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyRs 
							(R;RkR=ttwisted.internetRtlandscape.accumulateRtlandscape.lib.monitorRtlandscape.lib.networkRtlandscape.monitor.pluginRtswift.common.ringRtswift.cli.reconRRR
tImportErrorR:R(((s@/usr/lib/python2.7/dist-packages/landscape/monitor/swiftusage.pyt<module>s