o
    O6uf¦  ã                   @   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 platformÚpulp)zpulp-serverzpulp-katellozpython3-pulpcore)ú/etc/pulp/settings.pyÚtaskséÈ   z*number of tasks to collect from DB queries)ÚdefaultÚdescÚ	localhostÚ27017Ú c                 C   sú  d}d}zut dddd��}| ¡  ¡ }W d   ƒ n1 sw   Y  |D ]S}td|ƒrC| ¡ d  d	¡d
  d¡}|d
 | _|d | _td|ƒrRd| ¡ d › �| _td|ƒrad| ¡ d › �| _| 	d¡rhd}|rw| 	d¡rw| ¡ d }d}q$W n	 t
y‚   Y nw |  ddi¡ |  g d¢¡ |  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%|› d&�d'|› �d(� qà| jd)d*d� d S )+Nr   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_workersÚpulp_worker_defaults)z/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)Ú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)ÚopenÚreadÚ
splitlinesr   ÚsplitÚdbhostÚdbportÚdbuserÚ
dbpasswordÚ
startswithÚIOErrorÚadd_file_tagsÚadd_copy_specÚ
get_optionÚbuild_mongo_cmdÚadd_cmd_output)ÚselfÚmessaging_cert_fileÚin_messaging_sectionÚfileÚ
pulp_linesÚlineÚuriÚ	num_tasksÚmtasksÚmresÚprunÚcsizesÚdbstatsÚopt© r:   ú9/usr/lib/python3/dist-packages/sos/report/plugins/pulp.pyÚsetup!   sv   ÿ





€óþÿ

ÿ
ÿ
ÿÿ
ÿý
ý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,   ÚqueryÚ_cmdÚ_mondbÚ_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)Údo_path_regex_subÚdo_cmd_output_sub)r,   ÚetcregÚreplÚjregÚkey_pass_rer:   r:   r;   ÚpostprocŸ   s   ÿzPulp.postprocN)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚpackagesÚfilesr   Úoption_listr!   r"   r#   r$   r<   r*   rH   r:   r:   r:   r;   r      s     ÿÿvr   N)	Úrer   Úshlexr   Úsos.report.pluginsr   r   r   r   r:   r:   r:   r;   Ú<module>   s   
