Ë
    GKÕin  ã                   óz  — d dl Z d dlmZmZmZmZmZ d dlmZm	Z	m
Z
mZmZ d dlmZ d dlmZmZ d dlmZmZmZ  e	j,                  «       Z e j0                   ej2                  e«      «      ZddiZ G d	„ d
ej:                  «      Z G d„ de«      Z G d„ de«      Z  G d„ de«      Z! G d„ de«      Z" G d„ de«      Z#y)é    N)ÚAnyÚDictÚOptionalÚTupleÚType)ÚaptÚevent_loggerÚmessagesÚsystemÚutil)Úrepo)ÚEntitlementWithMessageÚUAEntitlement)ÚMessagingOperationsÚMessagingOperationsDictÚStaticAffordanceÚGenuineIntelÚintelc                   ó.  — e Zd ZdZej
                  Zej                  Zej                  Z
ej                  j                  ZdZdZdZdZdZdefd„Zdeeee   f   fd„Zed	„ «       Zedeed
f   fd„«       Zedeed
f   fd„«       Z ede!fd„«       Z"dd„Z#y)ÚRealtimeKernelEntitlementzrealtime-kernelzubuntu-pro-realtime-kernel.gpgTFÚUbuntuRealtimeKernelÚreturnc                 ó˜   — t        j                  t        | j                  «      t        dg«      ¬«      }t        j                  |«       |S )z%Check if system needs to be rebooted.zlinux-.*-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_reboot   s@   € ä ×.Ñ.Ü˜tŸ}™}Ó-Ü!$Ð&9Ð%:Ó!;ô
ˆô 	×Ñ˜?Ô+ØÐó    c                 ó¦   — t         j                  t         t        j                  t        t        j                  t        t        j                  t        iS ©N)ÚGenericRealtimeÚvariant_nameÚNvidiaTegraRealtimeÚRaspberryPiRealtimeÚIntelIotgRealtime©r!   s    r#   Ú_get_variantsz'RealtimeKernelEntitlement._get_variants(   s;   € ä×(Ñ(¬/Ü×,Ñ,Ô.AÜ×,Ñ,Ô.AÜ×*Ñ*Ô,=ð	
ð 	
r%   c                 ó(   — | j                   ry t        S r'   )Úaccess_onlyr(   r-   s    r#   Údefault_variantz)RealtimeKernelEntitlement.default_variant0   s   € à×ÒØÜÐr%   .c                 ó¸   — ddl m}m} ddlm} t        |t        j                  «      t        |t        j                  «      t        |t        j                  «      fS )Nr   )ÚFIPSEntitlementÚFIPSUpdatesEntitlement)ÚLivepatchEntitlement)
Úuaclient.entitlements.fipsr3   r4   Úuaclient.entitlements.livepatchr5   r   r
   ÚREALTIME_FIPS_INCOMPATIBLEÚ"REALTIME_FIPS_UPDATES_INCOMPATIBLEÚREALTIME_LIVEPATCH_INCOMPATIBLE)r!   r3   r4   r5   s       r#   Úincompatible_servicesz/RealtimeKernelEntitlement.incompatible_services6   sW   € ÷	
õ 	Iô #Ø¤×!DÑ!Dóô #Ø&Ü×;Ñ;óô #Ø$¤h×&NÑ&Nóð
ð 	
r%   c                 ó,   — t         j                  d„ dffS )Nc                  ó*   — t        j                  «       S r'   )r   Úis_container© r%   r#   ú<lambda>z>RealtimeKernelEntitlement.static_affordances.<locals>.<lambda>P   s   € œ×+Ñ+Ó-€ r%   F)r
   Ú#REALTIME_ERROR_INSTALL_ON_CONTAINERr-   s    r#   Ústatic_affordancesz,RealtimeKernelEntitlement.static_affordancesK   s"   € ô ×<Ñ<Ù-Øðð
ð 	
r%   c                 óÒ   — d }| j                   s$t        j                  t        j                  ddœfg}d }| j
                  s#t        j                  dt        j                  ifg}||dœS )NT)ÚmsgÚdefaultrD   )Ú
pre_enableÚpre_disable)r0   r   Úprompt_for_confirmationr
   ÚREALTIME_PROMPTÚpurgeÚREALTIME_PRE_DISABLE_PROMPT)r!   rF   rG   s      r#   Ú	messagingz#RealtimeKernelEntitlement.messagingU   s�   € ð ˆ
Ø×Òô ×0Ñ0ä'×7Ñ7Ø#'ñððˆJð ˆØ�zŠzô ×0Ñ0àœx×CÑCðððˆKð %Ø&ñ
ð 	
r%   Nc                 ó  — t        | j                  «      j                  t        t        j                  «       «      «      }|rHt        j
                  t        |«      t        j                  j                  | j                  ¬«      «       y y )N)Útitle)r   r   Úintersectionr   Úget_installed_packages_namesÚremove_packagesÚlistr
   ÚDISABLE_FAILED_TMPLÚformatrN   )r!   r   s     r#   rQ   z)RealtimeKernelEntitlement.remove_packagesu   sf   € Ü�t—}‘}Ó%×2Ñ2Ü”×0Ñ0Ó2Ó3ó
ˆñ Ü×ÑÜ�X“Ü×,Ñ,×3Ñ3¸$¿*¹*Ð3ÓEõð r%   )r   N)$Ú__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   Ústrr   r   r.   Úpropertyr1   r   r   r;   r   rB   r   rL   rQ   r?   r%   r#   r   r      sú   „ Ø€DØ×#Ñ#€EØ×/Ñ/€KØ×+Ñ+€IØ—=‘=×3Ñ3€LØ4€MØÐØÐØ€NØ#€Fð 4ó ð
˜t C¨¨mÑ)<Ð$<Ñ=ó 
ð ñó ðð
 ð
 uÐ-CÀSÐ-HÑ'Iò 
ó ð
ð( ð
 EÐ*:¸CÐ*?Ñ$@ò 
ó ð
ð ð
à	 ò
ó ð
ô>r%   r   c                   ó8   ‡ — e Zd Zedeedf   fˆ fd„«       Zˆ xZS )ÚRealtimeVariantr   .c                 ó  •— t        | j                  j                  «       D ��cg c]D  \  }}t        |t        j
                  j                  | j                  |j                  ¬«      «      ‘ŒF c}}«      }t        ‰| �$  |z   S c c}}w )N)ÚserviceÚvariant)
ÚtupleÚother_variantsÚitemsr   r
   ÚREALTIME_VARIANT_INCOMPATIBLErT   rN   Ú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
)rU   rV   rW   rh   r   r   r;   Ú__classcell__©ru   s   @r#   rj   rj   €   s*   ø„ ØðE uÐ-CÀSÐ-HÑ'Iô Eó ôEr%   rj   c                   ój   ‡ — e Zd ZdZej
                  Zej                  ZdZ	dZ
edefˆ fd„«       Zˆ xZS )r(   ÚgenericTr   c                 óR  •— t         ‰| �  }t        j                  «       j                  }|dk7  rx|j                  d«      xs g }t        j                  j                  | j                  | j                  d|xs d¬«      }|j                  t        j                  d|if«       ||d<   |S )Nry   rF   Úunknown)rm   rl   Úbase_flavorÚcurrent_flavorrD   )rr   rL   r   Úget_kernel_infoÚflavorÚgetr
   Ú#KERNEL_FLAVOR_CHANGE_WARNING_PROMPTrT   r)   rX   Úappendr   rH   )r!   rL   r}   rF   rD   ru   s        €r#   rL   zGenericRealtime.messaging˜   s¬   ø€ ô ‘GÑ%ˆ	Ü×/Ñ/Ó1×8Ñ8ˆØ˜YÒ&Ø"Ÿ™ |Ó4Ò:¸ˆJÜ×>Ñ>×EÑEØ×)Ñ)ØŸ	™	Ø%Ø-Ò:°ð	 Fó ˆCð ×Ñä×0Ñ0Ø˜C�Lðôð '1ˆI�lÑ#ØÐr%   )rU   rV   rW   r)   r
   ÚREALTIME_GENERIC_TITLErN   ÚREALTIME_GENERIC_DESCRIPTIONr[   Ú
is_variantÚcheck_packages_are_installedrh   r   rL   rv   rw   s   @r#   r(   r(   ‘   sC   ø„ Ø€LØ×+Ñ+€EØ×7Ñ7€KØ€JØ#'Ð àðà	 ôó ôr%   r(   c                   óH   — e Zd ZdZej
                  Zej                  ZdZ	dZ
y)r*   znvidia-tegraTN)rU   rV   rW   r)   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   — e Zd ZdZej
                  Zej                  ZdZ	dZ
defd„Zy)r+   ÚraspiTr   c                 óÖ   — d}	 t        j                  |«      j                  «       j                  «       }d|v xs d|v S # t        $ r }t
        j                  d|«       Y d }~yd }~ww xY w)Nz/proc/device-tree/modelzraspberry pi 4zraspberry 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)rU   rV   rW   r)   r
   ÚREALTIME_RASPI_TITLErN   ÚREALTIME_RASPI_DESCRIPTIONr[   r…   r†   rf   r–   r?   r%   r#   r+   r+   ¸   s4   „ Ø€LØ×)Ñ)€EØ×5Ñ5€KØ€JØ#'Ð ð Tô r%   r+   c                   ó†   — e Zd ZdZej
                  Zej                  ZdZ	dZ
deeef   deeeej"                     f   fd„Zy)r,   z
intel-iotgTÚplatform_checksr   c                 ó  — t        j                  «       j                  xs d}t        j	                  ||«      }|j	                  dg «      }||v rydt
        j                  j                  | j                  |dj                  |«      ¬«      fS )NÚ Úcpu_vendor_ids)TNFú,)rN   ÚvendorÚsupported_vendors)
r   Úget_cpu_infoÚcpuinfo_vendor_idÚCPU_VENDOR_MAPr€   r
   ÚINAPPLICABLE_VENDOR_NAMErT   rN   Ú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)rU   rV   rW   r)   r
   ÚREALTIME_INTEL_TITLErN   ÚREALTIME_INTEL_DESCRIPTIONr[   r…   r†   r   rg   r   r   rf   r   Ú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Útypingr   r   r   r   r   Úuaclientr   r	   r
   r   r   Úuaclient.entitlementsr   Úuaclient.entitlements.baser   r   Úuaclient.typesr   r   r   Úget_event_loggerr   Ú	getLoggerÚreplace_top_level_logger_namerU   r‘   r£   ÚRepoEntitlementr   rj   r(   r*   r+   r,   r?   r%   r#   ú<module>rµ      s´   ðÛ ß 3Õ 3ç >Õ >Ý &ß L÷ñ ð 	&ˆ×%Ñ%Ó'€Ø€g×ÑÐ:˜×:Ñ:¸8ÓDÓE€à  'Ð*€ôj × 4Ñ 4ô jôZEÐ/ô Eô"�oô ô>(˜/ô (ô˜/ô ô"˜õ r%   