U
    id                     @   st   d dl Z d dlmZmZmZmZmZmZ G dd deZG dd deeZ	G dd deeeZ
G d	d
 d
eeZdS )    N)Plugin	PluginOptRedHatPluginDebianPluginUbuntuPlugin	CosPluginc                   @   s    e Zd ZdZdZdZdd ZdS )KDumpzKdump crash dumpsZkdump)systemdebugc                 C   s2   |  ddddddddd	d
dg | j ddd d S )Nz/proc/cmdlinez/etc/sysconfig/kdumpz/proc/sys/kernel/panicz/proc/sys/kernel/panic_on_oopsz/sys/kernel/kexec_loadedz/sys/kernel/fadump_enabledz/sys/kernel/fadump/enabledz/sys/kernel/fadump_registeredz/sys/kernel/fadump/registeredz/sys/kernel/fadump/mem_reservedz/sys/kernel/kexec_crash_sizez/sys/kernel/kexec_crash_loadedZkexec_crash_loadedZtags)add_copy_specself r   :/usr/lib/python3/dist-packages/sos/report/plugins/kdump.pysetup   s     zKDump.setupN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr   r   r   r   r   r      s   r   c                       s4   e Zd ZdZdZdd Zdd Z fddZ  ZS )	RedHatKDump)/etc/kdump.conf)zkexec-toolsc              
   C   sV   t | dd<}|D ]0}||r| d d  W  5 Q R  S qW 5 Q R X dS )Nz
/etc/fstabr   / )open	path_join
startswithsplitrstrip)r   devicefpliner   r   r   fstab_parse_fs-   s
    
.zRedHatKDump.fstab_parse_fsc              	   C   sn   d}d}t | ddH}|D ]<}|dr:| d }q|dr| d }| |}qW 5 Q R X || S )Nr   
/var/crashr   r   pathr   )Zext2Zext3Zext4Zxfs)r   r   r   r   r#   )r   Zfsr%   r!   r"   r    r   r   r   read_kdump_conffile4   s    

zRedHatKDump.read_kdump_conffilec                    s   t t|   dt  d }| |r6| d|  | ddddg | jdd	d
 z|  }W n t	k
rz   d}Y nX | d
| | d
| d S )Nz/boot/initramfs-z	kdump.imgzlsinitrd %sr   z/etc/udev/rules.d/*kexec.rulesz/var/crash/*/kexec-dmesg.logz/var/log/kdump.logz/var/crash/*/vmcore-dmesg.txtZvmcore_dmesgr   r$   z{}/*/vmcore-dmesg.txtz{}/*/kexec-dmesg.log)superr   r   platformreleasepath_existsadd_cmd_outputr   r&   	Exceptionformat)r   initramfs_imgr%   	__class__r   r   r   A   s*    


zRedHatKDump.setup)	r   r   r   filespackagesr#   r&   r   __classcell__r   r   r/   r   r   (   s
   r   c                       s$   e Zd ZdZdZ fddZ  ZS )DebianKDump)/etc/default/kdump-tools)zkdump-toolsc                    sL   t t|   dt  }| |r2| d|  | d | dg d S )Nz/var/lib/kdump/initrd.img-zlsinitramfs -l %szkdump-config showr5   )r'   r4   r   r(   r)   r*   r+   r   )r   r.   r/   r   r   r   `   s    

zDebianKDump.setup)r   r   r   r1   r2   r   r3   r   r   r/   r   r4   [   s   r4   c                       s,   e Zd ZeddddgZ fddZ  ZS )CosKDumpcollect-kdumpsFzCollect existing kdump files)namedefaultZdescc                    s2   t t|   | d | dr.| dg d S )Nzls -alRh /var/kdump*r7   z/var/kdump-*)r'   r6   r   r+   Z
get_optionr   r   r/   r   r   r   u   s    

zCosKDump.setup)r   r   r   r   Zoption_listr   r3   r   r   r/   r   r6   n   s
   r6   )r(   Zsos.report.pluginsr   r   r   r   r   r   r   r   r4   r6   r   r   r   r   <module>	   s
    3