U
    -_g                     @   s&   d dl mZmZ G dd deeZdS )    )PluginIndependentPluginc                   @   s,   e Zd ZdZdZdZdZdd Zdd Zd	S )
LibvirtClientz%client for libvirt virtualization APIZvirsh)systemZvirt)zlibvirt-clientc                 C   sx  |  ddg d}dddddd	d
ddddg}|D ]}| j| d| dd q0| j| dddd | j| ddd}|d dkr|d  D ]J}| d| }|d dkr|d  d }| jd| d| d qdD ]}| j| d| d|dkrd nd! dd}	|	d dkr|	d  }
z|
d  d"}W n tk
rX   Y qY nX td#d$ |
d%d  D ]0}| | }| j| d| d&| dd qpq| j| ddd}|d dkr&|d  d%d  }td'd$ |D ]<}| d( }d)D ]$}| j| d| d| dd qq| j| d*dd}|d dkrt|d  D ]}| j| d+| dd qTd S ),Nz/root/.cache/virt-manager/*.logz/root/.virt-manager/*.logzvirsh -rZdomcapabilitiesZcapabilitiesZnodeinfozfreecell --allznode-memory-tuneversionzpool-capabilitiesZ
nodecpumapzmaxvcpus kvmZsysinfoznodedev-list --tree T)
foregroundz list --allZvirsh_list_all)Ztagsr   z1 list --all --name --state-running --state-pausedZstatusr   outputz	pgrep -f ztaskset -ac -p Ztaskset_)Zsuggest_filename)netZnwfilterpoolz-list %s)r
   r   z--all Namec                 S   s   | S N xr   r   :/usr/lib/python3/dist-packages/sos/report/plugins/virsh.py<lambda>M       z%LibvirtClient.setup.<locals>.<lambda>   z	-dumpxml c                 S   s   | S r   r   r   r   r   r   r   W   r      )ZdumpxmlZdominfoZ
domblklistz nodedev-listz nodedev-dumpxml )	Zadd_copy_specZadd_cmd_outputZexec_cmd
splitlinesZcollect_cmd_outputsplitindex	Exceptionfilter)selfcmdZsubcmdsZsubcmdZvmsZvmpidpkZk_listZk_linesposjnameZdomains_outputZdomains_linesZdomainZoptZnodedev_outputr   r   r   setup   s     
zLibvirtClient.setupc                 C   s(   d}ddg}|D ]}|  ||d qd S )Nz"(\s*passwd\s*=\s*\")([^\"]*)(\".*)z"/root/\.cache/virt-manager/.*\.logz/root/\.virt-manager/.*\.logz
\1******\3)Zdo_path_regex_sub)r   Z	match_expZvirsh_path_expsZpath_expr   r   r   postproce   s    zLibvirtClient.postprocN)	__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr$   r%   r   r   r   r   r      s   Pr   N)Zsos.report.pluginsr   r   r   r   r   r   r   <module>	   s   