a >he@s.ddlmZmZmZmZGdddeeZdS))PluginIndependentPlugin SoSPredicate PluginOptc@sZeZdZdZdZdZeddddeddd ded dd dgZdd d ZddZ ddZ dS)Lvm2zLogical Volume Manager 2Zlvm2)ZstoragelvmdumpFzcollect an lvmdump tarball)defaultZdesc lvmdump-amzAattempt to collect lvmdump with advanced options and raw metadatametadataz0attempt to collect headers and metadata via pvckcCs@|jddd}d}d}|rd}|||f}|j||ddS) z|Collects an lvmdump in standard format with optional metadata archives for each physical volume present. rF)nameZmakezlvmdump %s -d '%s'z-a -m)chrootN)Zget_cmd_output_pathadd_cmd_outputZtmp_in_sysroot)selfr Z lvmdump_pathZ lvmdump_cmdZ lvmdump_optscmdr;/usr/lib/python3.9/site-packages/sos/report/plugins/lvm2.py do_lvmdumps zLvm2.do_lvmdumpcCsb|d}|ddkr^|dD]:}d|d|d|dd |dg}|j|d d q"d S) zj Collects the output of the command pvck for each block device present in the system. zpvs -o pv_name --no-headingsstatusroutputzpvck --dump headers zpvck --dump metadata zpvck --dump metadata_all z -vzpvck --dump metadata_search r )ZsubdirN)Zexec_cmd splitlinesr)rZ block_listlineZcmdsrrrget_pvck_output,s   zLvm2.get_pvck_outputcCs&ddd}tt||dr d}nd}|d}|jd|d d d d }|d d }d}|d d}d}|jd|d|dd|jd|d|dd|jd|d|dd|d|d|g|d|d|dr|n|dr|jdd |d!r"|dS)"Nz vgdisplay -hz --nolocking)rr)Z cmd_outputsz3--config="global{metadata_read_only=1}" --nolockingz6--config="global{locking_type=0 metadata_read_only=1}"z --foreignzvgdisplay -vv Z vgdisplay)Z root_symlinktagsz6pv_mda_free,pv_mda_size,pv_mda_count,pv_mda_used_count,Zpe_startz6vg_mda_count,vg_mda_free,vg_mda_size,vg_mda_used_countzvg_tags,systemid,lock_typezElv_tags,devices,lv_kernel_read_ahead,lv_read_ahead,stripes,stripesizez lvs -a -o + Z lvs_headings)rzpvs -a -v -o +Z pvs_headingsz vgs -v -o +Z vgs_headingsz pvscan -v z vgscan -vvv z/etc/lvmz/run/lvmrr T)r r )boolrrZ add_copy_specZ get_optionrr)rZnolockZlvm_optsZlvm_opts_foreignZpvs_colsZvgs_colsZlvs_colsrrrsetup>sH          z Lvm2.setupN)F) __name__ __module__ __qualname__Z short_descZ plugin_nameZprofilesrZ option_listrrrrrrrr s  rN)Zsos.report.pluginsrrrrrrrrr s