Sindbad~EG File Manager

Current Path : /usr/local/lib/python3.6/site-packages/agent360/plugins/__pycache__/
Upload File :
Current File : //usr/local/lib/python3.6/site-packages/agent360/plugins/__pycache__/vms.cpython-36.pyc

3

�uGh��@stddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	Gdd�dej
�Zedkrpe�j
�dS)�)�print_functionNc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�PluginZvmscCs�i}i}|j�}tjdd�}|j|�}i}x�|j�D]�\}}	i||<x�|	j�D]t\}
}|
dksv|
dksv|
dksv|
dkr�|	|
|||
<qN|jd||
ft|�|�|||
<t|	|
�|d||
f<qNWq4Wtj�|d<|j|�|S)	z�
        Using the libvirt API to fetch statistics from guests
        running KVM, QEMU, Xen, Virtuozzo, VMWare ESX, LXC,
        BHyve and more
        �urizqemu:///system�	mem_bytes�soft_limit_bytes�min_guarantee_bytes�hard_limit_bytesz%s_%s�ts)	Zget_agent_cache�os�getenv�fetch_values�itemsZabsolute_to_per_second�float�timeZset_agent_cache)�self�config�results�
last_valueZ
prev_cacher�valuesZdeltas�key�value�subkeyZsubvalue�r�=/root/tmp/pip-build-gzoz1_uw/agent360/agent360/plugins/vms.py�runs 
 " 
z
Plugin.runcCstjdd|�S)Nz
[^a-zA-Z0-9_]�_)�re�sub)r�namerrr�canon%szPlugin.canonc
Cs�|jd�}d}ytj|�}Wn
gS|j�}g}zX|jd�}xH|D]@}d}x"|jD]}	|	jdkrV|	jd�}qVW|dkr|qF|j|�qFWWd|dkr�|j	�|dkr�|j
�X|S)Nrz/domain/devices/interface�target�dev)�XMLDesc�libxml2�parseDoc�xpathNewContext�	xpathEval�childrenr�prop�append�xpathFreeContext�freeDoc)
r�dom�xml�doc�ctx�ifaces�ret�node�devdst�childrrr�
get_ifaces(s.




zPlugin.get_ifacesc	Cs�dddd�}|jd�}ytj|�}Wn
gS|j�}z^xX|D]P}|jd|�}y(x"|djD]}t|j�||<Pq`WWq@tk
r�Yq@Xq@WWd|dkr�|j	�|dkr�|j
�X|S)Nr)�
min_guarantee�
soft_limit�
hard_limitz/domain/memtune/%s)r"r#r$r%r&r'�int�content�
IndexErrorr*r+)	rr,�memtuner-r.r/rr1r4rrr�get_memtuneBs*



zPlugin.get_memtunec7Cstj|�}|j�}i}�x�|D�]�}i}d|d<d|d<y|j|�}|j�}Wn<tjk
r�}	ztd||	ftjd�wWYdd}	~	XnX|dkr�q|j	|�}
xf|
D]^}y6|j
|�}|d|d7<|d|d7<Wq�ttj?d||ffYq�Xq�Wt|j�d�}
d	|
}||d
<y|t
j�|d<Wn$tk
�r`}zWYdd}~XnX|j�dd
�\}}|d9}|d9}||d<|j|�}|dd|d<|dd|d<|dd|d<d|d<d|d<d|d<d|d<y|j|�}|j�}Wn>tjk
�r<}	ztd||	ftjd�wWYdd}	~	XnX|dk�rJq|j|�}x�|D]�}yX|j|�\}}}}}|d|7<|d|7<|d|7<|d|7<Wn,tk
�r�ttj?d||ffYnX�qZW|||j|�<qW|S)NrZnet_rx_bytesZnet_tx_bytesz
Id: %s: %s)�filezDomain-0�z#Cannot get ifstats for '%s' on '%s'gH�����z>�cpuZcpu_percentage��irr6rr8rr7rZ
disk_rd_bytesZ
disk_wr_bytesZdisk_wr_reqZdisk_rd_reqz&Cannot get blockstats for '%s' on '%s')�libvirtZopenReadOnlyZ
listDomainsIDZ
lookupByIDrZlibvirtError�print�sys�stderrr5ZinterfaceStatsr�info�psutil�	cpu_count�	Exceptionr=�	get_disksZ
blockStats�	TypeErrorr)rr�conn�idsr�id�datar,r�errr0Ziface�statsZcputimeZcputime_percentage�eZmaxmemZmemr<�disksZdiskZrd_reqZrd_bytesZwr_reqZwr_bytesZerrsrrrr]s|




 




"zPlugin.fetch_valuesc
Cs�|jd�}d}ytj|�}Wn
gS|j�}g}zX|jd�}xH|D]@}d}x"|jD]}	|	jdkrV|	jd�}qVW|dkr|qF|j|�qFWWd|dkr�|j	�|dkr�|j
�X|S)Nrz/domain/devices/diskr r!)r"r#r$r%r&r'rr(r)r*r+)
rr,r-r.r/rTr1r2r3r4rrrrK�s.




zPlugin.get_disksN)	�__name__�
__module__�__qualname__rrr5r=rrKrrrrr	sDr�__main__)�
__future__rrrEr
rCr#rZpluginsrHZ
BasePluginrrU�executerrrr�<module>s4

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists