o
    O6uf%  ã                   @   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   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                       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©ÚdefaultÚval_typeÚdescc                 C   sv   |   d¡}t|ddd��%}|D ]}| |¡r(| ¡ d  d¡  W  d  ƒ S qW d  ƒ dS 1 s4w   Y  dS )	z Parse /etc/fstab file z
/etc/fstabÚrúUTF-8©Úencodingé   ú/NÚ )Ú	path_joinÚopenÚ
startswithÚsplitÚrstrip)r   ÚdeviceÚfstabÚfileÚliner   r   r   Úfstab_parse_fs2   s   

ýÿ
ÿüzRedHatKDump.fstab_parse_fsc                 C   sŠ   d}d}d}t |ddd��,}|D ]}| d¡r| ¡ d }q| d	¡r.| ¡ d }|  |¡}qW d
  ƒ || S 1 s<w   Y  || S )ú Parse /etc/kdump file r,   ú
/var/crashr   r&   r'   r(   Úpathr*   )Úext2Úext3Úext4ÚxfsN)r.   r/   r0   r6   )r   Úfsysr9   r
   r4   r5   r2   r   r   r   Úread_kdump_conffile;   s    


€û
ÿùzRedHatKDump.read_kdump_conffilec                    sÌ   t ƒ  ¡  dt ¡  d }|  |¡r|  d|› �¡ |  g d¢¡ | jddd� z|  ¡ }W n ty9   d}Y nw |  d	|› �¡ |  |› d
�¡ |  |› d�¡ |  	d¡rd| j|› d�ddd� d S 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.txtÚvmcore_dmesgr   r8   ú	ls -alhR ú/*/vmcore-dmesg.txtú/*/kexec-dmesg.logr    ú	/*/vmcoreé   é   ©Ú	sizelimitÚmaxage)
Úsuperr   ÚplatformÚreleaseÚpath_existsÚadd_cmd_outputr   r?   Ú	ExceptionÚ
get_option)r   Úinitramfs_imgr9   ©Ú	__class__r   r   r   J   s*   

ÿ
ÿþ
ÿzRedHatKDump.setup)r   r   r   ÚfilesÚpackagesr   ÚboolÚoption_listr6   r?   r   Ú__classcell__r   r   rS   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 ¡  }|  |¡r|  d|› �¡ |  d¡ |  dg¡ d S )Nz/var/lib/kdump/initrd.img-zlsinitramfs -l zkdump-config showr[   )rK   r   rL   rM   rN   rO   r   )r   rR   rS   r   r   r   o   s   



ÿzDebianKDump.setup)r   r   r   rU   rV   r   rY   r   r   rS   r   rZ   j   s    rZ   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 ƒ  ¡  |  d¡ |  d¡r|  dg¡ d S d S )Nzls -alRh /var/kdump*r]   z/var/kdump-*)rK   r   rO   rQ   r   r   rS   r   r   r   „   s
   


ÿzCosKDump.setup)r   r   r   r   rX   r   rY   r   r   rS   r   r\   }   s    ÿÿr\   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   s\   d}d}t |ddd��}|D ]}| d¡r| ¡ d }qW d  ƒ |S 1 s'w   Y  |S )	r7   r8   r   r&   r'   r(   r9   r*   N)r.   r/   r0   )r   r9   r
   r4   r5   r   r   r   r?   •   s   
€þ
ÿûzAzureKDump.read_kdump_conffilec                    s”   t ƒ  ¡  |  ddg¡ z|  ¡ }W n ty   d}Y nw |  d|› �¡ |  |› d�¡ |  |› d�¡ |  d¡rH| j|› d�d	d
d� d S d S )Nr   r@   r8   rB   rC   rD   r    rE   rF   rG   rH   )rK   r   r   r?   rP   rO   rQ   )r   r9   rS   r   r   r   ¡   s    
þþ
ÿzAzureKDump.setup)r   r   r   rU   rV   r   rW   rX   r?   r   rY   r   r   rS   r   r_   ‹   s    ÿÿr_   )rL   Úsos.report.pluginsr   r   r   r   r   r   r   r	   r   rZ   r\   r_   r   r   r   r   Ú<module>   s   $B