File: //lib/python3/dist-packages/uaclient/__pycache__/status.cpython-310.pyc
o
    ��gr  �                   @   s:  d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZ d dlm	Z	 d dl
mZmZm
Z
mZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZmZ d d
l m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) d d
l*m+Z+m,Z,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 e�3� Z4e�5e�6e7��Z8dZ9dZ:dZ;e)j<j=e2j>ej? e2j@ e)jAj=e2jBejC e2j@ e)jDj=e2jEejF e2j@ e)jGj=e2jEejH e2j@ e)jIj=e2jJejK e2j@ e&jLj=e2j>ejM e2j@ e&jNj=e2jEejO e2j@ e9e2j>ejP e2j@ e:e2j>ejQ e2j@ e;e2j>ejR e2j@ i
ZSdZTdZUdjVejWejXejYejZd�Z[dZ\dZ]i dd�dd�de�^� �dd�dd �d!d�d"d�d#d�d$g �d%e(jAj=�d&ej_�d'i �d(g �d)d*d*d*g e)jDj=d+��d,d*d*d*g d-��d.d �Z`d/d0� Zad1eebef fd2d3�Zcd4ed1eebef fd5d6�Zdd4ed1eebef fd7d8�Zed1eebef fd9d:�ZfdUd4ed;egd1eebef fd<d=�Zhd>e
eebef  d?ebd1eebef fd@dA�Zi	 dUdBebd;egd1eeebef ejf fdCdD�ZkdEebd1ebfdFdG�ZldHe
e
eb  d1ebfdIdJ�Zm	dVdKe
eebebf  dLeeb d1e
eb fdMdN�Znd"ee d1ebfdOdP�ZodUd=eebef d;egd1ebfdQdR�ZpdSdT� ZqdS )W�    N)�OrderedDict)�datetime�timezone)�Enum)�Any�Dict�List�Optional�Tuple)�event_logger�
exceptions�	livepatch�lock�messages�util�version)�_is_attached)�UA_CONFIGURABLE_KEYS�UAConfig)�get_available_resources�get_contract_information)�ATTACH_FAIL_DATE_FORMAT�PRINT_WRAP_WIDTH)�entitlement_factory)�ContractStatus�UserFacingAvailability�UserFacingConfigStatus�UserFacingStatus)�
machine_token�notices�state_files�user_config_file)�Notice)�TxtColor�	essential�standard�advancedz({name: <17}{available: <11}{description}zJ{name: <17}{available: <11}{entitled: <11}{auto_enabled: <16}{description}z4{name: <17}{entitled: <10}{status: <13}{description}��name�entitled�status�descriptionz4{name: <17}{entitled: <19}{status: <22}{description}z={marker} {name: <15}{entitled: <19}{status: <22}{description}�_doczUContent provided in json response is currently considered Experimental and may change�_schema_versionz0.1r   �
machine_id�attachedF�	effective�expires�origin�services�execution_status�execution_details�featuresr   �contract� ��idr(   �
created_at�products�tech_support_level�account�r(   r:   r;   �external_account_ids�	simulatedc                 C   s   dd� | � � D �S )Nc                 S   s4   g | ]}|j js|j jn|j j|jj|jjd ��qS ))r(   �reason_code�reason)�entitlement�
is_variantr(   �variant_name�	named_msg�msg��.0�service� rL   �1/usr/lib/python3/dist-packages/uaclient/status.py�
<listcomp>�   s    
�
���z,_get_blocked_by_services.<locals>.<listcomp>)�blocking_incompatible_services)�entrL   rL   rM   �_get_blocked_by_services�   s   
�rQ   �returnc           
   
      s�   d }d}| � � }| �� }| j�v rdnd}i }|tjkr tj}	n=| j�v r.tj}	�| j }n/| �� \}	}
|	tj	krA|
j|
j
d�}n|
rF|
j
}|	tjkrMd}| jr]� �fdd�| j�� D �}t
| �}| j| j|j|	j|||||d�	}| jsx||d<