o
    O6uf  ã                   @   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 APIÚvirsh)ÚsystemÚvirt)zlibvirt-clientc              	   C   sÜ  |   ddg¡ d}g d¢}|D ]}| j|› d|› �dd� q| j|› d�d	dd
� dD ][}| j|› d|› d�|dv r<dnd dd�}|d dkr†|d  ¡ }z|d  ¡  d¡}W n	 tyb   Y q+w tdd„ |dd … ƒD ]}| ¡ | }	| j|› d|› d|	› �dd� qnq+| 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rê|d  ¡ D ]}	| j|› d|	› �dd� qÛd S d S )Nz/root/.cache/virt-manager/*.logz/root/.virt-manager/*.logzvirsh -r)ÚdomcapabilitiesÚcapabilitiesÚnodeinfozfreecell --allznode-memory-tuneÚversionzpool-capabilitiesÚ
nodecpumapzmaxvcpus kvmÚsysinfoznodedev-list --treeú T)Ú
foregroundz list --allÚvirsh_list_all)Útagsr   )ÚnetÚnwfilterÚpoolz-list %s)r   r   z--allÚ Ústatusr   ÚoutputÚNamec                 S   ó   | S ©N© ©Úxr   r   ú:/usr/lib/python3/dist-packages/sos/report/plugins/virsh.pyÚ<lambda>@   ó    z%LibvirtClient.setup.<locals>.<lambda>é   z	-dumpxml c                 S   r   r   r   r   r   r   r   r   J   r    é   )ÚdumpxmlÚdominfoÚ
domblklistz nodedev-listz nodedev-dumpxml )	Úadd_copy_specÚadd_cmd_outputÚcollect_cmd_outputÚ
splitlinesÚsplitÚindexÚ	ExceptionÚfilterÚexec_cmd)ÚselfÚcmdÚsubcmdsÚsubcmdÚkÚk_listÚk_linesÚposÚjÚnameÚdomains_outputÚdomains_linesÚdomainÚoptÚnodedev_outputr   r   r   Úsetup   sf   þÿÿÿþÿÿ€ÿÿþþ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)Údo_path_regex_sub)r/   Ú	match_expÚvirsh_path_expsÚpath_expr   r   r   ÚpostprocX   s   þøzLibvirtClient.postprocN)	Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚpackagesr>   rC   r   r   r   r   r      s    Cr   N)Úsos.report.pluginsr   r   r   r   r   r   r   Ú<module>   s   