U
    -_g                     @   sB   d dl mZ d dlmZ d dlmZmZmZ G dd deeZdS )    )match)quote)PluginRedHatPlugin	PluginOptc                   @   sT   e Zd ZdZdZdZdZeddddgZd	Z	d
Z
dZdZdd Zdd Zdd ZdS )PulpzPulp platformZpulp)zpulp-serverzpulp-katellozpython3-pulpcore)/etc/pulp/settings.pytasks   z*number of tasks to collect from DB queries)defaultZdescZ	localhostZ27017 c                 C   s  d}d}zt dddd}|  }W 5 Q R X |D ]}td|rr| d d	d
 d}|d
 | _|d | _td|rd| d  | _td|rd| d  | _|	drd}|r4|	dr4| d }d}q4W n t
k
r   Y nX | ddi | dddddddddddg | d }| d!| 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/| d0d1| d2 q| jd3d4d( d S )5Nr   Fz/etc/pulp/server.confrzUTF-8)encodingz^\s*seeds:\s+\S+:\S+   ,r   :z\s*username:\s+\S+z-u z\s*password:\s+\S+z-p z[messaging]Tz	certfile:z/etc/default/pulp_workersZpulp_worker_defaultsz/etc/pulp/*.confr   /etc/pulp/settings.local.pyz /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	   z"DBQuery.shellBatchSize=zG;; db.task_status.find().sort({finish_time: -1}).pretty().shellPrint()"z6;; db.reserved_resources.find().pretty().shellPrint()"zK;; 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)Zsuggest_filenamezmongo-reserved_resourceszpulp-running_taskszmongo-collection_sizeszmongo-db_statsZquczqpid-stat -z --ssl-certificate=z -b amqps://localhost:5671Z
qpid_stat_)Ztagszosudo -u pulp PULP_SETTINGS='/etc/pulp/settings.py' DJANGO_SETTINGS_MODULE='pulpcore.app.settings' dynaconf listZdynaconf_list)openread
splitlinesr   splitdbhostdbportdbuser
dbpassword
startswithIOErrorZadd_file_tagsZadd_copy_specZ
get_optionbuild_mongo_cmdZadd_cmd_output)selfZmessaging_cert_fileZin_messaging_sectionfileZ
pulp_lineslineZuriZ	num_tasksZmtasksZmresZprunZcsizesZdbstatsZopt r!   9/usr/lib/python3/dist-packages/sos/report/plugins/pulp.pysetup!   s    






 





z
Pulp.setupc                 C   s@   d}d| j  d| j d| j d| j }d}|t|||f  S )z Build mongoDB command z
bash -c %sz--host z --port  z mongo pulp_database %s --eval %s)r   r   r   r   r   )r   ZqueryZ_cmdZ_mondbZ_moncmdr!   r!   r"   r      s    $zPulp.build_mongo_cmdc                 C   sb   d}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$)z_((?:SECRET_KEY|AUTH_LDAP_BIND_PASSWORD)(?:\<.+\>)?(\s*=)?|(password|PASSWORD)(\"|'|:)+)\s*(\S*)r   r   zdynaconf list)Zdo_path_regex_subZdo_cmd_output_sub)r   ZetcregreplZjregZkey_pass_rer!   r!   r"   postproc   s    zPulp.postprocN)__name__
__module____qualname__Z
short_descZplugin_nameZpackagesfilesr   Zoption_listr   r   r   r   r#   r   r&   r!   r!   r!   r"   r      s   vr   N)	rer   Zshlexr   Zsos.report.pluginsr   r   r   r   r!   r!   r!   r"   <module>   s   