Your IP : 216.73.216.14


Current Path : /usr/lib/python3/dist-packages/uaclient/__pycache__/
Upload File :
Current File : //usr/lib/python3/dist-packages/uaclient/__pycache__/apt_news.cpython-38.pyc

U

8�-dN�@s�ddlZddlZddlZddlZddlZddlmZmZddlZddl	m
Z
mZmZm
Z
ddlmZddlmZddlmZmZmZmZmZmZddlmZddlmZmZGd	d
�d
e�ZGdd�de�Zee d
�dd�Z!eeee"d�dd�Z#ejeeje"d�dd�Z$e e"d�dd�Z%ee"d
�dd�Z&eee'eed�dd�Z(ed�dd �Z)ed�d!d"�Z*ee"d#�d$d%�Z+ed�d&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@sleZdZedee�dd�edee�dd�ededd�gZdddd�ee	e
ee	e
eed�dd	�ZdS)
�AptNewsMessageSelectors�	codenamesF�Zrequired�clouds�proN�rrrcCs||_||_||_dS�Nr)�selfrrr�r�3/usr/lib/python3/dist-packages/uaclient/apt_news.py�__init__#sz AptNewsMessageSelectors.__init__)
�__name__�
__module__�__qualname__r
rrr
�fieldsrr�str�boolrrrrrrs�	�

�rc@sheZdZede�ededd�ededd�edee��gZddd�e	j	e
e	j	e
eeed	�d
d�Z
dS)�AptNewsMessage�begin�endFr�	selectors�linesN)r&r'�r%r&r'r(cCs||_||_||_||_dSrr))rr%r&r'r(rrrr7szAptNewsMessage.__init__)rrr r
rrrrr!�datetimerrr"rrrrrr$/s���r$)�msg�returncCs*d}|jD]}|d�|�7}q
|d7}|S)Nz#
z# {}
)r(�format)r+�result�linerrr�format_messageEs

r0)�cfgr'r,cCsx|dkrdS|jdk	r,t��d|jkr,dS|jdk	rZt�\}}|dk	rLdS||jkrZdS|jdk	rt|j|jkrtdSdS)NTZseriesF)rrZget_platform_inforrrZis_attached)r1r'Zcloud_idZfailrrr�do_selectors_applyMs




r2)r%r&r,cCsVtj�tjj�}||krdS|tjdd�}|dks<||krB|}n|}||krRdSdS)NF�)ZdaysT)r*�now�timezoneZutcZ	timedelta)r%r&r4Zone_month_after_beginZ
end_to_userrr�do_dates_applyesr6)�cr,cCst�|�ddkS)Nr�C)�unicodedata�category)r7rrr�is_control_charwsr;cCs^t|j�dkrdSt|j�dkr$dS|jD].}tdd�|D��rFdSt|�dkr*dSq*dS)N�F�cSsg|]}t|��qSr)r;)�.0r7rrr�
<listcomp>�sz$is_message_valid.<locals>.<listcomp>�MT)�lenr(�any)r+r/rrr�is_message_valid{s
rC)r1rr,cCs�|D]�}zt�|�}Wn6tk
rL}zt�d|�WY�qW5d}~XYnXt|�sdt�d|�qt|j|j�s�t�d|�qt	||j
�s�t�d|�q|SdS)Nzmsg failed parsing: %rzmsg not valid: %rzmsg dates don't apply: %rzmsg selectors don't apply: %r)r$Z	from_dict�	Exception�logging�debugrCr6r%r&r2r')r1rZmsg_dictr+�errr�select_message�s"rH)r1cCsPtjtjdd�t��}tj||jtjd�}|��t	�
|j�}tj
|tjd�S)NT)�exist_ok)Zdestdir)�cls)�os�makedirsrZUAC_RUN_PATH�apt_pkgZAcquireZAcquireFileZapt_news_url�runrZ	load_fileZdestfile�json�loadsrZDatetimeAwareJSONDecoder)r1ZacqZ
apt_news_fileZapt_news_contentsrrr�fetch_aptnews_json�s��rQc
Cs�zRt|�}t||�dg��}t�d|�|dk	rFt|�}tj�|�n
tj�	�Wn8t
k
r�}zt�d|�tj�	�W5d}~XYnXdS)Nrz
using msg: %rz2something went wrong while processing apt_news: %r)rQrH�getrErFr0r�apt_news_contents_file�write�deleterD)r1Z	news_dictr+Zmsg_strrGrrr�fetch_and_process_apt_news�srV)r1r,cCs�t|�\}}|tjkr0tj�tjj|d��dS|tj	kr�t
j|}|jj
}|dkrZd}n
|�d�}tj�tjj||d��dS|tjkr�tj�tj�dSdS)zB
    :return: True if local news was written, False otherwise
    )�remaining_daysTNZUnknownz%d %b %Y)Zexpired_daterWF)rrZACTIVE_EXPIRED_SOONrrSrTrZCONTRACT_EXPIRES_SOON_APT_NEWSr-ZEXPIRED_GRACE_PERIODrZ!CONTRACT_EXPIRY_GRACE_PERIOD_DAYSZmachine_token_fileZcontract_expiry_datetime�strftimeZ&CONTRACT_EXPIRED_GRACE_PERIOD_APT_NEWSZEXPIREDZCONTRACT_EXPIRED_APT_NEWS)r1Z
expiry_statusrWZgrace_period_remainingZexp_dtZ
exp_dt_strrrr�local_apt_news�s8
��
�
��
�rYcCs t|�}|st��t|�dSr)rYrMZinitrV)r1Zlocal_news_writtenrrr�update_apt_news�srZ)-r*rOrErKr9�typingrrrMZuaclientrrrrZuaclient.clouds.identityrZuaclient.configr	Zuaclient.data_typesr
rrr
rrZuaclient.filesrZuaclient.jobs.update_messagingrrrr$r"r0r#r2r6r;rC�dictrHrQrVrYrZrrrr�<module>sB 	���'