+
    Û1jaR  ã                   óŽ   € ^ RI Ht ^ RIHt ^ RIHt ^ RIHtHtH	t	H
t
Ht  ! R R]4      t ! R R]]4      t ! R	 R
]]	]
4      tR# )é    )Úmatch)Úquote)Úurlparse)ÚPluginÚRedHatPluginÚDebianPluginÚUbuntuPluginÚ	PluginOptc            	       óÐ   a € ] tR t^t o RtRtRtRtRtRt	Rt
RtRtRtRR/t]! R	^R
R7      ]! RRRR7      ]! RRRR7      ]! RRRR7      .tRtR tR tR tR tRR ltR tRtV tR# )ÚForemanz$Foreman/Satellite systems managementÚforemani  NÚ	localhosti8  Ú Ú
PGPASSWORDÚdaysz!number of days for dynflow output)ÚdefaultÚdescÚproxyfeaturesFz!collect features of smart proxiesúpuma-gczcollect Puma GC statsÚ	cvfiltersz'collect content view filters definitionz/pumactl %s -S /usr/share/foreman/tmp/puma.statec           
     óü  € V P                  R 4      '       d   R V n        RV n        MRV n        RV n        V P                  '       d®   V P                  R4      pVR,          ^ 8X  d�   VR,          P	                  4        Fq  pVP                  R4      '       g   K  \        VP                  R^4      ^,          4      pVP                  V n	        VP                  V n        VP                  V n        Ks  	  EMÓRp R	p\        VR
