o
    *b                     @   s>   d dl mZmZ d dlmZ d dlmZ G dd deeZdS )    )PluginRedHatPlugin)quote)matchc                   @   s2   e Zd ZdZdZdZdd ZdddZd	d
 ZdS )	Candlepinz Candlepin entitlement management	candlepin)r   c              	   C   s  d| _ d| _d}z>t|  D ]3}|r|d dkrqtd|r7|dd | _ | j d	d
 dd | _ td|rD|dd | _qW n ttfyQ   Y nw | 	dddd d| ji| _
| jddgdd | g d | d | d}| j|d| j
d d S )NZ	localhost /etc/candlepin/candlepin.confr   #z&^\s*org.quartz.dataSource.myDS.URL=\S+=   /   :z+^\s*org.quartz.dataSource.myDS.password=\S+Zcandlepin_logZcandlepin_error_logZcandlepin_conf)z"/var/log/candlepin/candlepin.log.*z/var/log/candlepin/err.log.*r	   Z
PGPASSWORDz/var/log/candlepin/error.logz /var/log/candlepin/candlepin.log)Z	sizelimit)r	   /etc/candlepin/broker.xmlz/var/log/candlepin/audit*.log*z%/var/log/candlepin/candlepin.log[.-]*z/var/log/candlepin/cpdb*.log*z/var/log/candlepin/cpinit*.log*z!/var/log/candlepin/error.log[.-]*z/var/log/tomcat*/catalina*log*z"/var/log/tomcat*/host-manager*log*z/var/log/tomcat*/localhost*log*z/var/log/tomcat*/manager*log*zdu -sh /var/lib/candlepin/*/*a'              SELECT schema_name, relname,                    pg_size_pretty(table_size) AS size, table_size             FROM (               SELECT                 pg_catalog.pg_namespace.nspname AS schema_name,                 relname,                 pg_relation_size(pg_catalog.pg_class.oid) AS table_size               FROM pg_catalog.pg_class               JOIN pg_catalog.pg_namespace                 ON relnamespace = pg_catalog.pg_namespace.oid             ) t             WHERE schema_name NOT LIKE 'pg_%'             ORDER BY table_size DESC;Zcandlepin_db_tables_sizes)Zsuggest_filenameenv)dbhostZdbpasswdopenread
splitlinesr   splitIOError
IndexErrorZadd_file_tagsr   Zadd_copy_specZadd_cmd_outputbuild_query_cmd)selfZcfg_filelineZ_cmd r   >/usr/lib/python3/dist-packages/sos/report/plugins/candlepin.pysetup   sF   

	


zCandlepin.setupFc                 C   s$   |rdnd}d}|| j |t|f S )aI  
        Builds the command needed to invoke the pgsql query as the postgres
        user.
        The query requires significant quoting work to satisfy both the
        shell and postgres parsing requirements. Note that this will generate
        a large amount of quoting in sos logs referencing the command being run
        z
-A -F , -Xr   zUpsql --no-password -h %s -p 5432 -U candlepin                   -d candlepin %s -c %s)r   r   )r   ZqueryZcsvZ	csvformatZ_dbcmdr   r   r   r   f   s   zCandlepin.build_query_cmdc                 C   sL   d}d}|  d|| d}|  d|| dD ]}|  dd| d	|  qd S )
Nz$(((.*)(pass|token|secret)(.*))=)(.*)z
\1********r	   z(--password=)([a-zA-Z0-9]*)z/var/log/candlepin/cpdb.log)ZtrustStorePasswordZkeyStorePasswordr   z%s=(\w*)([;<])z%s=********\2)Zdo_file_sub)r   ZregreplZcpdbregkeyr   r   r   postprocs   s   zCandlepin.postprocN)F)	__name__
__module____qualname__Z
short_descZplugin_nameZpackagesr   r   r!   r   r   r   r   r      s    
Or   N)Zsos.report.pluginsr   r   Zpipesr   rer   r   r   r   r   r   <module>   s   
