uec@sddlmZmZmZmZmZddlmZddlm Z defdYZ de eefdYZ de eefd YZ d S( i(tPlugint RedHatPlugint DebianPlugint UbuntuPlugint SCLPlugin(tquote(tmatchtForemancBsPeZdZdZdZd ZdZdgZd Ze d d Z d Z RS(s+Foreman/Satellite 6 systems management tforemanitsysmgmts foreman-proxytmonthss#number of months for dynflow outputtfastic*Cst}d|_d|_yxtdjjD]}| s4|ddkrWq4n|jdrrt}q4n|rtd|r|j d|_n|rtd |r|j d|_n|jd s4t}q4q4WWnt k rnX|jjd r|jj d sA|jjd rW|jj d rW|jdd !|_ni|jd6|_ |j ddg|jdd}|j}|jdd}|j}|jddj|jgdd|jdddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/d0d1d2d3d4j|d5j|d6j|jd7j|jd8j|jd9j|jd:j|jd;j|jg%|jd<d=d>d?d@dAdBdCdDdEdF|dF|dGg |jdHdIdJ|jdKdIdL|jdMdN|jdO}|j|dIdPdQ|j dR|jdS}dT}dU}dVt|} dWt|} dXt|} dY} i|dZ6|d[6d\d]6d^d_6d`da6dbdc6| dd6dedfdgdhdi6} i| dj6| dk6| dl6}xI| D]A}|j| |}|j|dI|dmdnddodQ|j qW|jdp}xv|D]n}dq}|d_kr|rdr}n|j||dstdt|}|j|dI|dmdnddodQ|j qoW|jdudvgdS(wNt localhostts/etc/foreman/database.ymlit#s production:s\s+host:\s+\S+is\s+password:\s+\S+t t"s'it PGPASSWORDs/etc/foreman*/*key.pems/etc/foreman*/encryption_key.rbthostnametoutputs hostname -fs/var/log/foreman/production.logs"/var/log/{}*/foreman-ssl_*_ssl.logt sizelimits /etc/foreman/s/etc/foreman-proxy/s/etc/sysconfig/foremans/etc/sysconfig/dynflowds/etc/default/foremans/etc/foreman-installer/s&/var/log/foreman/dynflow_executor*log*s*/var/log/foreman/dynflow_executor*.output*s#/var/log/foreman/apipie_cache*.log*s/var/log/foreman/cron*.log*s /var/log/foreman/db_migrate*log*s/var/log/foreman/db_seed*log*s$/var/log/foreman/production.log[.-]*s /var/log/foreman-proxy/cron*log*s,/var/log/foreman-proxy/migrate_settings*log*s!/var/log/foreman-proxy/proxy*log*s4/var/log/foreman-proxy/smart_proxy_dynflow_core*log*s$/var/log/foreman-selinux-install.logs&/var/log/foreman-proxy-certs-generate*s/var/log/foreman-installer/*s/var/log/foreman-maintain/*s/var/log/syslog*s/var/log/tomcat*/catalina*log*s"/var/log/tomcat*/host-manager*log*s/var/log/tomcat*/localhost*log*s/var/log/tomcat*/manager*log*s/usr/share/foreman/Gemfile*s /var/lib/puppet/ssl/certs/ca.pems'/etc/puppetlabs/puppet/ssl/certs/ca.pems'/etc/puppetlabs/puppet/ssl/certs/{}.pems /var/lib/puppet/ssl/certs/{}.pems/var/log/{}*/foreman*s2/var/log/{}*/katello-reverse-proxy_access_ssl.log*s1/var/log/{}*/katello-reverse-proxy_error_ssl.log*s/var/log/{}*/error_log*s/etc/{}*/conf/s/etc/{}*/conf.d/s4bundle --local --gemfile=/usr/share/foreman/Gemfile*s hammer pingsforeman-selinux-relabel -nvsforeman-maintain service statusspassenger-status --show pools passenger-status --show requestss"passenger-status --show backtracesspassenger-memory-statssls -lanR /root/ssl-builds(ls -lanR /usr/share/foreman/config/hookssping -c1 -W1 %ssping -c1 -W1 localhostssystemctl list-units dynflow*tsuggest_filenamet dynflow_unitss!"system-dynflow\x2dsidekiq.slice"tdynflow_sidekiq_statustunitssdynflow-sidekiq@*s[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 DESCtforeman_db_tables_sizestenvs %s monthsR sRselect id,name,value from settings where name not similar to '%(pass|key|secret)%'s]select type,name,host,port,account,base_dn,attr_login,onthefly_register,tls from auth_sourcessselect 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 %ssselect 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 %ssselect 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 %ssWITH 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 100tforeman_settings_tabletforeman_auth_tables!select * from dynflow_schema_infotdynflow_schema_infos!select * from foreman_tasks_taskstforeman_tasks_taskssselect count(*) from auditstaudits_table_countsselect count(*) from logstlogs_table_counttfact_names_prefixessselect sp.name, sp.url, s+sp.download_policy,n.ip from smart_proxies s-as sp left join hosts as h on h.name=sp.name s%left join nics as n on n.host_id=h.idt smart_proxiestdynflow_execution_planstdynflow_actionst dynflow_stepsttimeoutiXids dynflow-utilstpsqls /usr/libexec/psql-msgpack-decodetcsvtbinaryt http_proxyt https_proxy(tFalsetdbhosttdbpasswdtopentreadt splitlinest startswithtTrueRtsplittIOErrortendswithRtadd_forbidden_pathtexec_cmdtstript add_copy_spectformatt apachepkgtadd_cmd_outputtadd_service_statust add_journaltbuild_query_cmdt get_optionRt is_installedt add_env_var(tselftproduction_scopetlinet _hostnamet_host_ft_cmdR tscmdtauthcmdtdyncmdt dactioncmdt dstepscmdt factnamescmdt foremandbt foremancsvttabletdynutilstdynR)((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pytsetups    $$                       R'cCs3|rd|}nd}|||jt|fS(sI 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 s>COPY (%s) TO STDOUT WITH (FORMAT 'csv', DELIMITER ',', HEADER)s:%s --no-password -h %s -p 5432 -U foreman -d foreman -c %s(R-R(RDtqueryR(R)t_dbcmd((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pyR@s  cCsd}|jd|dd}|jd|d|jddd|jdd d|jd d d |jd d d|jddd|jd|jdddS(Ns~((foreman.*)?(\"::(foreman(.*?)|katello).*)?((::(.*)::.*(passw|cred|token|secret|key).*(\")?:)|(storepass )|(password =)))(.*)s/var/log/foreman-installer/sat*s \1 ********sZ(\s)+(Found key: (\"(foreman(.*?)|katello)::(.*(token|secret|key|passw).*)\") value:) (.*)s\1 \2 ********s#(\.|_|-)password(=\'|=|\", \")(\w*)s\1password\2********s)/var/log/foreman-installer/foreman-proxy*s(\s*proxy_password\s=) (.*)s!/etc/foreman(.*)((yaml|yml)(.*)?)s5((\:|\s*)(passw|cred|token|secret|key).*(\:\s|=))(.*)s \1"********"s/etc/foreman(.*)((conf)(.*)?)s \1********s//var/log/foreman-maintain/foreman-maintain.log*s.(((passw|cred|token|secret)=)|(password ))(.*)s(/var/log/%s*/foreman-ssl_access_ssl.log*s7(.*\?(passw|cred|token|secret|key).*=)(.*) (HTTP.*(.*))s \1******** \4(tdo_path_regex_subR<(RDtsatregt sat_debug_reg((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pytpostprocsD (R (Rs foreman-proxy(smonthss#number of months for dynflow outputR i( t__name__t __module__t__doc__t plugin_nametplugin_timeouttprofilestpackagest option_listRUR,R@R[(((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pyRs  t RedHatForemancBseZdZdZRS(thttpdcCs-tt|j|jdddddS(Nttfmsgem listRsscl enable tfm gem list(tsuperRdRUtadd_cmd_output_scl(RD((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pyRUHs(R\R]R<RU(((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pyRdDst DebianForemancBseZdZRS(tapache(R\R]R<(((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pyRiNsN( t sos.pluginsRRRRRtpipesRtreRRRdRi(((s7/usr/lib/python2.7/site-packages/sos/plugins/foreman.pyt s (3