HEX
Server: Apache
System: Linux server2.voipitup.com.au 4.18.0-553.104.1.lve.el8.x86_64 #1 SMP Tue Feb 10 20:07:30 UTC 2026 x86_64
User: posscale (1027)
PHP: 8.2.29
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //proc/self/root/lib/python3.6/site-packages/dnf-plugins/__pycache__/kpatch.cpython-36.pyc
3

�=vh�2�@s�dZddlmZddlmZddlZddlZddlZddlm	Z	m
Z
ddlZddlZddl
ZddlZddlZddlZdZdZdZd	Zd
d�Zdd
�Zdd�ZGdd�dejj�ZGdd�dej�ZdS)z�
The DNF plugin helps customers to install kpatch-patch packages
when the kernel is upgraded and filter kernel-core packages that
are supported by the kpatch team.
�)�absolute_import)�unicode_literalsN)�_�logger�kpatchZ
autoupdateZ
autofilterzkernel-corecCs2dd�|jD�}x|D]}tjj|�r|SqWdS)NcSsg|]}d|tf�qS)z
%s/%s.conf)�KPATCH_PLUGIN_NAME)�.0�path�r
�/usr/lib/python3.6/kpatch.py�
<listcomp>5sz(_get_plugin_cfg_file.<locals>.<listcomp>)Zpluginconfpath�osr	�isfile)Z	base_conf�files�filer
r
r�_get_plugin_cfg_file4s

rcCs:tjd|j�jd�}|jdd�}|jjdd�}dj||�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_pkg<srcCsVt|�}|jj�j||jd�}tjj|j�}|j|j	�d�|j
j||jj
d�dS)N)�name�arch)�pkg)ZselectZoptional)r�sack�query�filterr�dnfZselectorZSelector�set�latestZgoal�install�conf�strict)Zdnf_baser�kpp_pkg_name�kpp_pkgs_queryZkpp_sltrr
r
r�_install_kpp_pkgCs
r+csheZdZdZdZed�Z�fdd�Zedd��Z	dd	�Z
d
d�Zdd
�Zdd�Z
dd�Zdd�Z�ZS)�	KpatchCmdz* Extend DNF with kpatch specific commands rz7Toggles automatic installation of kpatch-patch packagescst�j|�t|jj�|_dS)N)�super�__init__r�baser'�cfg_file)�self�cli)�	__class__r
rr.SszKpatchCmd.__init__cCs|jddd�dS)z'
        argparse python class
        �actionzJauto-update|manual-update|auto-filter|no-filter|install|status|auto|manual)�metavarN)�add_argument)�parserr
r
r�
set_argparserXszKpatchCmd.set_argparsercCsD|jj}d|_|jjdkr.d|_d|_d|_nd|_d|_d|_dS)	zr
        configure DemandSheet
        Collection of demands that different CLI parts have on other parts
        T�auto-updater&�status�autoFN)r9r&r:r;)r2�demandsZ	root_user�optsr4Z	resolvingZsack_activationZavailable_repos)r1r<r
r
r�	configuredszKpatchCmd.configurec	Cs�g}|jjj�j�jtd�}x�|D]�}t|�}|jjj�j�j|d�j�}|r�|jjj�j||dj|dj	d�}|jjj�j||j
d�j�j|�}n|jjj�j||j
d�j�}x|D]}|j
t|��q�Wq"W|S)N)rr)rrr)rr)r/r r!�	installedr"�KERNEL_PKG_NAMEr�runrrrr%�
difference�append�str)	r1�kpps�installed_kernelsrr)r?Zsub_qr*rr
r
r�_list_missing_kpp_pkgsvs(

z KpatchCmd._list_missing_kpp_pkgscCs6|jjj�j�jtd�}x|D]}t|j|�qWdS)N)r)r/r r!r?r"r@r+)r1rFrr
r
r�_install_missing_kpp_pkgs�s
z#KpatchCmd._install_missing_kpp_pkgscCsr|jdkrtjd�dSytj�}|j|j�|Stk
rl}z tjj	t
d�jt|����WYdd}~XnXdS)Nz Couldn't find configuration filezParsing file failed: {})
r0r�warning�configparserZConfigParser�read�	Exceptionr#�
exceptions�ErrorrrrD)r1r7�er
r
r�
_read_conf�s

zKpatchCmd._read_confcCs�|jdkrtjd�dS|j�}|dkr,dS|jd�s@|jd�|jd|t|��y*t|jddd��}|j	|�WdQRXWn<t
k
r�}z tjj
td�jt|����WYdd}~XnXdS)Nz Couldn't find configuration file�main�wzutf-8)�encodingzFailed to update conf file: {})r0rrIrP�has_sectionZadd_sectionr$rD�open�writerLr#rMrNrr)r1Zoption�valuer'Z
cfg_streamrOr
r
r�_update_plugin_cfg�s



