
    G%@i                         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/kexecz/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_fs1   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_conffile:   s    !%w/ 	74 7??6*::<?D__%DE!ZZ\!_F..v6D7	7 d{	7 d{s   <B&BBc                 D   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       | j                  ddg       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maxagezkdumpctl statuszkdumpctl estimatesuperr   platformreleasepath_existsadd_cmd_outputr   rE   	Exceptionadd_dir_listing
get_optionr   initramfs_imgr?   	__class__s      r   r   zRedHatKDump.setupI   s=   *X-=-=-??%&M*)M? ;< 
 	 	: . 	 	0	 ++-D
 	TT2dV#678dV#567dV#<=> ??=)$y1T"M 	
 	  	 D	 s   6D DD)r   r   r   filespackagesr   booloption_listr;   rE   r   __classcell__r_   s   @r   r    r    '   s;     EH 	-(	*K
% %r   r    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 )	DebianKDump)/etc/default/kdump-tools)zkdump-toolsr$   Fzcollect memory dumpsr&   c                     d}d}t        |dd      5 }|D ]G  }|j                         }|j                  d      s%|j                  d      d   j                  d	      }I 	 d
d
d
       |S # 1 sw Y   |S xY w)z  Parse /etc/default/kdump-tools r>   rh   r+   r,   r-   KDUMP_COREDIR=r/   "N)r3   stripr4   r5   r   r?   r   r9   r:   s        r   rE   zDebianKDump.read_kdump_conffile{   s{    *%w/ 	94 9zz|???3::c?1-33C8D9	9 	9 s   'A+%A++A5c                    t         |           dt        j                         z   }| j	                  |      r| j                  d|        | j                  d       | j                  dg       	 | j                         }| j                  |d       | j                  | d| d	| d
g       | j                  | ddd       | j                  d      r| j                  | ddd       y y # t        $ r d}Y ~w xY w)Nz/var/lib/kdump/initrd.img-zlsinitramfs -l zkdump-config showrh   r>   TrI   z
/kexec_cmdz/kdump_lockz	/*/dmesg*z/linux-image-*rO   rP   rQ   r$   z/*/dump*rT   r]   s      r   r   zDebianKDump.setup   s#   4x7G7G7IIM*/- AB/0&
 		 ++-D
 	TT2fJfK fI
 	
 	dV>2d2N ??=)$x0DL *  	 D	 s   0C1 1C?>C?r   r   r   r`   ra   r   rb   rc   rE   r   rd   re   s   @r   rg   rg   q   s8    )EH 	--	/K
M Mr   rg   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   rs   z/var/kdump-*)rU   r   r[   r\   r   )r   r_   s    r   r   zCosKDump.setup   sB    ]d;??+,/0 -r   )r   r   r   r   rc   r   rd   re   s   @r   rr   rr      s&     	'5	7K
1 1r   rr   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   rn   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   )rU   r   r   rE   rZ   r[   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;rp   re   s   @r   rw   rw      s8     EH 	-(	*K

N Nr   rw   )rV   sos.report.pluginsr   r   r   r   r   r   r	   r   r    rg   rr   rw   r   r   r   <module>r{      sj    F F F6F 62G% GT4M%| 4Mn1ui 1+N +Nr   