o
    id                     @   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||f dd q| jd| d	dd
 dD ]N}| jd||f dd}|d dkrw|d  }z|d  d}W n	 tyV   Y q)w tdd |dd  D ]}| | }	| jd|||	f dd qbq)| jd| dd}
|
d dkr|
d  dd  }tdd |D ]}| d }dD ]}| jd|||f dd qq| jd	|dd}|d dkr|d  D ]}	| jd	||	dd qd 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 --treez%s %sT)
foregroundz%s list --allvirsh_list_all)tagsr   )netnwfilterpoolz
%s %s-list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%s %s-dumpxml %sc                 S   r   r   r   r   r   r   r   r   I   r      )dumpxmldominfo
domblklistz%s %s %sz{0} nodedev-listz{0} nodedev-dumpxml {1})
add_copy_specadd_cmd_outputcollect_cmd_output
splitlinessplitindex	Exceptionfilterexec_cmdformat)selfcmdsubcmdssubcmdkk_listk_linesposjndomains_outputdomains_linesdomaindr   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)do_path_regex_sub)r.   	match_expvirsh_path_expspath_expr   r   r   postprocV   s   zLibvirtClient.postprocN)	__name__
__module____qualname__
short_descplugin_nameprofilespackagesr=   rB   r   r   r   r   r      s    Ar   N)sos.report.pluginsr   r   r   r   r   r   r   <module>   s   