????

Your IP : 3.138.86.166


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

a

��g��@stddlmZddlZddlZddlZddlZddlZddlZddlZddl	Z	Gdd�dej
�Zedkrpe��
�dS)�)�print_functionNc@s@eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�ZdS)�PluginZvmscCs�i}i}|��}t�dd�}|�|�}i}|��D]�\}}	i||<|	��D]t\}
}|
dksr|
dksr|
dksr|
dkr�|	|
|||
<qJ|�d||
ft|�|�|||
<t|	|
�|d||
f<qJq2t��|d<|�|�|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�>/usr/local/lib/python3.9/site-packages/agent360/plugins/vms.py�runs 
 "
z
Plugin.runcCst�dd|�S)Nz
[^a-zA-Z0-9_]�_)�re�sub)r�namerrr�canon%szPlugin.canonc
Cs�|�d�}d}zt�|�}WngYS0|��}g}zp|�d�}|D]<}d}|jD]}	|	jdkrX|	�d�}qX|dkr|qJ|�|�qJW|dkr�|�	�|dkr�|�
�n"|dkr�|�	�|dkr�|�
�0|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(s6





�
zPlugin.get_ifacesc		Cs�dddd�}|�d�}zt�|�}WngYS0|��}zv|D]L}|�d|�}z&|djD]}t|j�||<qzqbWqDty�YqD0qDW|dkr�|�	�|dkr�|�
�n"|dkr�|�	�|dkr�|�
�0|S)Nr)�
min_guarantee�
soft_limit�
hard_limitz/domain/memtune/%s)r#r$r%r&r'r(�int�content�
IndexErrorr+r,)	rr-�memtuner.r/r0rr2r5rrr�get_memtuneBs2




�
zPlugin.get_memtunecCs
t�|�}|��}i}|D�]�}i}d|d<d|d<z|�|�}|��}WnHtjy�}	z.td||	ftjd�WYd}	~	qWYd}	~	n
d}	~	00|dkr�q|�	|�}
|
D]^}z6|�
|�}|d|d7<|d|d7<Wq�ttj?d||ffYq�0q�t|��d�}
d	|
}||d
<z|t
��|d<Wn&t�yf}zWYd}~n
d}~00|��dd
�\}}|d9}|d9}||d<|�|�}|dd|d<|dd|d<|dd|d<d|d<d|d<d|d<d|d<z|�|�}|��}WnJtj�yN}	z.td||	ftjd�WYd}	~	qWYd}	~	n
d}	~	00|dk�r\q|�|�}|D]�}zX|�|�\}}}}}|d|7<|d|7<|d|7<|d|7<Wn*t�y�ttj?d||ffYn0�qj|||�|�<q|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��irr7rr9rr8rZ
disk_rd_bytesZ
disk_wr_bytesZdisk_wr_reqZdisk_rd_reqz&Cannot get blockstats for '%s' on '%s')�libvirtZopenReadOnlyZ
listDomainsIDZ
lookupByIDrZlibvirtError�print�sys�stderrr6ZinterfaceStatsr�info�psutil�	cpu_count�	Exceptionr>�	get_disksZ
blockStats�	TypeErrorr)rr�conn�idsr�id�datar-r�errr1Ziface�statsZcputimeZcputime_percentage�eZmaxmemZmemr=�disksZdiskZrd_reqZrd_bytesZwr_reqZwr_bytesZerrsrrrr]s|


"



"

 zPlugin.fetch_valuesc
Cs�|�d�}d}zt�|�}WngYS0|��}g}zp|�d�}|D]<}d}|jD]}	|	jdkrX|	�d�}qX|dkr|qJ|�|�qJW|dkr�|�	�|dkr�|�
�n"|dkr�|�	�|dkr�|�
�0|S)Nrz/domain/devices/diskr r!r")
rr-r.r/r0rUr2r3r4r5rrrrL�s6





�
zPlugin.get_disksN)	�__name__�
__module__�__qualname__rrr6r>rrLrrrrr	sDr�__main__)�
__future__rrrFr
rDr$rZpluginsrIZ
BasePluginrrV�executerrrr�<module>s4