HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux ip-10-0-8-47 6.8.0-1021-aws #23~22.04.1-Ubuntu SMP Tue Dec 10 16:31:58 UTC 2024 aarch64
User: ubuntu (1000)
PHP: 8.1.2-1ubuntu2.22
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/uaclient/__pycache__/apt_news.cpython-310.pyc
o

S��c��@s�ddlZddlZddlZddlZddlmZmZddlZddlm	Z	m
Z
mZmZddl
mZddlmZddlmZmZmZmZmZmZddlmZddlmZmZGd	d
�d
e�ZGdd�de�Zd
edefdd�Z dedeede!fdd�Z"dejdeejde!fdd�Z#dede!fdd�Z$d
ede!fdd�Z%dedee&deefdd �Z'defd!d"�Z(defd#d$�Z)dede!fd%d&�Z*defd'd(�Z+dS))�N)�List�Optional)�defaults�messages�system�util)�get_cloud_type)�UAConfig)�
BoolDataValue�
DataObject�DatetimeDataValue�Field�StringDataValue�	data_list)�state_files)�ContractExpiryStatus�get_contract_expiry_statusc@speZdZedee�dd�edee�dd�ededd�gZdddd�dee	e
dee	e
deefdd	�ZdS)
�AptNewsMessageSelectors�	codenamesF��required�clouds�proN�rrrcCs||_||_||_dS�Nr)�selfrrr�r�3/usr/lib/python3/dist-packages/uaclient/apt_news.py�__init__"s
z AptNewsMessageSelectors.__init__)
�__name__�
__module__�__qualname__r
rrr
�fieldsrr�str�boolrrrrrrs�	�
�
��rc
@sneZdZede�ededd�ededd�edee��gZddd�de	j	de
e	j	de
edeefd	d
�Z
dS)�AptNewsMessage�begin�endFr�	selectors�linesN)r'r(cCs||_||_||_||_dSr)r&r'r(r))rr&r'r(r)rrrr6s
zAptNewsMessage.__init__)rr r!r
rrrrr"�datetimerrr#rrrrrr%.s"������r%�msg�returncCs*d}|jD]	}|d�|�7}q|d7}|S)Nz#
z# {}
)r)�format)r+�result�linerrr�format_messageDs

r0�cfgr(cCsx|durdS|jdurt��d|jvrdS|jdur-t�\}}|dur&dS||jvr-dS|jdur:|j|jkr:dSdS)NT�seriesF)rr�get_platform_inforrr�is_attached)r1r(�cloud_id�failrrr�do_selectors_applyLs




r7r&r'cCsVtj�tjj�}||krdS|tjdd�}|dus||kr!|}n|}||kr)dSdS)NF�)�daysT)r*�now�timezone�utc�	timedelta)r&r'r:�one_month_after_begin�
end_to_userrr�do_dates_applydsr@�ccCst�|�ddkS)Nr�C)�unicodedata�category)rArrr�is_control_charvsrEcCs^t|j�dkr	dSt|j�dkrdS|jD]}tdd�|D��r#dSt|�dkr,dSqdS)N�F�cSsg|]}t|��qSr)rE)�.0rArrr�
<listcomp>�sz$is_message_valid.<locals>.<listcomp>�MT)�lenr)�any)r+r/rrr�is_message_validzs
�rMrcCs�|D]K}zt�|�}Wnty#}zt�d|�WYd}~qd}~wwt|�s/t�d|�qt|j|j�s=t�d|�qt	||j
�sJt�d|�q|SdS)Nzmsg failed parsing: %rzmsg not valid: %rzmsg dates don't apply: %rzmsg selectors don't apply: %r)r%�	from_dict�	Exception�logging�debugrMr@r&r'r7r()r1r�msg_dictr+�errr�select_message�s&��rTcCs@t��}tj||jtjd�}|��t�|j	�}t
j|tj
d�S)N)�destdir)�cls)�apt_pkg�Acquire�AcquireFile�apt_news_urlr�UAC_RUN_PATH�runr�	load_file�destfile�json�loadsr�DatetimeAwareJSONDecoder)r1�acq�
apt_news_file�apt_news_contentsrrr�fetch_aptnews_json�s
��rec
Cs�z,t|�}t||�dg��}t�d|�|dur%t|�}tj�|�WdStj�	�WdSt
yJ}zt�d|�tj�	�WYd}~dSd}~ww)Nrz
using msg: %rz2something went wrong while processing apt_news: %r)rerT�getrPrQr0r�apt_news_contents_file�write�deleterO)r1�	news_dictr+�msg_strrSrrr�fetch_and_process_apt_news�s��rlcCs�t|�\}}|tjkrtj�tjj|d��dS|tj	kr7t
j|}|jj
�d�}tj�tjj||d��dS|tjkrEtj�tj�dSdS)zB
    :return: True if local news was written, False otherwise
    )�remaining_daysTz%d %b %Y)�expired_datermF)rr�ACTIVE_EXPIRED_SOONrrgrhr�CONTRACT_EXPIRES_SOON_APT_NEWSr-�EXPIRED_GRACE_PERIODr�!CONTRACT_EXPIRY_GRACE_PERIOD_DAYS�machine_token_file�contract_expiry_datetime�strftime�&CONTRACT_EXPIRED_GRACE_PERIOD_APT_NEWS�EXPIRED�CONTRACT_EXPIRED_APT_NEWS)r1�
expiry_statusrm�grace_period_remaining�exp_dtrrr�local_apt_news�s4
��
����
�r|cCs$t|�}|st��t|�dSdSr)r|rW�initrl)r1�local_news_writtenrrr�update_apt_news�s
�r),r*r_rPrC�typingrrrW�uaclientrrrr�uaclient.clouds.identityr�uaclient.configr	�uaclient.data_typesr
rrr
rr�uaclient.filesr�uaclient.jobs.update_messagingrrrr%r#r0r$r7r@rErM�dictrTrerlr|rrrrr�<module>sT ��
���
���
�
%