RR7      ;_uu_ 4       pVP                  4       P	                  4       pRRR4       X Fó  pV'       d   V^ ,          R8X  d   K  VP                  R4      '       d   RpK6  V'       d/   \!        RV4      '       d   VP                  4       ^,          V n	        V'       d/   \!        RV4      '       d   VP                  4       ^,          V n        V'       d/   \!        RV4      '       d   VP                  4       ^,          V n        VP                  R4      '       d   Kñ  RpKõ  	  V P                  P                  R4      '       d"   V P                  P%                  R4      '       gC   V P                  P                  R4      '       d6   V P                  P%                  R4      '       d   V P                  ^RJ V n        RV P                  /V n        V P)                  RRRRRRRR/4       V P+                  . RKO4       V P                  '       gl   V P                  R4      R,          pVP-                  4       pV P                  R4      R,          p	V	P-                  4       p	V P/                  R R!V 2R!V	 2R".4       V P1                  R#4      '       d   ^ MR$p
V P3                  R%R&V P4                   R'2.V
R(7       V P                  '       d   V P7                  R)V
R*7       V P3                  . RLOV P                  R+7       V P3                  R&V P4                   R,2R&V P4                   R-2R&V P4                   R.2R/V P4                   R02R/V P4                   R12R&V P4                   R22.4       V P                  '       g   V P9                  R3R4.RR57       V P/                  R6R7^xR87       V P/                  R9R:R;7       V P;                  R<R=R;7       V P7                  R>R?7       V P1                  R@4      '       d%   V P/                  V P<                  RA,          RBR;7       V P/                  V P<                  RC,          RDR;7       V P/                  RE4       V P?                  RF4      pV P/                  VRGV P&                  V P                  RH7       V PA                  4        V PC                  4        V P1                  RI4      '       d   V PE                  4        R# R#   + '       g   i     EL³; i  \"         d     ELËi ; i)Mr   Ú
postgresqlNzpodman exec foreman envÚstatusÚoutputzDATABASE_URL=Ú=Fz/etc/foreman/database.ymlÚrzUTF-8)ÚencodingÚ#zproduction:Tz\s+host:\s+\S+z\s+port:\s+\S+z\s+password:\s+\S+Ú Ú"Ú'r   z!/var/log/foreman/production.log.*Úforeman_production_logz/etc/sysconfig/foreman-tasksÚforeman_tasks_configz/etc/sysconfig/dynflowdz)/var/log/httpd/foreman-ssl_access_ssl.logÚforeman_ssl_access_ssl_logÚhostnamezhostname -fzforeman-selinux-relabel -nvzping -c1 -W1 zping -c1 -W1 localhostÚall_logsiô  z/var/log/foreman/production.logz	/var/log/z*/foreman-ssl_*_ssl.log)Ú	sizelimitzforeman.service)Úunitsr'   ©Ú	containerz
*/foreman*z&*/katello-reverse-proxy_error_ssl.log*z*/error_log*z/etc/z*/conf/z	*/conf.d/z'*/katello-reverse-proxy_access_ssl.log*z/root/ssl-buildz"/var/lib/foreman/red_hat_inventory)Ú	recursivezhammer pingÚhammer_ping)ÚtagsÚtimeoutzsystemctl list-units dynflow*Údynflow_units)Úsuggest_filenamez!"system-dynflow\x2dsidekiq.slice"Údynflow_sidekiq_statuszdynflow-sidekiq@*)r(   r   zgc-statszpumactl_gc-statsÚstatsÚ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 DESCÚforeman_db_tables_sizes)r0   Úenvr*   r   éÿÿÿÿ)z/etc/foreman/*key.pemz/etc/foreman/encryption_key.rbz/etc/foreman/registry-auth.json)z/etc/foreman/z&/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*ú"/usr/share/foreman/.ssh/ssh_config)#Úcontainer_existsr*   ÚdbcontainerÚexec_cmdÚ
splitlinesÚ
startswithr   Úsplitr%   ÚdbhostÚportÚdbportÚpasswordÚdbpasswdÚopenÚreadr   ÚIOErrorÚendswithr5   Úadd_file_tagsÚadd_forbidden_pathÚstripÚadd_cmd_outputÚ
get_optionÚadd_copy_specÚ	apachepkgÚadd_journalÚadd_dir_listingÚadd_service_statusÚpumactlÚbuild_query_cmdÚcollect_foreman_dbÚcollect_proxiesÚcollect_cv_filters)ÚselfÚdboutÚlineÚparsedÚproduction_scopeÚ
foreman_dbÚdfileÚforeman_linesÚ	_hostnameÚ_host_fr'   Ú_cmds   &           Ú</usr/lib/python3/dist-packages/sos/report/plugins/foreman.pyÚsetupÚForeman.setup-   s_  € ð × Ñ  ×+Ò+Ø&ˆDŒNØ+ˆDÕà!ˆDŒNØ#ˆDÔð �>�>ˆ>Ø—M‘MÐ";Ó<ˆEØ�X� !Ô#Ø! (�O×6Ñ6Ö8�DØ—‘ ×7Ô7Ü!)¨$¯*©*°S¸!Ó*<¸QÕ*?Ó!@˜Ø&,§o¡o˜œØ&,§k¡k˜œØ(.¯©˜žñ 9ùð  %ÐðØ8�
Ü˜* c°G×<Õ<ÀØ$)§J¡J£L×$;Ñ$;Ó$=�M÷ =ã)�Dç 4¨¥7¨c¤>Ù Ø—‘ }×5Ò5Ø+/Ð(Ù ß'¬EÐ2CÀT×,JÒ,JØ&*§j¡j£l°1¥o˜œß'¬EÐ2CÀT×,JÒ,JØ&*§j¡j£l°1¥o˜œß'¬EÐ2GÈ×,NÒ,NØ(,¯
©
«°Q­˜œàŸ?™?¨3×/Ô/Ø+0Ò(ñ *ð( —‘×)Ñ)¨#×.Ò.Ø—‘×'Ñ'¨×,Ò,Ø—‘×)Ñ)¨$×/Ò/Ø—‘×'Ñ'¨×-Ò-Ø $§¡¨a°Ð 3�”ð
 ! $§-¡-Ð0ˆŒà×ÑØ/Ð1IØ*Ð,BØ%Ð'=Ø7Ø,ð
ô 	ð 	×Ñò !
ô 	ð �~�~ˆ~ØŸ™ jÓ1°(Õ;ˆIØ!Ÿ™Ó)ˆIØ—m‘m MÓ2°8Õ<ˆGØ—m‘m“oˆGØ×ÑØ-Ø 	˜{Ð+Ø ˜yÐ)Ø(ð	!ô ð Ÿ™¨×4Ò4‘A¸#ˆ	Ø×ÑØ-Ø˜Ÿ™Ð'Ð'>Ð?ð
ð ð 	ô 	 ð
 �>�>ˆ>Ø×ÑÐ#4À	ÐÔJð 	×Ñò 
ð —^‘^ð 	ô 	%ð 	×ÑØ˜Ÿ™Ð' zÐ2Ø˜Ÿ™Ð'Ð'MÐNØ˜Ÿ™Ð' |Ð4Ø�D—N‘NÐ# 7Ð+Ø�D—N‘NÐ# 9Ð-Ø˜Ÿ™Ð'Ð'NÐOð
ô 	ð �~�~ˆ~Ø× Ñ Ð"3Ø"Fð"Hà+/ð !ô 1ð 	×Ñ˜M°ÀsÐÔKð 	×ÑÐ;Ø-<ð 	ô 	>à×ÑÐ DØ1Ið 	 ô 	Kà×ÑÐ2ÐÔ3ð �?‰?˜9×%Ò%Ø×Ñ §¡¨zÕ 9Ø1Cð  ô Eà×Ñ˜DŸL™L¨7Õ2Ø-<ð 	ô 	>à×ÑÐ;Ô<ð ×#Ñ#ðó
ˆð 	×Ñ˜DÐ3LØ $§¡°D×4DÑ4Dð 	ô 	Fà×ÑÔ!Ø×ÑÔØ�?‰?˜;×'Ò'Ø×#Ñ#Ö%ñ (÷_ =×<Ð<ûô$ ô âðúsI   Ã7W, ÄWÄ.;W, Å*W, Å65W, Æ,5W, Ç"AW, È)W, ×W)	×#	W, ×,W;×:W;c                ó$  € V P                  R4       R2p\        V4      pRpRV R2pRV R2pRV R2pR	V R2pR
pRp	Rp
RVRRRRRVRRRRRRRV	RV
/	pRVRVRVRV/pVP                  4        F@  w  rÞV P                  V4      pV P	                  WýR^dV P
                  V P                  R 7       KB  	  V P                  R!4      pVP                  4        F¹  w  ppR"pVR8w  d   V'       d   R#pV P                  VR$VR%7      pVR8w  d[   V P                  '       dI   V P                  VR^dV P
                  V P                  R&7      pV P	                  R'VRVR(,          R)7       KŽ  V P	                  VVR^dV P
                  V P                  R 7       K»  	  R*# )+z$Collect foreman db and dynflow data r   z dayszRselect id,name,value from settings where name not similar to '%(pass|key|secret)%'zFselect * from foreman_tasks_tasks where started_at > NOW() - interval z order by started_at asczÜ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 z, order by foreman_tasks_tasks.started_at asczÓ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 zÍ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 zÿSELECT id,network,mask,name,vlanid,gateway,dns_primary,dns_secondary,boot_mode,ipam,type,description,mtu,template_id,nic_delay,externalipam_id,externalipam_group,dhcp_id,tftp_id,dns_id,discovery_id,httpboot_id,externalipam_id FROM subnets ORDER BY id DESCz½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 sp.id, sp.name, sp.url, sp.download_policy, STRING_AGG(f.name, ', ') AS features FROM smart_proxies AS sp INNER JOIN smart_proxy_features AS spf ON sp.id = spf.smart_proxy_id INNER JOIN features AS f ON spf.feature_id = f.id GROUP BY sp.idÚforeman_settings_tableÚforeman_schema_migrationszselect * from schema_migrationsÚforeman_auth_tablez`select id,type,name,host,port,account,base_dn,attr_login,onthefly_register,tls from auth_sourcesÚforeman_subnets_tableÚdynflow_schema_infoz!select * from dynflow_schema_infoÚaudits_table_countzselect count(*) from auditsÚlogs_table_countzselect count(*) from logsÚfact_names_prefixesÚsmart_proxiesÚforeman_tasks_tasksÚdynflow_execution_plansÚdynflow_actionsÚdynflow_stepséX  )r0   r.   r'   r5   r*   zdynflow-utilsÚpsqlz /usr/libexec/psql-msgpack-decodeT)ÚcsvÚbinary)r.   r'   r5   r*   z2podman exec -i foreman /usr/libexec/dynflow-expandr   )r0   r.   ÚstdinN)
rK   r   ÚitemsrR   rJ   r5   r9   Úis_installedr*   r:   )rV   r   ÚintervalÚscmdÚdtaskcmdÚdyncmdÚ
dactioncmdÚ	dstepscmdÚ
subnetscmdÚfactnamescmdÚsmartcmdÚ	foremandbÚ
foremancsvÚtableÚvalr`   ÚdynutilsÚdynru   Úcmdouts   &                   ra   rS   ÚForeman.collect_foreman_dbÝ   sG  € ð —/‘/ &Ó)Ð*¨%Ð0ˆÜ˜“;ˆð$ð 	ð
(Ø(0 zÐ1IðKˆð-ð .6¨Jð 71ð1ð 	ðBð CKÀð L;ð;ð 	ðAð BJÀ
ð K:ð:ð 	ðHð 	ðð 	ðð 	ð % dØ'Ð)JØ ð #6ð $ ZØ!Ð#FØ Ð"?ØÐ ;Ø! <Ø˜Xð
ˆ	ð" " 8Ø% vØ˜zØ˜Yð	
ˆ
ð $Ÿ/™/Ö+‰JˆEØ×'Ñ'¨Ó,ˆDØ×Ñ ÀcØ*-°4·8±8Ø*.×*:Ñ*:ð  ö <ñ ,ð ×$Ñ$ _Ó5ˆØ"×(Ñ(Ö*‰HˆC�ØˆFØÐ+Ô+·Ø;�Ø×'Ñ'¨°¸fÐ'ÓEˆDØÐ+Ô+°··°ØŸ™Ø #°ØŸ™¨D×,<Ñ,<ð 'ó >�ð ×#Ñ#ØHØ%(ØØ  Õ*ð	 $ö ð ×#Ñ# D¸3ÈØ.1°t·x±xØ.2×.>Ñ.>ð $ö @ó! +ó    c                óˆ  € V P                  R4      '       d«   V P                  RRR7      pV P                  WP                  V P                  R7      pVR,          ^ 8X  da   VR,          P                  4       R,           F<  pVP                  R	4      pR
V^,           R2pV P                  W^ ,          R^
R7       K>  	  R# R# R# )zCollect foreman proxies r   z"select name,url from smart_proxiesT)rt   )r5   r*   r   r   :é   NNÚ,zNcurl -s --key /etc/foreman/client_key.pem --cert /etc/foreman/client_cert.pem z/v2/featuresÚsmart_proxies_features)r0   Úsubdirr.   N)rK   rR   r:   r5   r9   r;   r=   rJ   )rV   r`   ÚproxiesÚproxys   &   ra   rT   ÚForeman.collect_proxies[  sÐ   € à�?‰?˜?×+Ò+ð ×'Ñ'Ð(LØ,0ð (ó 2ˆDà—m‘m D¯h©hØ.2×.>Ñ.>ð $ó @ˆGà�xÕ  AÔ%à$ XÕ.×9Ñ9Ó;¸B×?Ð?�EØ!ŸK™K¨Ó,�EðBà# A�h˜Z |ð5�Dð ×'Ñ'¨ÀQ½xØ/GØ02ð (ö 4ó @ñ &ñ ,rŠ   c                óì   € RpRpRpRpRpRpRpRVR	VR
VRVRVRVRV/pVP                  4        FA  w  ršV P                  V
4      pV P                  W¹RR^dV P                  V P                  R7       KC  	  R# )z5Collect content view filters definition if requested a  select f.id, f.name, f.type, f.inclusion, f.original_packages, f.original_module_streams, f.content_view_id, cv.name as content_view_name, f.description from katello_content_view_filters as f inner join katello_content_views as cv on f.content_view_id = cv.idz‡select id, content_view_filter_id, name, version, min_version, max_version, architecture from katello_content_view_package_filter_ruleszbselect id, content_view_filter_id, name, uuid from katello_content_view_package_group_filter_rulesz–select id, content_view_filter_id, errata_id, start_date, end_date, types, date_type, allow_other_types from katello_content_view_erratum_filter_ruleszhselect id, content_view_filter_id, module_stream_id from katello_content_view_module_stream_filter_ruleszUselect id, content_view_filter_id, name from katello_content_view_docker_filter_ruleszƒselect id, content_view_filter_id, name, version, min_version, max_version, architecture from katello_content_view_deb_filter_rulesÚkatello_cv_filtersÚkatello_cv_package_rulesÚkatello_cv_group_rulesÚkatello_cv_errata_rulesÚkatello_cv_module_rulesÚkatello_cv_docker_rulesÚkatello_cv_deb_rulesÚcontent_view_filtersrr   )r0   r�   r.   r'   r5   r*   N)rw   rR   rJ   r5   r9   )rV   Úcv_filters_cmdÚcv_pkg_rules_cmdÚcv_group_rules_cmdÚcv_errata_rules_cmdÚcv_module_rules_cmdÚcv_docker_rules_cmdÚcv_deb_rules_cmdÚfilter_tablesr„   Úqueryr`   s   &           ra   rU   ÚForeman.collect_cv_filtersp  sÎ   € ð+ð 	ð=ð 	ðCð 	ð
8ð 	ð>ð 	ð
<ð 	ð
9ð 	ð ! .Ø&Ð(8Ø$Ð&8Ø%Ð':Ø%Ð':Ø%Ð':Ø"Ð$4ð
ˆð *×/Ñ/Ö1‰LˆEØ×'Ñ'¨Ó.ˆDØ×Ñ Ø'=Ø(+°sÀÇÁØ*.×*:Ñ*:ð  ö <ó 2rŠ   c                ót   € V'       d   RV R2pRpWCV P                   V P                  \        V4      3,          # )a  
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 (z6) TO STDOUT WITH (FORMAT 'csv', DELIMITER ',', HEADER)z8%s --no-password -h %s -p %s -U foreman -d foreman -c %s)r>   r@   r   )rV   r¤   rt   ru   Ú_dbcmds   &&&& ra   rR   ÚForeman.build_query_cmd§  s?   € ÷ Ø˜U˜Gð $Að AˆEàKˆØ §¡¨d¯k©k¼5À»<ÐHÕHÐHrŠ   c                óœ   € V P                  R RR4       V P                  RRR4       V P                  R.4       V P                  RRR4       R	# )
z/etc/foreman/(.*)((conf)(.*)?)z5((\:|\s*)(passw|cred|token|secret|key).*(\:\s|=))(.*)z
\1********z"/etc/foreman/(.*)((yaml|yml)(.*)?)z\1"********"z /var/log/foreman/production.log*zfrom settings wherez(http(s)?://)\S+:\S+(@.*)z\1******:******\3N)Údo_path_regex_subÚdo_paths_http_subÚdo_cmd_output_sub)rV   s   &ra   ÚpostprocÚForeman.postprocµ  sc   € Ø×ÑØ-ØDØô	ð
 	×ÑØ1ØDØô	ð
 	×ÑØ.ð 
ô 	ð 	×ÑØ!Ø(Ø ö	"rŠ   )r*   r9   r>   rB   r@   r5   )Úsysmgmt)r   Ú
foremanctl)r   )Frs   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú
short_descÚplugin_nameÚplugin_timeoutÚprofilesÚpackagesÚ
containersrM   r>   r@   rB   r5   r
   Úoption_listrQ   rb   rS   rT   rU   rR   r­   Ú__static_attributes__Ú__classdictcell__)Ú__classdict__s   @ra   r   r      s·   ø‡ € à7€Jà€KØ€NØ€HØ(€HØ€JØ€IØ€FØ€FØ€HØ˜Ð
€Cá�& "Ø:ô	<á�/¨5Ø:ô	<á�) UØ.ô	0á�+ uØ@ô	Bð	€Kð @€Gòn&ò`|@ò|4ò*5<ônI÷"ð "rŠ   r   c                   ó6   a a€ ] tR tRt oRtV 3R ltRtVtV ;t# )ÚRedHatForemaniÍ  Úhttpdc                ó„   <€ V P                  R R/4       \        SV `	  4        V P                  RV P                  R7       R# )r7   Ússh_foreman_configzgem listr)   N)rG   Úsuperrb   rJ   r*   )rV   Ú	__class__s   &€ra   rb   ÚRedHatForeman.setupÑ  s>   ø€ à×ÑØ0Ð2Fð
ô 	ô 	‰‰ŒØ×Ñ˜J°$·.±.ÐÖArŠ   © )	r±   r²   r³   r´   rM   rb   r¼   r½   Ú__classcell__)rÅ   r¾   s   @@ra   rÀ   rÀ   Í  s   ù‡ € à€I÷Bõ BrŠ   rÀ   c                   ó   € ] tR tRtRtRtR# )ÚDebianForemaniÛ  Úapache2rÇ   N)r±   r²   r³   r´   rM   r¼   rÇ   rŠ   ra   rÊ   rÊ   Û  s   † à„IrŠ   rÊ   N)Úrer   Úshlexr   Úurllib.parser   Úsos.report.pluginsr   r   r   r	   r
   r   rÀ   rÊ   rÇ   rŠ   ra   Ú<module>rÐ      sI   ðõ Ý Ý !÷9õ 9ôt"ˆfô t"ôtB�G˜\ô Bô�G˜\¨<ö rŠ   