zKpatchCmd._update_plugin_cfgcCs�|jj}|dkr<|j�|jtd�tjtd�j|���n�|dkrh|jtd�tjtd�j|���nZ|dkr�|jt	d�tjtd	�j|���n.|d
kr�|jt	d�tjtd	�j|���n|dk�r�|j
�}d}|dk	�r|jd
��r|jd
t��r|j
d
t��rd}tjtd�j|��d
}|dk	�rZ|jd
��rZ|jd
t	��rZ|j
d
t	��rZd}tjtd	�j|��|j�}|�r�tjtd�jdj|���n*|dk�r�|j�ntjjtd�j|���dS)z:
        Decision tree, execution based on config
        �auto-updater;TzKpatch update setting: {}�
manual-update�manualFzauto-filterzKpatch filter setting: {}z	no-filterr:NrQzAvailable patches: {}z, r&zInvalid argument: {})rYr;)rZr[)r=r4rHrX�KPATCH_UPDATE_OPTr�inforr�KPATCH_FILTER_OPTrPrT�
has_option�
getbooleanrG�joinr#rMrN)r1r4r'Z	kp_statusrEr
r
rrA�sD


z
KpatchCmd.run)r)�__name__�
__module__�__qualname__�__doc__�aliasesrZsummaryr.�staticmethodr8r>rGrHrPrXrA�
__classcell__r
r
)r3rr,Lsr,csZeZdZdZeZdddddgZddgZ�fdd	�Zd
d�Z	dd
�Z
dd�Zdd�Z�Z
S)�KpatchPluginz�
    The DNF plugin helps customers to install kpatch-patch packages
    when the kernel is upgraded and filter kernel-core packages that
    are supported by the kpatch team.
    Zkernelzkernel-corezkernel-moduleszkernel-modules-corezkernel-modules-extrazkernel-uname-rcs6t�j||�d|_d|_d|_|dk	r2|jt�dS)NF)r-r.�
_commiting�_autoupdate�_autofilterZregister_commandr,)r1r/r2)r3r
rr.�szKpatchPlugin.__init__cCs�|j|jj�}yL|jd�o0|jdt�o0|jdt�|_|jd�oT|jdt�oT|jdt�|_	Wn:t
k
r�}ztjt
d�jt|���WYdd}~XnXdS)NrQzParsing file failed: {})Zread_configr/r'rTr_r\r`rkr^rlrLrrIrrrD)r1r7rOr
r
r�configs

zKpatchPlugin.configcCs"d|_|jj|jjj�d|_dS)NTF)rjr/Zresolver2r<Z
allow_erasing)r1r
r
r�_commit_changesszKpatchPlugin._commit_changesc
Cs|js
dStd�|jjj�jdd�}|jjjtjd�}|j|jd�|j	�}|jjjtjd�}|jdd�x�|D]�}xz|j
D]p}t|�jd�}t
|�d	kr�q~|d
|jkr~|j|d�}d}x|D]}	|	j}Pq�W|dk	r�|j|j|d��}Pq~WqrW|jjj|j|��dS)
NzOPlease note, kpatch filter is enabled, only kpatch supported kernels are shown.T)�empty)�flags)rzkpatch-patch-*)Z
name__glob� �r)Zprovides)�evr)rl�printr/r r!Zfilterm�hawkeyZIGNORE_EXCLUDES�kernel_pkg_namesZ	availableZrequiresrD�split�len�kpatch_requirementr"rs�unionZadd_excludesrB)
r1Zkernels_keepZ
kernels_queryZkpatch_queryZ
kpatch_pkgZrequireZrequire_parsedZkernel_coreZ
kernel_evrZkernel_core_pkgr
r
rr s0


zKpatchPlugin.sackcs�|js|jrdSg}g�xT|jjD]H}|jtjjkr$|jjt	krP|j
|j�q$|jjjd�r$�j
|jj�q$W�fdd�|D�}x|D]}t|j|�q�W|r�|j
�dS)Nz
kpatch-patch-csg|]}t|��kr|�qSr
)r)rr)�explicit_kpp_installr
rrVsz)KpatchPlugin.resolved.<locals>.<listcomp>)rkrjr/Ztransactionr4r#ZFORWARD_ACTIONSrrr@rC�
startswithr+rn)r1Zneed_kpp_forZtr_itemrr
)r{r�resolvedCs
zKpatchPlugin.resolved)rbrcrdrerrrvryr.rmrnr r}rhr
r
)r3rri�s	
*ri)reZ
__future__rrrJZos.pathr
rZdnfpluginscorerrr#Zdnf.callbackZdnf.cliZdnf.exceptionsZdnf.transactionrurr\r^r@rrr+r2ZCommandr,ZPluginrir
r
r
r�<module>s,	#