File: //lib/python3/dist-packages/uaclient/cli/__pycache__/enable.cpython-310.pyc
o
    ��JhD  �                   @   s�  d dl Z d dlZd dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZm
Z
mZmZmZmZmZ d dlmZmZ d dlmZmZmZ d dlmZmZ d dlmZ d dlm Z  d d	l!m"Z"m#Z#m$Z$ d d
l%m&Z& e�'e�(e)��Z*edde+fd
e+fdeee,ef  fg�Z-	dBde
j.de+dee	j/ fdd�Z0de
j.de,dee dee de,de,de,fdd�Z1de+dee,ef dee, dee, d eee,ef  d!eee,ef  de+fd"d#�Z2de
j.d$e,de,de+d%e+de+d&eee,  dee dee d'e-fd(d)�Z3e j4e j5e �6e j7�d'e8fd*d+����Z9e$d,ej:ej;e9e&j<d-e#e"dej=j>d.�?ej@e
�.� d/��d0�d1d2d3�e"d4ejAj>d,d5�d6d7�e"d8ejBd6d7�e"d9ejCd6d7�e"d:ejDj>d;d<�d1d;d=gd;d>�e"d?ejEd1d7�gd@�gdA�ZFdS )C�    N)�Any�Dict�List�
NamedTuple�Optional)
�api�config�contract�entitlements�event_logger�
exceptions�lock�messages�status�util)�ServiceWithDependencies�
_dependencies)�
EnableOptions�EnableResult�_enable)�EnabledService�_enabled_services)�_is_attached)�cli_util)�ProArgument�ProArgumentGroup�
ProCommand)�HelpCategory�_EnableOneServiceResult�success�needs_reboot�error�cfg�access_only�progress_objectc           
   
   C   s�   t �|�}tj| d||d�}d}d}z tjdd�� |j|d�\}}W d  � n1 s,w   Y  W n tyD } zt��  |�d}~ww |s^|durT|j	durT|j	}	nt
j}	tj
d|	d��tdgg dg d	�S )
a  
    Landscape gets special treatment because it currently not supported by our
    enable API. This function is a temporary workaround until we have a proper
    API for enabling landscape, which will happen after Landscape is fully
    integrated with the contracts backend.
    �	landscape)�called_namer#   �
extra_argsFNzcli.enable._enable_landscape)�lock_holder)�progress)�service�reason)�enabled�disabled�reboot_requiredr   )r   �ProgressWrapperr
   �LandscapeEntitlementr
   �	RetryLock�enable�	Exception�clear_lock_file_if_present�messager   �GENERIC_UNKNOWN_ISSUEr   �EntitlementNotEnabledErrorr   )
r"