HEX
Server: Apache/2.4.52 (Ubuntu)
System: Linux spn-python 5.15.0-89-generic #99-Ubuntu SMP Mon Oct 30 20:42:41 UTC 2023 x86_64
User: arjun (1000)
PHP: 8.1.2-1ubuntu2.20
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/uaclient/__pycache__/apt_news.cpython-310.pyc
o

nHJe$�@s�ddlZddlZddlZddlZddlZddlmZmZddlZddl	m
Z
mZmZm
Z
ddlmZddlmZddlmZddlmZddlmZmZdd	lmZmZmZmZmZmZdd
l m!Z!e�"e
�#e$��Z%Gdd�de�Z&Gd
d�de�Z'dedee&de(fdd�Z)dejdeejde(fdd�Z*de+de(fdd�Z,de'de(fdd�Z-dedee.dee'fdd �Z/edefd!d"��Z0dedee+fd#d$�Z1dedee+fd%d&�Z2d'e+de+fd(d)�Z3defd*d+�Z4dS),�N)�List�Optional)�defaults�messages�system�util)�_is_attached)�ensure_apt_pkg_init)�get_cloud_type)�UAConfig)�ContractExpiryStatus�get_contract_expiry_status)�
BoolDataValue�
DataObject�DatetimeDataValue�Field�StringDataValue�	data_list)�state_filesc@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__rrrr�fieldsrr�str�boolr rrrrrs�	�
�
��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+rrrr 8s
zAptNewsMessage.__init__)r!r"r#rrrrrr$�datetimerrr%r rrrrr'0s"������r'�cfgr*�returncCsz|durdS|jdurt��j|jvrdS|jdur,t�\}}|dur%dS||jvr,dS|jdur;|jt|�jkr;dSdS)NTF)	rr�get_release_info�seriesrr
rr�is_attached)r-r*�cloud_id�failrrr�do_selectors_applyFs




r4r(r)cCsVtj�tjj�}||krdS|tjdd�}|dus||kr!|}n|}||kr)dSdS)NF�)�daysT)r,�now�timezone�utc�	timedelta)r(r)r7�one_month_after_begin�
end_to_userrr�do_dates_apply^sr=�ccCst�|�ddkS)Nr�C)�unicodedata�category)r>rrr�is_control_charpsrB�msgcCs^t|j�dkr	dSt|j�dkrdS|jD]}tdd�|D��r#dSt|�dkr,dSqdS)N�F�cSsg|]}t|��qSr)rB)�.0r>rrr�
<listcomp>{sz$is_message_valid.<locals>.<listcomp>�MT)�lenr+�any)rC�linerrr�is_message_validts
�rLrcCs�|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�LOG�debugrLr=r(r)r4r*)r-r�msg_dictrC�errr�select_message�s&��rScCsRtjtjdd�t��}tj||jdtjd�}|��t	�
|j�}tj
|tjd�S)NT)�exist_ok�)�hash�destdir)�cls)�os�makedirsr�UAC_RUN_PATH�apt_pkg�Acquire�AcquireFile�apt_news_url�runr�	load_file�destfile�json�loadsr�DatetimeAwareJSONDecoder)r-�acq�
apt_news_file�apt_news_contentsrrr�fetch_aptnews_json�s��ricCs>t|�}t||�dg��}t�d|�|durd�|j�SdS)Nrz
using msg: %r�
)rirS�getrOrP�joinr+)r-�	news_dictrCrrr�fetch_and_process_apt_news�srncCs�t|�\}}|tjkrtj�|�j|d�S|tjkr:tj	|}|j
j}|dur*d}n|�d�}tj
�|�j||d�S|tjkrBtjSdS)z4
    :return: str if local news, None otherwise
    )�remaining_daysN�Unknownz%d %b %Y)�expired_datero)r
r�ACTIVE_EXPIRED_SOONr�CONTRACT_EXPIRES_SOON�	pluralize�format�EXPIRED_GRACE_PERIODr�!CONTRACT_EXPIRY_GRACE_PERIOD_DAYS�machine_token_file�contract_expiry_datetime�strftime�CONTRACT_EXPIRED_GRACE_PERIOD�EXPIRED�CONTRACT_EXPIRED)r-�
expiry_statusro�grace_period_remaining�exp_dt�
exp_dt_strrrr�local_apt_news�s*
�
�
��
r��newscCs.d}|�d�D]	}|d�|�7}q|d7}|S)Nz#
rjz# {}
)�splitru)r��resultrKrrr�format_news_for_apt_update�s
r�c
Cs�z,t|�}|st|�}|r tj�|�t|�}tj�|�WdStj��tj��WdStyO}zt	�
d|�tj��tj��WYd}~dSd}~ww)Nz2something went wrong while processing apt_news: %r)r�rnr�apt_news_raw_file�writer��apt_news_contents_file�deleterNrOrP)r-r��apt_update_formatted_newsrRrrr�update_apt_news�s 

��r�)5r,rc�loggingrYr@�typingrrr\�uaclientrrrr�(uaclient.api.u.pro.status.is_attached.v1r�uaclient.aptr	�uaclient.clouds.identityr
�uaclient.configr�uaclient.contractrr
�uaclient.data_typesrrrrrr�uaclient.filesr�	getLogger�replace_top_level_logger_namer!rOrr'r&r4r=r%rBrL�dictrSrirnr�r�r�rrrr�<module>s^ ��
���
���
