o
    =Wb
                     @   sj   d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	 d dl
mZmZ e ZdZG dd dejZd	S )
    )Tuple)event_loggermessagesutil)repo)IncompatibleService)MessagingOperationsDictStaticAffordancez"https://ubuntu.com/realtime-kernelc                   @   s|   e Zd ZdZdZdZeZdZdZ	dZ
defddZedeed	f fd
dZedeed	f fddZedefddZdS )RealtimeKernelEntitlementzrealtime-kernelzReal-Time Kernelz2Beta-version Ubuntu Kernel with PREEMPT_RT patchesz$ubuntu-advantage-realtime-kernel.gpgTreturnc                 C   s(   t jt| jtdgd}t| |S )z%Check if system needs to be rebooted.zlinux-.*-realtime)Zinstalled_pkgsZinstalled_pkgs_regex)r   Zshould_rebootsetZpackageseventZneeds_reboot)selfZreboot_required r   @/usr/lib/python3/dist-packages/uaclient/entitlements/realtime.py_check_for_reboot   s   
z+RealtimeKernelEntitlement._check_for_reboot.c                 C   s>   ddl m}m} ddlm} t|tjt|tjt|tj	fS )Nr   )FIPSEntitlementFIPSUpdatesEntitlement)LivepatchEntitlement)
Zuaclient.entitlements.fipsr   r   Zuaclient.entitlements.livepatchr   r   r   ZREALTIME_FIPS_INCOMPATIBLEZ"REALTIME_FIPS_UPDATES_INCOMPATIBLEZREALTIME_LIVEPATCH_INCOMPATIBLE)r   r   r   r   r   r   r   incompatible_services   s   z/RealtimeKernelEntitlement.incompatible_servicesc                 C   s   t jdd dffS )Nc                   S   s   t  S )N)r   Zis_containerr   r   r   r   <lambda>9   s    z>RealtimeKernelEntitlement.static_affordances.<locals>.<lambda>F)r   Z#REALTIME_ERROR_INSTALL_ON_CONTAINERr   r   r   r   static_affordances4   s
   z,RealtimeKernelEntitlement.static_affordancesc                 C   s0   t jtj| jddfgt jtj| jdfgdS )NT)msg
assume_yesdefault)r   r   )Z
pre_enableZpre_disable)r   Zprompt_for_confirmationr   ZREALTIME_BETA_PROMPTr   ZREALTIME_PRE_DISABLE_PROMPTr   r   r   r   	messaging>   s   z#RealtimeKernelEntitlement.messagingN)__name__
__module____qualname__nametitledescriptionREALTIME_KERNEL_DOCS_URLZhelp_doc_urlZrepo_key_fileZis_betaZapt_noninteractiveboolr   propertyr   r   r   r	   r   r   r   r   r   r   r   r
      s    		r
   N)typingr   Zuaclientr   r   r   Zuaclient.entitlementsr   Zuaclient.entitlements.baser   Zuaclient.typesr   r	   Zget_event_loggerr   r#   ZRepoEntitlementr
   r   r   r   r   <module>   s    