Current File : //usr/lib/python3/dist-packages/uaclient/files/__pycache__/machine_token.cpython-312.pyc |
�
��g�# � � � d dl Z d dlmZ d dlmZmZmZ d dlmZmZm Z m
Z
d dlmZ d dl
mZ da G d� d� Zdd efd
�Zy)� N)�datetime)�Any�Dict�Optional)�defaults�
exceptions�system�util)�PublicMachineTokenData)�UAFilec � � e Zd Zej dfdedee fd�Zdefd�Z d� Z
dee fd �Zed
� � Z
ed� � Zedee fd�� Zd
� Zedeeef fd�� Zddee fd�Ze ddeeef dee fd�� Zedee fd�� Zed� � Zedee fd�� Zedd�� Zedd�� Zedd�� Zed� � Zed� � Z ed� � Z!y)�MachineTokenFileN� directory�machine_token_overlay_pathc �� � t j }t ||dz t j z � | _ t ||d� | _ || _ d | _ d | _ d | _ y )N�/F)
r �MACHINE_TOKEN_FILEr �PRIVATE_SUBDIR�private_file�public_filer �_machine_token�
_entitlements�_contract_expiry_datetime)�selfr r � file_names �>/usr/lib/python3/dist-packages/uaclient/files/machine_token.py�__init__zMachineTokenFile.__init__
sc � �
�/�/� �"��y�3���)@�)@�@�
��� "�)�Y��>���*D��'�"���!���)-��&� �private_contentc �� � t j � r�t j |t j �� }| j
j
|� t j |� j d�� }t j |t j �� }| j j
|� d| _ d| _ d| _
yt j � �)z8Update the machine_token file for both pub/private files��clsF)� keep_noneN)r
�we_are_currently_root�json�dumps�DatetimeAwareJSONEncoderr �writer � from_dict�to_dictr r r r r �NonRootUserError)r r �private_content_str�public_content�public_content_strs r r( zMachineTokenFile.write s� � ��%�%�'�"&�*�*��T�%B�%B�#��
���#�#�$7�8� 4�=�=����g��g�&�
� "&����D�$A�$A�"��
���"�"�#5�6�"&�D��!%�D��-1�D�*��-�-�/�/r c �� � t j � rJ| j j � | j j � d| _ d| _ d| _ yt j � �)z!Delete both pub and private filesN)
r
r$ r �deleter r r r r r+ �r s r r0 zMachineTokenFile.delete4 sY � ��%�%�'����#�#�%����$�$�&�"&�D��!%�D��-1�D�*��-�-�/�/r �returnc �� � t j � r
| j }n| j }|j � }|sy t j |t j �� }|S # t $ r Y |S w xY w�Nr! ) r
r$ r r �readr% �loads�DatetimeAwareJSONDecoder� Exception)r �file_handler�contents r r5 zMachineTokenFile.read@ ss � ��%�%�'��,�,�L��+�+�L��#�#�%���� ��j�j��d�.K�.K�L�G� ��� � ���� �s �%A) �) A6�5A6c � � t j � r.| j j xr | j j S | j j S �N)r
r$ r �
is_presentr r1 s r r= zMachineTokenFile.is_presentN sC � ��%�%�'��#�#�.�.�O�4�3D�3D�3O�3O�O��#�#�.�.�.r c �� � | j sY| j � }|r@| j r4| j | j � }|rt j
||�� || _ | j S )zAReturn the machine-token if cached in the machine token response.)� base_dict�overlay_dict)r r5 r �parse_machine_token_overlayr
�depth_first_merge_overlay_dict)r r: �machine_token_overlays r �
machine_tokenzMachineTokenFile.machine_tokenU sl � � �"�"��i�i�k�G��4�:�:�(,�(H�(H��3�3�)�%� )��7�7�")�%:�� #*�D���"�"�"r c � � | j r;| j j di � j di � j d� S y )N�machineTokenInfo�contractInfo�name�rD �getr1 s r �
contract_namezMachineTokenFile.contract_nameg sA � �����"�"�&�&�'9�2�>���^�R�(���V��
� r c �v � t j |� }t j |t j
�� S r4 )r � load_filer% r6 r
r7 )r r �machine_token_overlay_contents r rA z,MachineTokenFile.parse_machine_token_overlayr s5 � �(.�(8�(8�&�)
�%� �z�z�)��-�-�
�
r c �T � t | j � r| j d d S i S )NrF �accountInfo��boolrD r1 s r �accountzMachineTokenFile.account{ s, � ���"�"�#��%�%�&8�9�-�H�H�� r �seriesc � � | j r| j S | j si S | j | j |� | _ | j S )z9Return configured entitlements keyed by entitlement named)r rD �get_entitlements_from_token)r rT s r �entitlementszMachineTokenFile.entitlements� sQ � �����%�%�%��!�!��I�!�=�=�����
��� �!�!�!r rD c �^ � ddl m} | si S i }| j di � j d� }|si S t d� | j dg � D � � }t d� |j dg � D � � }|j � D ]$ \ }}d |i} ||v r|| | d
<