
    -_g3                         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/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)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_fs2   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                    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      r| j                  | ddd       y y # t        $ r d}Y rw 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-dmesg.txtvmcore_dmesgr   r>   T	recursive/*/vmcore-dmesg.txt/*/kexec-dmesg.logr$   	/*/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.setupJ   s   *X-=-=-??%&M*)M? ;< 
 	 	: . 	 	0	 ++-D
 	TT2dV#678dV#567 ??=)$y1T"M *  	 D	 s   6C+ +C98C9)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 showre   )rS   r   rT   rU   rV   rW   r   )r   r[   r\   s     r   r   zDebianKDump.setupo   sg    4x7G7G7IIM*/- AB/0&
 	r   )r   r   r   r]   r^   r   ra   rb   s   @r   rd   rd   j   s    )EH r   rd   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   ri   z/var/kdump-*)rS   r   rY   rZ   r   )r   r\   s    r   r   zCosKDump.setup   sB    ]d;??+,/0 -r   )r   r   r   r   r`   r   ra   rb   s   @r   rh   rh   }   s&     	'5	7K
1 1r   rh   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   t         |           | j                  ddg       	 | j                         }| j                  |d       | j                  | d       | j                  | d       | j                  d      r| j                  | d	d
d       y y # t        $ r d}Y rw xY w)Nr"   rG   r>   TrI   rK   rL   r$   rM   rN   rO   rP   )rS   r   r   rE   rX   rY   rZ   )r   r?   r\   s     r   r   zAzureKDump.setup   s    0
 	
	 ++-D
 	TT2dV#678dV#567 ??=)$y1T"M *  	 D	 s   B B'&B')r   r   r   r]   r^   r   r_   r`   rE   r   ra   rb   s   @r   rm   rm      s8     EH 	-(	*K

N Nr   rm   )rT   sos.report.pluginsr   r   r   r   r   r   r	   r   r    rd   rh   rm   r   r   r   <module>rq      sd    ) ) )6F 64?N% ?ND%| &1ui 1*N *Nr   