U
    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 platformZpulp)zpulp-serverzpulp-katellozpython3-pulpcore)/etc/pulp/settings.pytasks   z*number of tasks to collect from DB queries)defaultZdescc                 C   s  d| _ d| _d| _d| _d| _d}ztd  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g
 | 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d0d1d% d S )2NZ	localhostZ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_workersZpulp_worker_defaultsz/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)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)dbhostdbportdbuser
dbpasswordZmessaging_cert_fileopenread
splitlinesr   split
startswithIOErrorZadd_file_tagsZadd_copy_specZ
get_optionbuild_mongo_cmdZadd_cmd_output)selfZin_messaging_section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   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   ZqueryZ_cmdZ_mondbZ_moncmdr   r   r   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)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      s   wr   N)	Zsos.report.pluginsr   r   r   Zpipesr   rer   r   r   r   r   r   <module>   s   