
    ([Qh                         d dl Z d dlmZmZmZmZmZmZmZ  G d de      Z	 G d de	e      Z
 G d de	ee      Z G d	 d
e	e      Z G d de	e      Zy)    N)Plugin	PluginOptRedHatPluginDebianPluginUbuntuPlugin	CosPluginAzurePluginc                       e Zd ZdZdZdZd Zy)KDumpzKdump crash dumpskdump)systemdebugc                 P    | j                  g d       | j                  dd       y )N)	z/proc/cmdlinez/etc/sysconfig/kdumpz/proc/sys/kernel/panicz/proc/sys/kernel/panic_on_oopsz/sys/kernel/kexec_loadedz/sys/kernel/fadumpz/sys/kernel/fadump_enabledz/sys/kernel/fadump_registeredz/sys/kernel/kexec_crash_sizez/sys/kernel/kexec_crash_loadedkexec_crash_loadedtags)add_copy_spec)selfs    :/usr/lib/python3/dist-packages/sos/report/plugins/kdump.pysetupzKDump.setup   s0     

 
	 	; 4 	 	6    N)__name__
__module____qualname__
short_descplugin_nameprofilesr    r   r   r   r      s    $JK"H6r   r   c                   L     e Zd ZdZdZ edded      gZd Zd Z	 fd	Z
 xZS )
RedHatKDump/etc/kdump.confzkexec-toolsget-vm-coreFcollect vm coredefaultval_typedescc                     | j                  d      }t        |dd      5 }|D ]@  }|j                  |      s|j                         d   j	                  d      c cddd       S  	 ddd       y# 1 sw Y   yxY w)	z Parse /etc/fstab file z
/etc/fstabrUTF-8encoding   /N )	path_joinopen
startswithsplitrstrip)r   devicefstabfilelines        r   fstab_parse_fszRedHatKDump.fstab_parse_fs0   sx    |,%w/ 	74 7??F,::<?11#66	7 	77	7 		7 s   A0#A0%A00A9c                 ,   d}d}d}t        |dd      5 }|D ]]  }|j                  d      r|j                         d   }(|j                  d	      s:|j                         d   }| j                  |      }_ 	 d
d
d
       ||z   S # 1 sw Y   ||z   S xY w) Parse /etc/kdump file r1   
/var/crashr"   r+   r,   r-   pathr/   )ext2ext3ext4xfsN)r3   r4   r5   r;   )r   fsysr?   r   r9   r:   r7   s          r   read_kdump_conffilezRedHatKDump.read_kdump_conffile9   s    !%w/ 	74 7??6*::<?D__%DE!ZZ\!_F..v6D7	7 d{	7 d{s   <B&BBc                     t         |           dt        j                         z   dz   }| j	                  |      r| j                  d|        | j                  g d       | j                  dd       	 | j                         }| j                  |d	
       | j                  | d       | j                  | d       | j                  | d       | j                  d      r| j                  | ddd       y y # t        $ r d}Y w xY w)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-creation.statusz/var/crash/*/vmcore-dmesg.txtvmcore_dmesgr   r>   T	recursive/*/vmcore-dmesg.txt/*/kexec-dmesg.log/*/vmcore-creation.statusr$   	/*/vmcore      	sizelimitmaxage)superr   platformreleasepath_existsadd_cmd_outputr   rE   	Exceptionadd_dir_listing
get_option)r   initramfs_imgr?   	__class__s      r   r   zRedHatKDump.setupH   s'   *X-=-=-??%&M*)M? ;< 
 	 	: . 	 	0	 ++-D
 	TT2dV#678dV#567dV#<=> ??=)$y1T"M *  	 D	 s   6C? ?DD)r   r   r   filespackagesr   booloption_listr;   rE   r   __classcell__r]   s   @r   r    r    &   s=     EH 	-(	*K
N Nr   r    c                   &     e Zd ZdZdZ fdZ xZS )DebianKDump)/etc/default/kdump-tools)zkdump-toolsc                     t         |           dt        j                         z   }| j	                  |      r| j                  d|        | j                  d       | j                  dg       y )Nz/var/lib/kdump/initrd.img-zlsinitramfs -l zkdump-config showrf   )rT   r   rU   rV   rW   rX   r   )r   r\   r]   s     r   r   zDebianKDump.setupo   sg    4x7G7G7IIM*/- AB/0&
 	r   )r   r   r   r^   r_   r   rb   rc   s   @r   re   re   j   s    )EH r   re   c                   6     e Zd Z eddd      gZ fdZ xZS )CosKDumpcollect-kdumpsFzCollect existing kdump files)namer'   r)   c                     t         |           | j                  dd       | j                  d      r| j	                  dg       y y )Nz/var/kdump*TrI   rj   z/var/kdump-*)rT   r   rZ   r[   r   )r   r]   s    r   r   zCosKDump.setup   sB    ]d;??+,/0 -r   )r   r   r   r   ra   r   rb   rc   s   @r   ri   ri   }   s&     	'5	7K
1 1r   ri   c                   F     e Zd ZdZdZ edded      gZd Z fdZ	 xZ
S )	
AzureKDumpr!   r#   r$   Fr%   r&   c                     d}d}t        |dd      5 }|D ]'  }|j                  d      s|j                         d   }) 	 ddd       |S # 1 sw Y   |S xY w)	r=   r>   r"   r+   r,   r-   r?   r/   N)r3   r4   r5   )r   r?   r   r9   r:   s        r   rE   zAzureKDump.read_kdump_conffile   sb    !%w/ 	+4 +??6*::<?D+	+
 	+
 s   AAAc                 |   t         |           | j                  ddg       	 | j                         }| j                  |d       | j                  | d       | j                  | d       | j                  | d       | j                  d	      r| j                  | d
dd       y y # t        $ r d}Y w xY w)Nr"   rG   r>   TrI   rK   rL   rM   r$   rN   rO   rP   rQ   )rT   r   r   rE   rY   rZ   r[   )r   r?   r]   s     r   r   zAzureKDump.setup   s    0
 	
	 ++-D
 	TT2dV#678dV#567dV#<=> ??=)$y1T"M *  	 D	 s   B- -B;:B;)r   r   r   r^   r_   r   r`   ra   rE   r   rb   rc   s   @r   rn   rn      s8     EH 	-(	*K

N Nr   rn   )rU   sos.report.pluginsr   r   r   r   r   r   r	   r   r    re   ri   rn   r   r   r   <module>rr      sf    ) ) )6F 60AN% ANH%| &1ui 1+N +Nr   