o
    ÙKÕij  ã                   @   sÊ   d dl mZmZ d dlmZ d dlmZmZ d dlm	Z	 d dl
mZ d dlmZmZmZmZmZ G dd„ deƒZG d	d
„ d
eeƒZdefdd„Zdedefdd„Zeddedd�Zdddeg dddœZdS )é    )ÚListÚOptional)ÚAPIEndpoint)ÚAdditionalInfoÚErrorWarningObject)Ú_is_attached)ÚUAConfig)ÚBoolDataValueÚ
DataObjectÚFieldÚStringDataValueÚ	data_listc                   @   sX   e Zd Zededd�ededd�ededdd�gZdd	d
œdedede	e fdd„Z
d	S )ÚEnabledServiceÚnamezName of the service©ÚdocÚvariant_enabledz&If a variant of the service is enabledÚvariant_nameFz,Name of the variant, if a variant is enabledN)r   r   c                C   s   || _ || _|| _d S ©N©r   r   r   )Úselfr   r   r   © r   úO/usr/lib/python3/dist-packages/uaclient/api/u/pro/status/enabled_services/v1.pyÚ__init__    s   
zEnabledService.__init__)Ú__name__Ú
__module__Ú__qualname__r   r   r	   ÚfieldsÚstrÚboolr   r   r   r   r   r   r      s.    ýüùûýüûr   c                   @   s2   e Zd Zedeeƒdd�gZdee fdd„ZdS )ÚEnabledServicesResultÚenabled_servicesz$A list of ``EnabledService`` objectsr   c                C   s
   || _ d S r   ©r!   )r   r!   r   r   r   r   5   ó   
zEnabledServicesResult.__init__N)	r   r   r   r   r   r   r   r   r   r   r   r   r   r    ,   s    ýÿr    Úreturnc                   C   s
   t tƒ ƒS r   )Ú_enabled_servicesr   r   r   r   r   r!   9   r#   r!   Úcfgc                 C   s  ddl m} ddlm} t| ƒjstg d�S g }g }|D ][}|| ƒ}| ¡ \}}||j|j	fv rw|j
}	t|	d�}
|j ¡ D ]\}}|| ƒ}| ¡ d |jkrXt|	d|jd�}
 nq=| |
¡ ||j	krw|rw| t|jpld|jppdd	|	id
�¡ qtt|dd„ d�d�}||_|S )zO
    This endpoint shows the Pro services that are enabled on the machine.
    r   )ÚENTITLEMENT_CLASSES)ÚUserFacingStatusr"   ©r   Tr   Ú Úservice)ÚtitleÚcodeÚmetac                 S   s   | j S r   r)   )Úxr   r   r   Ú<lambda>h   s    z#_enabled_services.<locals>.<lambda>)Úkey)Úuaclient.entitlementsr'   Ú(uaclient.entitlements.entitlement_statusr(   r   Úis_attachedr    Úuser_facing_statusÚACTIVEÚWARNINGÚpresentation_namer   ÚvariantsÚitemsr   Úappendr   Úmsgr   ÚsortedÚwarnings)r&   r'   r(   r!   r>   Úent_clsÚentÚ
ent_statusÚdetailsÚent_nameÚenabled_serviceÚ_Úvariant_clsÚvariantÚresultr   r   r   r%   =   sJ   


ýú
ýÿ€ÿr%   Úv1ÚEnabledServicesN)Úversionr   ÚfnÚoptions_clsÚ28Fzi
from uaclient.api.u.pro.status.enabled_services.v1 import enabled_services

result = enabled_services()
z(pro api u.pro.status.enabled_services.v1a¢  
{
    "enabled_services": [
        {
            "name": "esm-apps",
            "variant_enabled": false,
            "variant_name": null
        },
        {
            "name": "esm-infra",
            "variant_enabled": false,
            "variant_name": null
        },
        {
            "name": "realtime-kernel",
            "variant_enabled": true,
            "variant_name": "raspi"
        }
    ]
}
)Úintroduced_inÚrequires_networkÚexample_pythonÚresult_classÚ
exceptionsÚexample_cliÚexample_json)Útypingr   r   Úuaclient.api.apir   Úuaclient.api.data_typesr   r   Ú(uaclient.api.u.pro.status.is_attached.v1r   Úuaclient.configr   Úuaclient.data_typesr	   r
   r   r   r   r   r    r!   r%   ÚendpointÚ_docr   r   r   r   Ú<module>   s0    	2ü
õ