o
    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 dumpskdump)systemdebugc                 C   s    |  g d | j ddd d S )N)z/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_loadedkexec_crash_loadedtags)add_copy_specself r   :/usr/lib/python3/dist-packages/sos/report/plugins/kdump.pysetup   s   
zKDump.setupN)__name__
__module____qualname__
short_descplugin_name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   sn   t | dd%}|D ]}||r$| d d  W  d    S qW d    dS 1 s0w   Y  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   s   d}d}t | dd,}|D ]}|dr| d }q|dr-| d }| |}qW d    || S 1 s;w   Y  || S )Nr    
/var/crashr   r   pathr   )ext2ext3ext4xfs)r!   r"   r#   r$   r)   )r   fsr+   r'   r(   r&   r   r   r   read_kdump_conffile4   s   



zRedHatKDump.read_kdump_conffilec                    s   t t|   dt  d }| |r| d|  | g d | jddd z|  }W n t	y:   d}Y nw | d	
| | d

| d S )Nz/boot/initramfs-z	kdump.imgzlsinitrd %s)r   z/etc/udev/rules.d/*kexec.rulesz/var/crash/*/kexec-dmesg.logz/var/log/kdump.logz/var/crash/*/vmcore-dmesg.txtvmcore_dmesgr   r*   z{}/*/vmcore-dmesg.txtz{}/*/kexec-dmesg.log)superr   r   platformreleasepath_existsadd_cmd_outputr   r1   	Exceptionformat)r   initramfs_imgr+   	__class__r   r   r   A   s"   

zRedHatKDump.setup)	r   r   r   filespackagesr)   r1   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  }| |r| d|  | d | dg d S )Nz/var/lib/kdump/initrd.img-zlsinitramfs -l %szkdump-config showrA   )r3   r@   r   r4   r5   r6   r7   r   )r   r:   r;   r   r   r   `   s   


zDebianKDump.setup)r   r   r   r=   r>   r   r?   r   r   r;   r   r@   [   s    r@   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defaultdescc                    s6   t t|   | d | dr| dg d S d S )Nzls -alRh /var/kdump*rC   z/var/kdump-*)r3   rB   r   r7   
get_optionr   r   r;   r   r   r   u   s
   

zCosKDump.setup)r   r   r   r   option_listr   r?   r   r   r;   r   rB   n   s    rB   )r4   sos.report.pluginsr   r   r   r   r   r   r   r   r@   rB   r   r   r   r   <module>   s    3