o
    íìg½  ã                   @   s^   d dl Z d dl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	dS )	é    N)ÚPluginÚRedHatPluginÚDebianPluginÚUbuntuPluginÚ	PluginOptc                       sl   e Zd ZdZdZdZdZdZdZe	dde
dd	�e	d
de
de d	�e	dddd�gZ‡ fdd„Zdd„ Z‡  ZS )ÚMysqlzMySQL and MariaDB RDBMSÚmysql)Úservicesz/etc/my.cnfz/etc/my.cnf.dz' (password visible in process listings)Údbuserz%username for database dump collection)ÚdefaultÚval_typeÚdescÚdbpassÚ z!password for data dump collectionÚdbdumpFzCollect a database dump)r   r   c                    sþ   t ƒ  ¡  |  | jdddg¡ |  d¡r|  g d¢¡ n|  g d¢¡ |  d¡rxd}d	|› �}|  d
¡}|  d¡}dtjv rCtjd }|du sK|du rS| j |¡ d S |rY|du ra| j |¡ d S |tjd< d|› d�}d}| j	d|› �|d� |  	d¡ d S )Nz/etc/mysqlrouter/z/var/lib/mysql/grastate.datz/var/lib/mysql/gvwstate.datÚall_logs)z/var/log/mysql*z/var/log/mariadb*z/var/log/mysqlrouter/*)z/var/log/mysqld.logz/var/log/mysql/mysqld.logz$/var/log/mysqlrouter/mysqlrouter.logz/var/log/mariadb/mariadb.logr   z0database user name and password must be suppliedzmysql.dbdump: r
   r   Ú	MYSQL_PWDTFz--user=z --all-databaseszmysqldump_--all-databasesz
mysqldump )Úsuggest_filenamezdu -s /var/lib/mysql/*)
ÚsuperÚsetupÚadd_copy_specÚ	mysql_cnfÚ
get_optionÚosÚenvironÚsoslogÚwarningÚadd_cmd_output)ÚselfÚmsgÚ
dbdump_errr
   r   ÚoptsÚname©Ú	__class__© ú:/usr/lib/python3/dist-packages/sos/report/plugins/mysql.pyr   !   s8   
ü







zMysql.setupc                 C   sH   dg}dd  |¡› d�}d}|  | j› d�||¡ |  | j› ||¡ d S )NÚpasswordz(^\s*(ú|z)\s*=\s*)(.*)z\1*********ú/*)ÚjoinÚdo_path_regex_subÚ
my_cnf_dirÚdo_file_subr   )r   Úprotect_keysÚregexÚsubr%   r%   r&   ÚpostprocX   s   
þþzMysql.postproc)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesr   r,   Úpw_warn_textr   ÚstrÚoption_listr   r1   Ú__classcell__r%   r%   r#   r&   r      s"    ÿÿû7r   c                       s    e Zd ZdZ‡ fdd„Z‡  ZS )ÚRedHatMysql)zmysql-serverr   zmariadb-serverÚmariadbzopenstack-selinuxc                    s(   t ƒ  ¡  |  dd| j› d�dg¡ d S )Nz/etc/ld.so.conf.d/mysql-*.confz /etc/ld.so.conf.d/mariadb-*.confr)   z:/var/lib/config-data/puppet-generated/mysql/etc/my.cnf.d/*)r   r   r   r,   ©r   r#   r%   r&   r   q   s   


üzRedHatMysql.setup)r2   r3   r4   Úpackagesr   r;   r%   r%   r#   r&   r<   g   s    r<   c                       s.   e Zd ZdZdZe› d�Z‡ fdd„Z‡  ZS )ÚDebianMysql)zmysql-server.*zmysql-commonzmariadb-server.*zmariadb-commonz percona-xtradb-cluster-server-.*z/etc/mysql/z/my.cnfc              	      s2   t ƒ  ¡  |  | jddddddg¡ |  d¡ d S )Nz/var/log/mysql/error.logz/var/lib/mysql/*.errz%/var/lib/percona-xtradb-cluster/*.errz,/var/lib/percona-xtradb-cluster/grastate.datz,/var/lib/percona-xtradb-cluster/gvwstate.datz0/var/lib/percona-xtradb-cluster/innobackup.*.logz'du -s /var/lib/percona-xtradb-cluster/*)r   r   r   r,   r   r>   r#   r%   r&   r   ˆ   s   
ù	zDebianMysql.setup)r2   r3   r4   r?   r,   r   r   r;   r%   r%   r#   r&   r@   {   s
    
r@   )
r   Úsos.report.pluginsr   r   r   r   r   r   r<   r@   r%   r%   r%   r&   Ú<module>   s
   Y