Current File : //usr/lib/python3/dist-packages/uaclient/entitlements/__pycache__/realtime.cpython-312.pyc
�

��gn��z�ddlZddlmZmZmZmZmZddlmZm	Z	m
Z
mZmZddl
mZddlmZmZddlmZmZmZe	j,�Zej0ej2e��ZddiZGd	�d
ej:�ZGd�de�ZGd
�de�Z Gd�de�Z!Gd�de�Z"Gd�de�Z#y)�N)�Any�Dict�Optional�Tuple�Type)�apt�event_logger�messages�system�util)�repo)�EntitlementWithMessage�
UAEntitlement)�MessagingOperations�MessagingOperationsDict�StaticAffordance�GenuineIntel�intelc�.�eZdZdZej
ZejZejZ
ejjZ
dZdZdZdZdZdefd�Zdeeeeffd�Zed	��Zedeed
ffd��Zedeed
ffd��Z ede!fd
��Z"dd�Z#y)�RealtimeKernelEntitlementzrealtime-kernelzubuntu-pro-realtime-kernel.gpgTF�UbuntuRealtimeKernel�returnc��tjt|j�tdg���}tj|�|S)z%Check if system needs to be rebooted.zlinux-.*-realtime)�installed_pkgs�installed_pkgs_regex)r�
should_reboot�set�packages�event�needs_reboot)�self�reboot_requireds  �@/usr/lib/python3/dist-packages/uaclient/entitlements/realtime.py�_check_for_rebootz+RealtimeKernelEntitlement._check_for_reboots@�� �.�.��t�}�}�-�!$�&9�%:�!;�
��	���?�+���c��tjttjttjttjtiS�N)�GenericRealtime�variant_name�NvidiaTegraRealtime�RaspberryPiRealtime�IntelIotgRealtime�r!s r#�
_get_variantsz'RealtimeKernelEntitlement._get_variants(s;���(�(�/��,�,�.A��,�,�.A��*�*�,=�	
�	
r%c�(�|jrytSr')�access_onlyr(r-s r#�default_variantz)RealtimeKernelEntitlement.default_variant0s�������r%.c��ddlm}m}ddlm}t|tj�t|tj�t|tj�fS)Nr)�FIPSEntitlement�FIPSUpdatesEntitlement)�LivepatchEntitlement)
�uaclient.entitlements.fipsr3r4�uaclient.entitlements.livepatchr5rr
�REALTIME_FIPS_INCOMPATIBLE�"REALTIME_FIPS_UPDATES_INCOMPATIBLE�REALTIME_LIVEPATCH_INCOMPATIBLE)r!r3r4r5s    r#�incompatible_servicesz/RealtimeKernelEntitlement.incompatible_services6sW��	
�	I�
#���!D�!D�
�
#�&��;�;�
�
#�$�h�&N�&N�
�
�	
r%c�,�tjd�dffS)Nc�*�tj�Sr')r�is_container�r%r#�<lambda>z>RealtimeKernelEntitlement.static_affordances.<locals>.<lambda>Ps���+�+�-�r%F)r
�#REALTIME_ERROR_INSTALL_ON_CONTAINERr-s r#�static_affordancesz,RealtimeKernelEntitlement.static_affordancesKs"���<�<�-��
�
�	
r%c���d}|js$tjtjdd�fg}d}|j
s#tjdtjifg}||d�S)NT)�msg�defaultrD)�
pre_enable�pre_disable)r0r�prompt_for_confirmationr
�REALTIME_PROMPT�purge�REALTIME_PRE_DISABLE_PROMPT)r!rFrGs   r#�	messagingz#RealtimeKernelEntitlement.messagingUs����
�����0�0�'�7�7�#'����J����z�z��0�0��x�C�C����K�%�&�
�	
r%Nc��t|j�jttj���}|rHtj
t
|�tjj|j���yy)N)�title)rr�intersectionr�get_installed_packages_names�remove_packages�listr
�DISABLE_FAILED_TMPL�formatrN)r!rs  r#rQz)RealtimeKernelEntitlement.remove_packagesusf���t�}�}�%�2�2���0�0�2�3�
�������X���,�,�3�3�$�*�*�3�E�
�r%)rN)$�__name__�
__module__�__qualname__�namer
�REALTIME_TITLErN�REALTIME_DESCRIPTION�description�REALTIME_HELP_TEXT�	help_text�urls�REALTIME_HOME_PAGE�help_doc_url�
repo_key_file�apt_noninteractive�supports_access_only�supports_purge�origin�boolr$r�strrrr.�propertyr1rrr;rrBrrLrQr?r%r#rrs����D��#�#�E��/�/�K��+�+�I��=�=�3�3�L�4�M������N�
#�F��4��
�t�C��m�)<�$<�=�
�����
�
�u�-C�S�-H�'I�
��
�(�
�E�*:�C�*?�$@�
��
��
�	 �
��
�>r%rc�8��eZdZedeedff�fd��Z�xZS)�RealtimeVariantr.c
���t|jj�D��cgc]D\}}t|tj
j
|j|j�����Fc}}�}t�|�$|zScc}}w)N)�service�variant)
�tuple�other_variants�itemsrr
�REALTIME_VARIANT_INCOMPATIBLErTrN�superr;)r!rX�cls�incompatible_variants�	__class__s    �r#r;z%RealtimeVariant.incompatible_services�s���� %�"&�!4�!4�!:�!:�!<�
��D�#�
'���:�:�A�A� $�
�
�C�I�I�B���
�
!
���w�,�/D�D�D��
s�A	B
)rUrVrWrhrrr;�
__classcell__�rus@r#rjrj�s*���
�E�u�-C�S�-H�'I�E��Er%rjc�j��eZdZdZej
ZejZdZ	dZ
edef�fd��Z
�xZS)r(�genericTrc�R��t�|�}tj�j}|dk7rx|jd�xsg}tjj|j|jd|xsd��}|jtjd|if�||d<|S)NryrF�unknown)rmrl�base_flavor�current_flavorrD)rrrLr�get_kernel_info�flavor�getr
�#KERNEL_FLAVOR_CHANGE_WARNING_PROMPTrTr)rX�appendrrH)r!rLr}rFrDrus     �r#rLzGenericRealtime.messaging�s�����G�%�	��/�/�1�8�8���Y�&�"���|�4�:��J��>�>�E�E��)�)��	�	�%�-�:��	F��C�
����0�0��C�L��
�'1�I�l�#��r%)rUrVrWr)r
�REALTIME_GENERIC_TITLErN�REALTIME_GENERIC_DESCRIPTIONr[�
is_variant�check_packages_are_installedrhrrLrvrws@r#r(r(�sC����L��+�+�E��7�7�K��J�#'� �
��	 ���r%r(c�H�eZdZdZej
ZejZdZ	dZ
y)r*znvidia-tegraTN)rUrVrWr)r
�REALTIME_NVIDIA_TITLErN�REALTIME_NVIDIA_DESCRIPTIONr[r�r�r?r%r#r*r*�s(��!�L��*�*�E��6�6�K��J�#'� r%r*c�T�eZdZdZej
ZejZdZ	dZ
defd�Zy)r+�raspiTrc���d}	tj|�j�j�}d|vxsd|vS#t$r }t
j
d|�Yd}~yd}~wwxYw)Nz/proc/device-tree/modelzraspberry pi 4zraspberry pi 5z)Error while detecting if raspberry pi: %rF)r�	load_file�strip�lower�	Exception�LOG�info)r!�proc_file_path�model�es    r#�variant_auto_selectz'RaspberryPiRealtime.variant_auto_select�sf��2��	��$�$�^�4�:�:�<�B�B�D�E�#�u�,�I�0@�E�0I�I���	��H�H�@�!�D���	�s�:?�	A(�A#�#A(N)
rUrVrWr)r
�REALTIME_RASPI_TITLErN�REALTIME_RASPI_DESCRIPTIONr[r�r�rfr�r?r%r#r+r+�s4���L��)�)�E��5�5�K��J�#'� ��T�r%r+c��eZdZdZej
ZejZdZ	dZ
deee
fdeeeej"ffd�Zy)r,z
intel-iotgT�platform_checksrc��tj�jxsd}tj	||�}|j	dg�}||vrydt
jj|j|dj|���fS)N��cpu_vendor_ids)TNF�,)rN�vendor�supported_vendors)
r�get_cpu_info�cpuinfo_vendor_id�CPU_VENDOR_MAPr�r
�INAPPLICABLE_VENDOR_NAMErTrN�join)r!r��	vendor_idr�s    r#�verify_platform_checksz(IntelIotgRealtime.verify_platform_checks�s����'�'�)�;�;�A�r�	�"�&�&�y�)�<�	�(�,�,�-=�r�B����&���(�;�;�B�B��j�j� �"%�(�(�>�":�C���
r%N)rUrVrWr)r
�REALTIME_INTEL_TITLErN�REALTIME_INTEL_DESCRIPTIONr[r�r�rrgrrrfr�NamedMessager�r?r%r#r,r,�sZ���L��)�)�E��5�5�K��J�#'� �
�#�C��H�~�
�	�t�X�h�3�3�4�4�	5�
r%r,)$�logging�typingrrrrr�uaclientrr	r
rr�uaclient.entitlementsr
�uaclient.entitlements.baserr�uaclient.typesrrr�get_event_loggerr�	getLogger�replace_top_level_logger_namerUr�r��RepoEntitlementrrjr(r*r+r,r?r%r#�<module>r�s����3�3�>�>�&�L���	&��%�%�'���g���:��:�:�8�D�E�� �'�*��j�� 4� 4�j�ZE�/�E�"�o��>(�/�(��/��"��r%