| Current Path : /usr/lib/python3/dist-packages/uaclient/entitlements/__pycache__/ |
| Current File : //usr/lib/python3/dist-packages/uaclient/entitlements/__pycache__/livepatch.cpython-38.pyc |
U
��.d 1 � @ s� d dl Z d dlZd dlmZmZmZmZ d dlmZm Z m
Z
mZmZm
Z
mZmZ d dlmZmZ d dlmZ d dlmZ ddgZd d
d�Ze �� ZG dd
� d
e�Zdd� ZdS )� N)�Any�Dict�Optional�Tuple)�apt�event_logger�
exceptions� livepatch�messages�snap�system�util)�IncompatibleService�
UAEntitlement)�ApplicationStatus)�StaticAffordanceg �?g �?z)Invalid Auth-Token provided to livepatch.z2Your running kernel is not supported by Livepatch.)zUnknown Auth-Tokenzunsupported kernelc s� e Zd ZdZdZdZdZdZdZdZ dZ
eee
df d�d d
��Zeeedf d�dd��Zdeed
�dd�Zdeeed�dd�Zd dd�Zeeeej f d�dd�Zeeeej f d�dd�Zdd� Zd!eeef eeef eed�� fdd�
Z� Z S )"�LivepatchEntitlementz%https://ubuntu.com/security/livepatchr Z LivepatchzCanonical Livepatch serviceFT.)�returnc C s0 ddl m} ddlm} t|tj�t|tj�fS )Nr ��FIPSEntitlement)�RealtimeKernelEntitlement)�uaclient.entitlements.fipsr Zuaclient.entitlements.realtimer r r
ZLIVEPATCH_INVALIDATES_FIPSZREALTIME_LIVEPATCH_INCOMPATIBLE)�selfr r � r �A/usr/lib/python3/dist-packages/uaclient/entitlements/livepatch.py�incompatible_services+ s ���z*LivepatchEntitlement.incompatible_servicesc sP ddl m} || j�}t|�� d tjk�� tjdd� dftj � fdd�dffS )Nr r c S s t �� S �N)r �is_containerr r r r �<lambda>H � z9LivepatchEntitlement.static_affordances.<locals>.<lambda>Fc s � S r r r �Zis_fips_enabledr r r M r )
r r �cfg�bool�application_statusr �ENABLEDr
Z$LIVEPATCH_ERROR_INSTALL_ON_CONTAINERZ!LIVEPATCH_ERROR_WHEN_FIPS_ENABLED)r r Zfips_entr r r �static_affordances: s
��
��z'LivepatchEntitlement.static_affordances)�silentr c
C s� t �tj�s�t�d� t�tj� zt� � W n4 t
jk
rb } zt�
dt|�� W 5 d}~X Y nX zt jddddgtjd� W q� t
jk
r� t
�� �Y q�X nt�� s�t
jtj| jd ��zt jtjd
ddgd
d� W nL t
jk
�r$ } z*t�dt|��� ��rt�tj� n� W 5 d}~X Y nX t�d| jjtj�}t�d| jj tj!�}tj"||tj#d� t$�%� �s�t�d� zt jtjddgd
tj#d� W n6 t
jk
�r� } zt
j&t|�d��W 5 d}~X Y nX t$�'||� | j(d
d
d�S )zYEnable specific entitlement.
@return: True on success, False otherwise.
zInstalling snapdz<Trying to install snapd. Ignoring apt-get update failure: %sNzapt-get�installz--assume-yesZsnapd��retry_sleeps)Zsnap_cmd�service�waitr zseed.loadedT��capturezunknown command .*waitZhttpZhttps)�
http_proxy�https_proxyr) z#Installing canonical-livepatch snapzcanonical-livepatch)r- r) )Z error_msg��process_directives�
process_token))r Zwhichr ZSNAP_CMD�event�infor
ZAPT_UPDATING_LISTSr Zrun_apt_update_commandr ZUserFacingError�logging�debug�str�subpZAPT_RETRIES�ProcessExecutionErrorZCannotInstallSnapdErrorZis_installedZSnapdNotProperlyInstalledError�title�re�search�lowerZwarningZSNAPD_DOES_NOT_HAVE_WAIT_CMDr
Zvalidate_proxyr! r. ZPROXY_VALIDATION_SNAP_HTTP_URLr/ ZPROXY_VALIDATION_SNAP_HTTPS_URLZconfigure_snap_proxyZSNAP_INSTALL_RETRIESr �is_livepatch_installedZErrorInstallingLivepatchZconfigure_livepatch_proxy�setup_livepatch_config)r r&