U
    -_gY                     @   s>   d dl mZ d dlmZ d dlmZmZ G dd deeZdS )    )match)quote)PluginRedHatPluginc                   @   s>   e Zd ZdZd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   Nc                 C   sV  d| _ d| _d}zt|ddd}|  }W 5 Q R X |D ]f}|r<|d dkrRq<td	|r|d
d | _ | j dd dd | _ td|r<|d
d | _q<W n ttfk
r   Y nX | 	dddd d| ji| _
| jddgdd | dddddddddd d!g | d" | d#}| j|d$| j
d% | d&}| j|d'| j
d% d S )(NZ	localhost /etc/candlepin/candlepin.confrzUTF--8)encodingr   #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/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 table_name, pg_size_pretty(total_bytes) AS total, pg_size_pretty(index_bytes) AS INDEX , pg_size_pretty(toast_bytes) AS toast, pg_size_pretty(table_bytes) AS TABLE FROM ( SELECT *, total_bytes-index_bytes-COALESCE(toast_bytes,0) AS table_bytes FROM (SELECT c.oid,nspname AS table_schema, relname AS TABLE_NAME, c.reltuples AS row_estimate, pg_total_relation_size(c.oid) AS total_bytes, pg_indexes_size(c.oid) AS index_bytes, pg_total_relation_size(reltoastrelid) AS toast_bytes FROM pg_class c LEFT JOIN pg_namespace n ON n.oid = c.relnamespace WHERE relkind = 'r') a) a order by total_bytes DESCZcandlepin_db_tables_sizes)Zsuggest_filenameenvzN            SELECT displayname, content_access_mode             FROM cp_owner;Zsimple_content_access)dbhostdbpasswdopenread
splitlinesr   splitIOError
IndexErrorZadd_file_tagsr   Zadd_copy_specZadd_cmd_outputbuild_query_cmd)selfZcfg_filecfileZcandle_lineslineZ_cmd r    >/usr/lib/python3/dist-packages/sos/report/plugins/candlepin.pysetup   sj    

	

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   t   s    zCandlepin.build_query_cmdc                 C   sL   d}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)=(\w*)([;<])z\1=********\3)Zdo_file_sub)r   ZregreplZcpdbregkeyr    r    r!   postproc   s    
zCandlepin.postproc)F)__name__
__module____qualname__Z
short_descZplugin_nameZpackagesr   r   r   r"   r   r&   r    r    r    r!   r      s   Y
r   N)rer   Zshlexr   Zsos.report.pluginsr   r   r   r    r    r    r!   <module>   s   