U
    -_g3                     @   s   d dl Z d dlmZ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G dd de	eZdS )    N)Plugin	PluginOptRedHatPluginDebianPluginUbuntuPlugin	CosPluginAzurePluginc                   @   s    e Zd ZdZdZdZdd ZdS )KDumpzKdump crash dumps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                       sF   e Zd ZdZdZeddeddgZdd Zd	d
 Z	 fddZ
  ZS )RedHatKDump/etc/kdump.confzkexec-toolsget-vm-coreFcollect vm coredefaultZval_typedescc              
   C   s^   |  d}t|ddd<}|D ]0}||r| d d  W  5 Q R  S qW 5 Q R X dS )z Parse /etc/fstab file z
/etc/fstabrUTF-8encoding   / )Z	path_joinopen
startswithsplitrstrip)r   deviceZfstabfileliner   r   r   fstab_parse_fs2   s    

.zRedHatKDump.fstab_parse_fsc              	   C   sp   d}d}d}t |dddH}|D ]<}|dr<| d }q |d	r | d }| |}q W 5 Q R X || S )
 Parse /etc/kdump file r&   
/var/crashr   r    r!   r"   pathr$   )Zext2Zext3Zext4Zxfs)r'   r(   r)   r.   )r   Zfsysr1   r
   r,   r-   r+   r   r   r   read_kdump_conffile;   s    

zRedHatKDump.read_kdump_conffilec                    s   t    dt  d }| |r4| d|  | dddddg | jd	d
d z|  }W n tk
rz   d}Y nX | j	|dd | | d | | d | 
dr| j| dddd d S )Nz/boot/initramfs-z	kdump.imgz	lsinitrd r   z/etc/udev/rules.d/*kexec.rules"/usr/lib/udev/rules.d/*kexec.rulesz/var/crash/*/kexec-dmesg.logz/var/log/kdump.logz/var/crash/*/vmcore-dmesg.txtZvmcore_dmesgr   r0   T	recursive/*/vmcore-dmesg.txt/*/kexec-dmesg.logr   	/*/vmcore      Z	sizelimitZmaxage)superr   platformreleasepath_existsadd_cmd_outputr   r2   	Exceptionadd_dir_listing
get_option)r   initramfs_imgr1   	__class__r   r   r   J   s2    




zRedHatKDump.setup)r   r   r   filespackagesr   booloption_listr.   r2   r   __classcell__r   r   rE   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                    sJ   t    dt  }| |r0| d|  | d | dg d S )Nz/var/lib/kdump/initrd.img-zlsinitramfs -l zkdump-config showrM   )r<   r   r=   r>   r?   r@   r   )r   rD   rE   r   r   r   o   s    


zDebianKDump.setup)r   r   r   rG   rH   r   rK   r   r   rE   r   rL   j   s   rL   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)namer   r   c                    s2   t    | jddd | dr.| dg d S )Nz/var/kdump*Tr4   rO   z/var/kdump-*)r<   r   rB   rC   r   r   rE   r   r   r      s    

zCosKDump.setup)r   r   r   r   rJ   r   rK   r   r   rE   r   rN   }   s
   rN   c                       s>   e Zd ZdZdZeddeddgZdd Z fd	d
Z	  Z
S )
AzureKDumpr   r   r   Fr   r   c              	   C   sF   d}d}t |ddd&}|D ]}|dr| d }qW 5 Q R X |S )r/   r0   r   r    r!   r"   r1   r$   )r'   r(   r)   )r   r1   r
   r,   r-   r   r   r   r2      s    
zAzureKDump.read_kdump_conffilec                    s   t    | ddg z|  }W n tk
r<   d}Y nX | j|dd | | d | | d | dr| j| d	d
dd d S )Nr   r3   r0   Tr4   r6   r7   r   r8   r9   r:   r;   )r<   r   r   r2   rA   rB   rC   )r   r1   rE   r   r   r      s    


zAzureKDump.setup)r   r   r   rG   rH   r   rI   rJ   r2   r   rK   r   r   rE   r   rQ      s   rQ   )r=   Zsos.report.pluginsr   r   r   r   r   r   r   r	   r   rL   rN   rQ   r   r   r   r   <module>	   s   $B