U
    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 APIZvirsh)systemZvirt)zlibvirt-clientc                 C   s  |  ddg d}dddddd	d
ddddg}|D ]}| jd||f dd q0| jd| ddd dD ]}| jd||f dd}|d dkrd|d  }z|d  d}W n tk
r   Y qdY nX tdd |dd  D ](}| | }	| jd|||	f dd qqd| jd| dd}
|
d dkr|
d  dd  }tdd |D ]6}| d  }d!D ]}| jd"|||f dd q^qJ| jd#	|dd}|d dkr|d  D ]}	| jd$	||	dd qd 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 --treez%s %sT)
foregroundz%s list --allZvirsh_list_all)Ztagsr   )ZnetZnwfilterZpoolz
%s %s-listZstatusr   outputNamec                 S   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   s   | S r
   r   r   r   r   r   r   I   r      )ZdumpxmlZdominfoZ
domblklistz%s %s %sz{0} nodedev-listz{0} nodedev-dumpxml {1})
Zadd_copy_specZadd_cmd_outputZcollect_cmd_output
splitlinessplitindex	ExceptionfilterZexec_cmdformat)selfcmdZsubcmdsZsubcmdkZk_listZk_linesposjnZdomains_outputZdomains_linesZdomaindr   Znodedev_outputr   r   r   setup   sr    
 

 
 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   postprocV   s    zLibvirtClient.postprocN)	__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZpackagesr    r!   r   r   r   r   r      s   Ar   N)Zsos.report.pluginsr   r   r   r   r   r   r   <module>	   s   