HEX
Server: Apache
System: Linux insrv.serversdaddy.com 5.14.0-362.24.2.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Sat Mar 30 14:11:54 EDT 2024 x86_64
User: jsaha (1066)
PHP: 8.3.6
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //lib/python3.9/site-packages/dnf-plugins/__pycache__/kpatch.cpython-39.pyc
a

��-d~ �@s�ddlmZddlmZddlZddlZddlZddlmZm	Z	ddl
ZddlZddl
ZddlZdZdZdZdd	�Zd
d�Zdd
�ZGdd�dejj�ZGdd�dej�ZdS)�)�absolute_import)�unicode_literalsN)�_�logger�kpatchZ
autoupdatezkernel-corecCs2dd�|jD�}|D]}tj�|�r|SqdS)NcSsg|]}d|tf�qS)z
%s/%s.conf)�KPATCH_PLUGIN_NAME)�.0�path�r
�6/usr/lib/python3.9/site-packages/dnf-plugins/kpatch.py�
<listcomp>+�z(_get_plugin_cfg_file.<locals>.<listcomp>)Zpluginconfpath�osr	�isfile)Z	base_conf�files�filer
r
r�_get_plugin_cfg_file*s

rcCs:t�d|j��d�}|�dd�}|j�dd�}d�||�S)Nz
(.*)\.el.*��.rzkpatch-patch-{}-{})�re�match�release�group�replace�version�format)�
kernel_pkgZkernel_releaseZkpp_kernel_releaseZkpp_kernel_versionr
r
r�_kpp_name_from_kernel_pkg2srcCsVt|�}|j��j||jd�}tj�|j�}|j|�	�d�|j
j||jj
d�dS)N��name�arch)�pkg)ZselectZoptional)r�sack�query�filterr �dnf�selectorZSelector�set�latestZgoal�install�conf�strict)Zdnf_baser�kpp_pkg_name�kpp_pkgs_queryZkpp_sltrr
r
r�_install_kpp_pkg9s�r.csdeZdZdZed�Z�fdd�Zedd��Zdd�Z	d	d
�Z
dd�Zd
d�Zdd�Z
dd�Z�ZS)�	KpatchCmd)rz7Toggles automatic installation of kpatch-patch packagescs"tt|��|�t|jj�|_dS)N)�superr/�__init__r�baser*�cfg_file)�self�cli��	__class__r
rr1HszKpatchCmd.__init__cCs|jddd�dS)N�actionzauto|manual|install|status)�metavar)�add_argument)�parserr
r
r�
set_argparserMszKpatchCmd.set_argparsercCsD|jj}d|_|jjdvr.d|_d|_d|_nd|_d|_d|_dS)NT)�autor)�statusF)r5�demandsZ	root_user�optsr8Z	resolvingZsack_activationZavailable_repos)r4r?r
r
r�	configureRszKpatchCmd.configurec	Cs�g}|jj����jtd�}|D]�}t|�}|jj����j|d���}|r�|jj��j||dj|dj	d�}|jj��j||j
d����|�}n|jj��j||j
d���}|D]}|�
t|��q�q |S)N�rr)rrrr)r2r"r#�	installedr$�KERNEL_PKG_NAMEr�runrrr r(�
difference�append�str)	r4�kpps�installed_kernelsrr,rCZsub_qr-r!r
r
r�_list_missing_kpp_pkgs`s$$z KpatchCmd._list_missing_kpp_pkgscCs2|jj����jtd�}|D]}t|j|�qdS)NrB)r2r"r#rCr$rDr.)r4rJrr
r
r�_install_missing_kpp_pkgstsz#KpatchCmd._install_missing_kpp_pkgsc
Csv|jdurt�d�dSzt��}|�|j�|WStyp}z&tj�	t
d��t|����WYd}~n
d}~00dS)N� Couldn't find configuration file�Parsing file failed: {})
r3r�warning�configparserZConfigParser�read�	Exceptionr%�
exceptions�ErrorrrrH�r4r;�er
r
r�
_read_conf{s

zKpatchCmd._read_confc
Cs�|jdurt�d�dS|��}|dur,dS|�d�s@|�d�|�dtt|��z:t	|jd��}|�
|�Wd�n1s�0YWn>ty�}z&tj
�td��t|����WYd}~n
d}~00dS)NrM�main�wzFailed to update conf file: {})r3rrOrW�has_sectionZadd_sectionr'�KPATCH_UPDATE_OPTrH�open�writerRr%rSrTrr)r4�valuer*Z
cfg_streamrVr
r
r�_update_plugin_cfg�s



,zKpatchCmd._update_plugin_cfgcCs�|jj}|dkr$|��|�d�n�|dkr8|�d�n�|dkr�|��}d}|durz|�d�rz|�dt�rz|�dt�rzd}t	�
td��|��|�
�}|r�t	�
td��d	�|���n(|d
kr�|��ntj�td��|���dS)Nr=TZmanualFr>rXzKpatch update setting: {}zAvailable patches: {}z, r)zInvalid argument: {})r@r8rLr_rWrZ�
has_optionr[�
getbooleanr�inforrrK�joinr%rSrT)r4r8r*Z	kp_statusrIr
r
rrE�s,
�
�
z
KpatchCmd.run)�__name__�
__module__�__qualname__�aliasesrZsummaryr1�staticmethodr<rArKrLrWr_rE�
__classcell__r
r
r6rr/Bs
r/cs8eZdZeZ�fdd�Zdd�Zdd�Zdd�Z�Z	S)	�KpatchPlugincs4tt|��||�d|_d|_|dur0|�t�dS)NF)r0rjr1�
_commiting�_autoupdateZregister_commandr/)r4r2r5r6r
rr1�s
zKpatchPlugin.__init__c
Csx|�|jj�}z(|�d�o0|�dt�o0|�dt�|_Wn<tyr}z$t	�
td��t
|���WYd}~n
d}~00dS)NrXrN)Zread_configr2r*rZr`r[rarlrRrrOrrrHrUr
r
r�config�s

�
�zKpatchPlugin.configcCs"d|_|j�|jjj�d|_dS)NTF)rkr2�resolver5r?Z
allow_erasing)r4r
r
r�_commit_changes�szKpatchPlugin._commit_changescs�|jr|jrdSg}g�|jjD]H}|jtjjvr |jjt	krL|�
|j�q |jj�d�r ��
|jj�q �fdd�|D�}|D]}t|j|�q�|r�|�
�dS)Nz
kpatch-patch-csg|]}t|��vr|�qSr
)r)rr!�Zexplicit_kpp_installr
rr�s�z)KpatchPlugin.resolved.<locals>.<listcomp>)rlrkr2Ztransactionr8r%ZFORWARD_ACTIONSr!rrDrG�
startswithr.ro)r4Zneed_kpp_forZtr_itemrr
rpr�resolved�szKpatchPlugin.resolved)
rdrerfrrr1rmrorrrir
r
r6rrj�s

rj)Z
__future__rrrPZos.pathrrZdnfpluginscorerrZdnf.callbackr%Zdnf.cliZdnf.exceptionsZdnf.transactionrr[rDrrr.r5ZCommandr/ZPluginrjr
r
r
r�<module>s"	u