File: //usr/lib/python3.6/site-packages/sos/report/plugins/__pycache__/foreman.cpython-36.pyc
3
3��d*: � @ s� d dl mZmZmZmZmZmZ d dlmZ d dl m
Z
d dlmZ G dd� de�Z
G dd� de
ee�ZG d d
� d
e
ee�ZdS )� )�Plugin�RedHatPlugin� SCLPlugin�DebianPlugin�UbuntuPlugin� PluginOpt)�quote)�match)�
is_executablec @ sf e Zd ZdZdZdZdZdZedddd�ed d
dd�edd
d
d�gZ dZ
dd� Zddd�Zdd� Z
dS )�Foremanz$Foreman/Satellite systems management�foremani �sysmgmt�months� z#number of months for dynflow output)�defaultZdesc�
proxyfeaturesFz!collect features of smart proxieszpuma-gczcollect Puma GC statsz/pumactl %s -S /usr/share/foreman/tmp/puma.statec C s d}d| _ d| _y�x�td�j� j� D ]n}| s$|d dkr<q$|jd�rLd}q$|rhtd |�rh|j� d
| _ |r�td|�r�|j� d
| _|jd�s$d}q$W W n tk
r� Y nX | jjd
�r�| jj d
�s�| jjd�r�| jj d�r�| jd
dr� | _d| ji| _
| jddddd�� | jddg� | j
d�d }|j� }| j
d�d }|j� }| jddj| j�gdd� | jddddd d!d"d#d$d%d&d'd(d)d*j| j�d+j| j�d,j| j�d-j| j�d.j| j�d/j| j�g� | jd0d1d2d3d4d5d6d7| d7| d8g
� | jd9d:d;� | jd<d=d>� | jd?d@d;� | jdAdBd;� | jdCdD� | jdE��rN| j| jdF dGd;� | j| jdH dId;� | jdJ� | jdK�}| j|dL| j
dM� dN| jdO� }dP}dQ}dRt|� } dSt|� }
dTt|� }dU}||dVdWdX|dsd[�}
d\| |
|d]�}x2|
D ]*}| j|
| �}| j||d^d_| j
d`� �q�W | jda�}xP|D ]H}db}|dck�rH|�rHdd}| j|| d|de�}| j||d^d_| j
d`� �q,W | jdf��r�| jdgddh�}| j
|| j
di�}|dj dk�r�xJ|d j� d
d � D ]2}|jdk�}dl|d
}| j||d dmdndo� �q�W | jdpdqg� d S )tNFZ localhost� z/etc/foreman/database.ymlr �#zproduction:Tz\s+host:\s+\S+r z\s+password:\s+\S+� �"�'Z
PGPASSWORDZforeman_production_logZforeman_tasks_configZforeman_ssl_access_ssl_log)z!/var/log/foreman/production.log.*z/etc/sysconfig/foreman-tasksz/etc/sysconfig/dynflowdz)/var/log/httpd/foreman-ssl_access_ssl.logz/etc/foreman/*key.pemz/etc/foreman/encryption_key.rbZhostname�outputzhostname -fz/var/log/foreman/production.logz"/var/log/{}*/foreman-ssl_*_ssl.log)� sizelimitz
/etc/foreman/z/etc/sysconfig/foremanz/etc/sysconfig/dynflowdz/etc/default/foremanz&/var/log/foreman/dynflow_executor*log*z*/var/log/foreman/dynflow_executor*.output*z#/var/log/foreman/apipie_cache*.log*z/var/log/foreman/cron*.log*z /var/log/foreman/db_migrate*log*z/var/log/foreman/db_seed*log*z$/var/log/foreman/production.log[.-]*z$/var/log/foreman-selinux-install.logz&/var/log/foreman-proxy-certs-generate*z/usr/share/foreman/Gemfile*z/var/log/{}*/foreman*z2/var/log/{}*/katello-reverse-proxy_access_ssl.log*z1/var/log/{}*/katello-reverse-proxy_error_ssl.log*z/var/log/{}*/error_log*z/etc/{}*/conf/z/etc/{}*/conf.d/zforeman-selinux-relabel -nvzpassenger-status --show poolz passenger-status --show requestsz"passenger-status --show backtraceszpassenger-memory-statszls -lanR /root/ssl-buildz(ls -lanR /usr/share/foreman/config/hookszping -c1 -W1 %szping -c1 -W1 localhostz�qpid-stat -b amqps://localhost:5671 -q --ssl-certificate=/etc/pki/katello/qpid_router_client.crt --ssl-key=/etc/pki/katello/qpid_router_client.key --sasl-mechanism=ANONYMOUSzqpid-stat_-q)�suggest_filenamezhammer pingZhammer_ping)Ztagszsystemctl list-units dynflow*Z
dynflow_unitsz!"system-dynflow\x2dsidekiq.slice"Zdynflow_sidekiq_statuszdynflow-sidekiq@*)Zunitszpuma-gczgc-statszpumactl_gc-statsZstatsZ
pumactl_statsz/usr/sbin/foreman-puma-statusa[ 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 DESCZforeman_db_tables_sizes)r �envz %s monthsr zRselect id,name,value from settings where name not similar to '%(pass|key|secret)%'z`select id,type,name,host,port,account,base_dn,attr_login,onthefly_register,tls from auth_sourcesz�select dynflow_execution_plans.* from foreman_tasks_tasks join dynflow_execution_plans on (foreman_tasks_tasks.external_id = dynflow_execution_plans.uuid::varchar) where foreman_tasks_tasks.started_at > NOW() - interval %sz�select dynflow_actions.* from foreman_tasks_tasks join dynflow_actions on (foreman_tasks_tasks.external_id = dynflow_actions.execution_plan_uuid::varchar) where foreman_tasks_tasks.started_at > NOW() - interval %sz�select dynflow_steps.* from foreman_tasks_tasks join dynflow_steps on (foreman_tasks_tasks.external_id = dynflow_steps.execution_plan_uuid::varchar) where foreman_tasks_tasks.started_at > NOW() - interval %sz�WITH prefix_counts AS (SELECT split_part(name,'::',1) FROM fact_names) SELECT COUNT(*), split_part AS "fact_name_prefix" FROM prefix_counts GROUP BY split_part ORDER BY count DESC LIMIT 100z!select * from dynflow_schema_infozselect count(*) from auditszselect count(*) from logsz select name,url,download_policy zfrom smart_proxies)Zforeman_settings_tableZforeman_auth_tableZdynflow_schema_infoZaudits_table_countZlogs_table_countZfact_names_prefixesZ
smart_proxiesz!select * from foreman_tasks_tasks)�foreman_tasks_tasksZdynflow_execution_plansZdynflow_actionsZ
dynflow_stepsiX �d )r �timeoutr r z
dynflow-utils�psqlr z /usr/libexec/psql-msgpack-decode)�csv�binaryr z"select name,url from smart_proxies)r )r Zstatus�,z\curl -s --key /etc/foreman/client_key.pem --cert /etc/foreman/client_cert.pem %s/v2/featuresZsmart_proxies_features�
)r Zsubdirr Z
http_proxyZhttps_proxy���z2select name,url,download_policy from smart_proxies)�dbhostZdbpasswd�open�read�
splitlines�
startswithr �split�IOError�endswithr �
add_file_tagsZadd_forbidden_pathZexec_cmd�stripZ
add_copy_spec�format� apachepkgZadd_cmd_outputZadd_service_statusZadd_journalZ
get_option�pumactl�build_query_cmdr Zis_installedZadd_env_var)�selfZproduction_scope�lineZ _hostnameZ_host_fZ_cmdr ZscmdZauthcmdZdyncmdZ
dactioncmdZ dstepscmdZfactnamescmdZ foremandbZ
foremancsv�tableZdynutilsZdynr Zproxies�proxy� r6 �/usr/lib/python3.6/foreman.py�setup% s
z
Foreman.setupr c C s$ |rd| }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>COPY (%s) TO STDOUT WITH (FORMAT 'csv', DELIMITER ',', HEADER)z:%s --no-password -h %s -p 5432 -U foreman -d foreman -c %s)r$ r )r2 Zqueryr r Z_dbcmdr6 r6 r7 r1 " s
zForeman.build_query_cmdc C s4 | j d| j dd� | j ddd� | j ddd� d S ) Nz(/var/log/%s*/foreman-ssl_access_ssl.log*z7(.*\?(passw|cred|token|secret|key).*=)(.*) (HTTP.*(.*))z
\1******** \4z/etc/foreman/(.*)((conf)(.*)?)z5((\:|\s*)(passw|cred|token|secret|key).*(\:\s|=))(.*)z
\1********z"/etc/foreman/(.*)((yaml|yml)(.*)?)z\1"********")Zdo_path_regex_subr/ )r2 r6 r6 r7 �postproc0 s zForeman.postprocN)r
)r )Fr )�__name__�
__module__�__qualname__Z
short_descZplugin_nameZplugin_timeoutZprofilesZpackagesr Zoption_listr0 r8 r1 r9 r6 r6 r6 r7 r s
~
r c s e Zd ZdZ� fdd�Z� ZS )�
RedHatForemanZhttpdc sR | j ddi� | jj� dkr0td�r0d| j | _tt| �j� | jdddd � d S )
Nz"/usr/share/foreman/.ssh/ssh_configZssh_foreman_config� Zsclzscl enable tfm '%s'Ztfmzgem listzscl enable tfm gem list)r ) r, ZpolicyZdist_versionr
r0 �superr= r8 Zadd_cmd_output_scl)r2 )� __class__r6 r7 r8 G s
zRedHatForeman.setup)r: r; r<