o
    idZ                     @   sB   d dl mZmZmZ d dlmZ d dlmZ G dd deeZdS )    )PluginRedHatPlugin	PluginOpt)quote)matchc                   @   sD   e Zd ZdZdZdZdZeddddgZd	d
 Z	dd Z
dd ZdS )PulpzPulp platformpulp)zpulp-serverzpulp-katellozpython3-pulpcore)/etc/pulp/settings.pytasks   z*number of tasks to collect from DB queries)defaultdescc                 C   s  d| _ d| _d| _d| _d| _d}z]td  D ]R}td|r9|	 d 	dd	 	d
}|d	 | _ |d | _td|rGd|	 d  | _td|rUd|	 d  | _|
dr\d}|rl|
drl|	 d | _d}qW n	 tyw   Y nw | ddi | g d | d}| d| }| d| }| d| }| d}| d}	| j|dd | j|dd | j|dd | j|dd | j|	d d d!D ]}
| jd"|
 d#| j d$d%|
 d& q| jd'd(d d S ))N	localhost27017 Fz/etc/pulp/server.confz^\s*seeds:\s+\S+:\S+   ,r   :z\s*username:\s+\S+z-u %sz\s*password:\s+\S+z-p %sz[messaging]Tz	certfile:z/etc/default/pulp_workerspulp_worker_defaults)
z/etc/pulp/*.confr	   z /etc/pulp/server/plugins.conf.d/z/etc/default/pulp*z/var/log/httpd/pulp-http.log*z/var/log/httpd/pulp-https.log*z(/var/log/httpd/pulp-http_access_ssl.log*z)/var/log/httpd/pulp-https_access_ssl.log*z'/var/log/httpd/pulp-http_error_ssl.log*z(/var/log/httpd/pulp-https_error_ssl.log*r
   za"DBQuery.shellBatchSize=%s;; db.task_status.find().sort({finish_time: -1}).pretty().shellPrint()"zP"DBQuery.shellBatchSize=%s;; db.reserved_resources.find().pretty().shellPrint()"ze"DBQuery.shellBatchSize=%s;; db.task_status.find({state:{\$ne: \"finished\"}}).pretty().shellPrint()"a  "function humanReadable(bytes) {  var i = -1;  var byteUnits = ['kB', 'MB', 'GB', 'TB', 'PB',                    'EB', 'ZB', 'YB'];  do {      bytes = bytes / 1024;      i++;  } while (bytes > 1024);  return Math.max(bytes, 0.1).toFixed(1) + ' ' + byteUnits[i];};var collectionNames = db.getCollectionNames(), stats = [];collectionNames.forEach(function (n) {                          stats.push(db[n].stats());                        });stats = stats.sort(function(a, b) {                     return b['size'] - a['size']; });for (var c in stats) {  print(stats[c]['ns'] + ': ' +        humanReadable(stats[c]['size']) + ' (' +        humanReadable(stats[c]['storageSize']) + ')'); }"z"db.stats()"zmongo-task_status)suggest_filenamezmongo-reserved_resourceszpulp-running_taskszmongo-collection_sizeszmongo-db_statsquczqpid-stat -z --ssl-certificate=z -b amqps://localhost:5671
qpid_stat_)tagszosudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' dynaconf listdynaconf_list)dbhostdbportdbuser
dbpasswordmessaging_cert_fileopenread
splitlinesr   split
startswithIOErroradd_file_tagsadd_copy_spec
get_optionbuild_mongo_cmdadd_cmd_output)selfin_messaging_sectionlineuri	num_tasksmtasksmrespruncsizesdbstatsopt r5   9/usr/lib/python3/dist-packages/sos/report/plugins/pulp.pysetup   s   








z
Pulp.setupc                 C   s4   d}d| j | j| j| jf }d}|t|||f  S )Nz
bash -c %sz--host %s --port %s %s %sz mongo pulp_database %s --eval %s)r   r   r   r   r   )r*   query_cmd_mondb_moncmdr5   r5   r6   r(      s   
zPulp.build_mongo_cmdc                 C   sT   d}d}|  d|| d}d}|  d|| d}d}|  d|| | d	|| d S )
Nz0(([a-z].*(passw|token|cred|secret).*)\:(\s))(.*)z\1 ********z/etc/pulp/(.*)\.conf$z7(\s*\".*(passw|cred|token|secret).*\"\s*:(\s))(.*)(\w+)z
\1********z/etc/pulp(.*)(.json$)z5(SECRET_KEY\s*=|(password|PASSWORD)(\"|'|:)+)\s*(\S*)r	   zdynaconf list)do_path_regex_subdo_cmd_output_sub)r*   etcregrepljregkey_pass_rer5   r5   r6   postproc   s   zPulp.postprocN)__name__
__module____qualname__
short_descplugin_namepackagesfilesr   option_listr7   r(   rB   r5   r5   r5   r6   r      s    wr   N)	sos.report.pluginsr   r   r   pipesr   rer   r   r5   r5   r5   r6   <module>   s   
