o
    O6ufg  ã                   @   s.   d dl mZmZmZmZ G dd„ deeƒZdS )é    )ÚPluginÚIndependentPluginÚSoSPredicateÚ	PluginOptc                   @   sZ   e Zd ZdZdZdZedddd�eddd	d�ed
ddd�gZddd„Zdd„ Z	dd„ Z
dS )ÚLvm2zLogical Volume Manager 2Úlvm2)ÚstorageÚlvmdumpFzcollect an lvmdump tarball)ÚdefaultÚdescú
lvmdump-amzAattempt to collect lvmdump with advanced options and raw metadataÚmetadataz0attempt to collect headers and metadata via pvckc                 C   s@   | j ddd�}d}d}|rd}|||f }| j||  ¡ d� dS )	z|Collects an lvmdump in standard format with optional metadata
           archives for each physical volume present.
        r	   F)ÚnameÚmakezlvmdump %s -d '%s'Ú z-a -m)ÚchrootN)Úget_cmd_output_pathÚadd_cmd_outputÚtmp_in_sysroot)Úselfr   Úlvmdump_pathÚlvmdump_cmdÚlvmdump_optsÚcmd© r   ú9/usr/lib/python3/dist-packages/sos/report/plugins/lvm2.pyÚ
do_lvmdump   s   zLvm2.do_lvmdumpc                 C   sf   |   d¡}|d dkr/|d  ¡ D ]}d|› �d|› �d|› d�d	|› d�g}| j|d
d� qdS dS )zj Collects the output of the command pvck for each block device
            present in the system.
        zpvs -o pv_name --no-headingsÚstatusr   Úoutputzpvck --dump headers zpvck --dump metadata zpvck --dump metadata_all z -vzpvck --dump metadata_search r   )ÚsubdirN)Úexec_cmdÚ
splitlinesr   )r   Ú
block_listÚlineÚcmdsr   r   r   Úget_pvck_output,   s   ÿ

üøzLvm2.get_pvck_outputc                 C   s&  dddœ}t t| |d�ƒrd}nd}|d }| jd|› �d	d	d
� d}|d d }d}|d d }d}| jd|› d|› �dd� | jd|› d|› �dd� | jd|› d|› �dd� |  d|› �d|› �g¡ |  d¡ |  d¡ |  d¡r{|  ¡  n|  d¡r†| jdd � |  d!¡r‘|  ¡  d S d S )"Nzvgdisplay -hz--nolocking)r   r   )Úcmd_outputsz3--config="global{metadata_read_only=1}" --nolockingz6--config="global{locking_type=0 metadata_read_only=1}"z
 --foreignzvgdisplay -vv Ú	vgdisplay)Úroot_symlinkÚtagsz6pv_mda_free,pv_mda_size,pv_mda_count,pv_mda_used_countú,Úpe_startz6vg_mda_count,vg_mda_free,vg_mda_size,vg_mda_used_countzvg_tags,systemid,lock_typezElv_tags,devices,lv_kernel_read_ahead,lv_read_ahead,stripes,stripesizezlvs -a -o +ú Úlvs_headings)r)   zpvs -a -v -o +Úpvs_headingszvgs -v -o +Úvgs_headingsz
pvscan -v zvgscan -vvv z/etc/lvmz/run/lvmr	   r   T)r   r   )Úboolr   r   Úadd_copy_specÚ
get_optionr   r%   )r   ÚnolockÚlvm_optsÚlvm_opts_foreignÚpvs_colsÚvgs_colsÚlvs_colsr   r   r   Úsetup>   sJ   
þÿþÿþ





ÿz
Lvm2.setupN)F)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr   Úoption_listr   r%   r9   r   r   r   r   r      s    ÿÿû
	r   N)Úsos.report.pluginsr   r   r   r   r   r   r   r   r   Ú<module>   s   