U
    -_ge                     @   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 2Zlvm2)ZstoragelvmdumpFzcollect an lvmdump tarball)defaultZ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)nameZmakezlvmdump %s -d '%s' z-a -m)chrootN)Zget_cmd_output_pathadd_cmd_outputZtmp_in_sysroot)selfr
   Zlvmdump_pathZlvmdump_cmdZlvmdump_optscmd r   9/usr/lib/python3/dist-packages/sos/report/plugins/lvm2.py
do_lvmdump   s    zLvm2.do_lvmdumpc                 C   sb   |  d}|d dkr^|d  D ]:}d| d| d| dd	| dg}| j|d
d q"dS )zj Collects the output of the command pvck for each block device
            present in the system.
        zpvs -o pv_name --no-headingsZstatusr   outputzpvck --dump headers zpvck --dump metadata zpvck --dump metadata_all z -vzpvck --dump metadata_search r
   )ZsubdirN)Zexec_cmd
splitlinesr   )r   Z
block_listlineZ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 )"Nzvgdisplay -hz--nolocking)r   r   )Zcmd_outputsz3--config="global{metadata_read_only=1}" --nolockingz6--config="global{locking_type=0 metadata_read_only=1}"z
 --foreignzvgdisplay -vv Z	vgdisplay)Zroot_symlinktagsz6pv_mda_free,pv_mda_size,pv_mda_count,pv_mda_used_count,Z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 + Zlvs_headings)r   zpvs -a -v -o +Zpvs_headingszvgs -v -o +Zvgs_headingsz
pvscan -v zvgscan -vvv z/etc/lvmz/run/lvmr   r	   T)r
   r
   )boolr   r   Zadd_copy_specZ
get_optionr   r   )r   ZnolockZlvm_optsZlvm_opts_foreignZpvs_colsZvgs_colsZlvs_colsr   r   r   setup>   sJ    
 



z
Lvm2.setupN)F)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   Zoption_listr   r   r   r   r   r   r   r      s   	
r   N)Zsos.report.pluginsr   r   r   r   r   r   r   r   r   <module>	   s   