3
ܓin# @ sB d dl mZ d dlmZ d dlmZmZmZ G dd deeZdS ) )match)quote)PluginIndependentPlugin PluginOptc @ sv e Zd ZdZdZdZdZeddddgZd Z d
Z
dZdZdZ
d
ZdZde
iZdZdd Zdd ZdddZdd ZdS )PulpCorezPulp-3 aka pulpcoreZpulpcorepulpcore-manager/etc/pulp/settings.pyz task-days zdays of task history)defaultZdescZ localhosti8 Zpulp z/var/lib/pulp/assetsz/var/lib/pulp/media/upload
PGPASSWORDc C s d}ddd}yPt | jddd4}x*|j jdd jd
djdd
j D ] }| sN|d dkrhqN|jdrxd}qNd}|rt|d |r||| _|rt|d |r||| _|rt|d |r||| _ |rt|d |r||| _
|ot|d |r
||| _|rd|krd}|jdr8||dd| _|jdrN||dd| _
qNW W dQ R X W n tk
rv Y nX d| ji| _dS )z Parse pulp settings F:c S sP | j |d j jd}|jdr,|jds@|jdrL|jdrL|dd }|S )N ,"')splitlstriprstrip
startswithendswith)linesepval r /usr/lib/python3.6/pulpcore.pyseparate_value) s
z6PulpCore.parse_settings_config..separate_valuerzUTF-8)encodingr z,
{z{
}z
}r #Z DATABASESTz\s*['|\"]%s['|\"]\s*:\s*\S+ZHOSTZPORTNAMEZUSERZPASSWORDzSTATIC_ROOT = =)r zCHUNKED_UPLOAD_DIR = Nr
)r )open
settings_filereadreplace
splitlinesr r dbhostdbportdbnamedbuserdbpasswd
staticroot uploaddirIOErrorenv)selfZdatabases_scoper filer patternr r r parse_settings_config% s@
zPulpCore.parse_settings_configc C s d | _ | _| jddd}|d dkrP|d j }t|dkrPd| _ d| _d | _| j | jd
dg| j | jd | jd
| j dd| j | jd dd
dd}| j d|| j | jd x(| j
| jgD ]}| j|| j | jd qW | j
d}xd)D ]}d| d}| j| j|dd| j| j | jd}|d dkr4|d nd} d | d!| d"| d#}| j|d$d}
| j |
| j|| j | jd% qW | jd&dd}
| j |
d'| j| j | jd( d S )*Nz"podman ps --filter name=rhui5-rhuaZrhui)runasZstatusr outputr z
rhui5-rhuaz%/var/lib/rhui/config/pulp/settings.pyz/etc/pulp/settings.pyz/etc/pki/pulp/*)r8 containerz/etc/pki/pulp/**/*.keyz.curl -ks https://localhost/pulp/api/v3/status/Zpulp_status)suggest_filenamer8 r: zen_US.UTF-8zpulpcore.app.settings)LC_ALLZ
PULP_SETTINGSZDJANGO_SETTINGS_MODULEz
dynaconf list)r3 r8 r: z task-days core_taskcore_taskgroupcore_groupprogressreportcore_progressreportz]COPY (SELECT STRING_AGG(column_name, ', ') FROM information_schema.columns WHERE table_name='zl'AND table_schema = 'public' AND column_name NOT IN ('args', 'kwargs', 'enc_args', 'enc_kwargs')) TO STDOUT;F)csv*zselect z from z, where pulp_last_updated> NOW() - interval 'z! days' order by pulp_last_updatedT)r3 r; r8 r: 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 DESCZpulpcore_db_tables_sizes)r; r3 r8 r: )r= r> r? r@ )r8 Zin_containerZexec_cmdr* lenr' r7 Z
add_copy_specZadd_forbidden_pathZadd_cmd_outputr0 r1 Zadd_dir_listingZ
get_optionbuild_query_cmdr3 )r4 Zrhui_podman_pslinesZdynaconf_envZ_dirZ task_daystableZ_queryZcol_outcolumnsZ_cmdr r r setupZ sZ
zPulpCore.setupFc C s2 |rd| d}d}|| j | j| j| jt|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
zCOPY (z6) TO STDOUT WITH (FORMAT 'csv', DELIMITER ';', HEADER)z0psql --no-password -h %s -p %s -U %s -d %s -c %s)r+ r, r. r- r )r4 ZqueryrA Z_dbcmdr r r rD s
zPulpCore.build_query_cmdc C s( d}d}| j d|| | jd|| d S )NzQ((SECRET_KEY|AUTH_LDAP_BIND_PASSWORD|password|PASSWORD)(\"|'|:|=|\s)+)([^\s'\"]+)z
\1********z/etc/pulp/settings.pyz
dynaconf list)Zdo_path_regex_subZdo_cmd_output_sub)r4 Zregreplr r r postproc s zPulpCore.postprocN)r )r )F)__name__
__module____qualname__Z
short_descZplugin_nameZcommandsfilesr Zoption_listr+ r, r- r. r/ r0 r1 r3 r' r7 rH rD rJ r r r r r s$ 5I
r N) rer Zshlexr Zsos.report.pluginsr r r r r r r r s