o
    id                     @   s*   d dl mZmZmZ G dd deeZdS )    )PluginRedHatPlugin	PluginOptc                   @   sL   e Zd Zd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 )	DNFPlugina  
    The DNF plugin collects information for the dnf package manager and how it
    is configured for local system.

    By default, this plugin will collect configuration files from /etc/dnf,
    repo files defined in /etc/yum.repos.d/, module information, and various
    'dnf list' commands.

    When using the 'history-info' option, detailed transaction information will
    be collected for the most recent 50 dnf transactions, and will be saved to
    the sos_commands/dnf/history-info directory.
    zdnf package managerdnf)systempackagemanagersysmgmt)/etc/dnf/dnf.conf)r   history-infoFz$collect detailed transaction history)defaultdescc                 C   sH   |sd S |  D ]}d|v r!| d }|dkr!| jd| dd qd S )Nz[i]r   zHint:zdnf module info dnf_module_infotags)
splitlinessplitadd_cmd_output)selfmoduleslinemodule r   8/usr/lib/python3/dist-packages/sos/report/plugins/dnf.pyget_modules_info(   s   
zDNFPlugin.get_modules_infoc              	   C   s  |  ddi | g d | jdg dd | dr"| d n| d	 | d
 | d | jddd | g d | jdddgd | jdddgd | d | ddg | g d | dsq| jddd nD| jddd}d}|d r|d  D ]}zt|dd 	 }W  n	 t
y   Y qw td t|d  d!D ]}| jd"| dd#d$ qd%}| |}| |d  d S )&Nz/etc/dnf/modules.d/.*.modulednf_modules)z	/etc/dnf/z/etc/yum.confz/etc/yum/pluginconf.d/z/etc/yum/vars/z/etc/yum.repos.d/)yum_repos_ddnf_repos_ddnf_repor   all_logsz/var/log/dnf.*z/var/log/dnf.log*z/var/log/dnf.librepo.log*z/var/log/dnf.rpm.log*zdnf module listdnf_module_list)zdnf --versionzdnf list extraszpackage-cleanup --dupeszpackage-cleanup --problemszdnf list installedyum_list_installeddnf_list_installedzdnf -C repolistyum_repolistdnf_repolistzdnf -C repolist --verbosez/etc/pki/entitlement/key.pemz/etc/pki/entitlement/*-key.pem)z/etc/pki/product/*.pemz/etc/pki/consumer/cert.pemz/etc/pki/entitlement/*.pemr   zdnf historydnf_historyoutput|r      2   zdnf history info %ddnf_history_info)subdirr   zdnf module list --installed)add_file_tagsadd_copy_spec
get_optionr   add_forbidden_pathcollect_cmd_outputr   intr   strip
ValueErrorrangeminr   )r   historytransactionsr   tr_id
module_cmdr   r   r   r   setup4   sd   







zDNFPlugin.setupc                 C   s2   d}d}dD ]	}|  ||| q| d|| d S )Nz(password(\s)*=(\s)*)(\S+)\nz\1********\n)z/etc/yum.repos.d/*z/etc/dnf/vars/*r
   )do_path_regex_subdo_file_sub)r   regexpreplfr   r   r   postproc~   s
   	zDNFPlugin.postprocN)__name__
__module____qualname____doc__
short_descplugin_nameprofilesfilespackagesr   option_listr   r;   rA   r   r   r   r   r      s    Jr   N)sos.report.pluginsr   r   r   r   r   r   r   r   <module>   s   
