Spamworldpro Mini Shell
Spamworldpro


Server : Apache/2.4.52 (Ubuntu)
System : Linux webserver 6.8.0-49-generic #49~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Wed Nov 6 17:42:15 UTC 2 x86_64
User : www-data ( 33)
PHP Version : 8.1.2-1ubuntu2.21
Disable Function : NONE
Directory :  /lib/python3/dist-packages/uaclient/__pycache__/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : //lib/python3/dist-packages/uaclient/__pycache__/status.cpython-310.pyc
o

���f�q�@s.ddlZddlZddlZddlZddlmZddlmZmZddlm	Z	m
Z
mZmZm
Z
ddlmZmZmZmZmZmZmZddlmZddlmZmZddlmZmZdd	lmZm Z dd
l!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*m+Z+m,Z,dd
l-m.Z.ddl/m0Z0e�1�Z2e�3e�4e5��Z6dZ7dZ8dZ9e'j:j;e0j<ej=e0j>e'j?j;e0j@ejAe0j>e'jBj;e0jCejDe0j>e'jEj;e0jCejFe0j>e'jGj;e0jHejIe0j>e$jJj;e0j<ejKe0j>e$jLj;e0jCejMe0j>e7e0j<ejNe0j>e8e0j<ejOe0j>e9e0j<ejPe0j>i
ZQdZRdZSdjTejUejVejWejXd�ZYdZZdZ[idd�dd�de�\��dd�dd�d d�d!d�d"d�d#g�d$e&j?j;�d%ej]�d&i�d'g�d(d)d)d)ge'jBj;d*��d+d)d)d)gd,��d-d�Z^d.d/�Z_d0e
e`e	ffd1d2�Zad3ed0e
e`e	ffd4d5�Zbd3ed0e
e`e	ffd6d7�Zcd0e
e`e	ffd8d9�ZddTd3ed:eed0e
e`e	ffd;d<�Zfd=ee
e`e	fd>e`d0e
e`e	ffd?d@�Zg	dTdAe`d:eed0e
e
e`e	fehffdBdC�ZidDe`d0e`fdEdF�ZjdGeee`d0e`fdHdI�Zk	dUdJee
e`e`fdKee`d0ee`fdLdM�Zld!eed0e`fdNdO�ZmdTd<e
e`e	fd:eed0e`fdPdQ�ZndRdS�ZodS)V�N)�OrderedDict)�datetime�timezone)�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'r9r:�external_account_ids�	simulatedcCsdd�|��D�S)NcSs4g|]}|jjs|jjn|jj|jj|jjd��qS))r'�reason_code�reason)�entitlement�
is_variantr'�variant_name�	named_msg�msg��.0�service�rK�1/usr/lib/python3/dist-packages/uaclient/status.py�
<listcomp>�s
�
���z,_get_blocked_by_services.<locals>.<listcomp>)�blocking_incompatible_services)�entrKrKrL�_get_blocked_by_services�s
�rP�returnc

s�d}d}|��}|��}|j�vrdnd}i}|tjkr tj}	n=|j�vr.tj}	�|j}n/|��\}	}
|	tj	krA|
j|
j
d�}n|
rF|
j
}|	tjkrMd}|jr]��fdd�|j��D�}t
|�}|j|j|j|	j|||||d�	}|jsx||d<|S)	Nr7�no�yes)�code�messagecs$i|]\}}|t|�d�����qS))�cfg)�_attached_service_status)rIrE�variant_cls�rV�inapplicable_resourcesrKrL�
<dictcomp>�s���z,_attached_service_status.<locals>.<dictcomp>)	r'r*r(r)�status_details�description_override�	available�
blocked_by�warning�variants)�status_description_override�contract_statusr'r�
UNENTITLEDr�UNAVAILABLE�INAPPLICABLE�user_facing_status�WARNINGrGra�itemsrP�presentation_namer*�valuerD)
rOrZrVr`r\r]rcr^ra�
ent_status�detailsr_�service_statusrKrYrLrW�sL


�
�	�rWrVcCs�t�tj�t�tj�t|�jrt�tj�t�	t
�}t�|�}|jd}|d}t
jj}|�|dd|�d�t��p=g|d|d|�dd	�|�d
g�|d�|jd|jd|j�dd	�|j�dg�d
�d��|�d�rt|j|d<|�d�r|d|d<|j�d�}|s�t|�}dd�t|dd�d�D�}|D]$}zt||�dd	�d�}	Wn
tjy�Yq�w|d�t|	||��q�|djdd�d�|���di��d�}
|
r�|
�di��d�}|r�||d d!<|S)"z8Return configuration of attached status as a dictionary.�machineTokenInfo�contractInfo�	machineIdTr1r9r'�	createdAtr7r;r8�externalAccountIDsr>)r-r.r1rr6r=�effectiveTor0�
effectiveFromr/�availableResourcescSs&i|]}|�d�s|d|�d��qS)r^r'r*��get�rI�resourcerKrKrLr[s��z$_attached_status.<locals>.<dictcomp>cS�|�dd�S�Nr'r7rw��xrKrKrL�<lambda>�z"_attached_status.<locals>.<lambda>��key�rVr'r2cSr{r|rwr}rKrKrLrr��supportrC�affordances�supportLevelr6r<)r�remover!�AUTO_ATTACH_RETRY_FULL_NOTICE�AUTO_ATTACH_RETRY_TOTAL_FAILUREr�is_attached_and_contract_valid�CONTRACT_EXPIRED�copy�deepcopy�DEFAULT_STATUSr�get_machine_token_filerrfrk�updaterx�listr=�contract_expiry_datetimer�sortedrr�EntitlementNotFoundError�appendrW�sort�entitlements)rV�response�machine_token_filerorpr<�	resourcesrZrzrOr�r�rKrKrL�_attached_status�sp






�����


��
��r�cCs�t�t�}t|�}|D]X}|�d�rtjj}ntjj}zt	||�dd�d�}Wnt
jy;t�
d|�dd��Yqw|jdkrNt��tjjkrN|��}nd}|d	�|�d
|d�|j||d��q|d	jdd
�d�|S)z#Return unattached status as a dict.r^r'r7r�z@Ignoring availability of unknown service %s from contract serverzwithout a 'name' keyrNr2�presentedAs)r'r*r]r^cSr{r|rwr}rKrKrLrFr�z$_unattached_status.<locals>.<lambda>r�)r�r�r�rrxr�	AVAILABLErkrerrr��LOG�debugr'r�on_supported_kernel�LivepatchSupport�UNSUPPORTEDrbr�r*r�)rVr�r�rzr^rO�descr_overriderKrKrL�_unattached_statuss<



��
�
��r�cCs�t}|jj}tj}t��\}}t��pg}|dkr&|j	j}tj
j||d�}ntj
jr7|jj}d}tjj|d�}||||j|j|jd�}tjj��}	tD]}
t||
�r_|	|
dur_t||
�|	|
<qK|	|dd<|S)	aGReturn a dict with execution_status, execution_details and notices.

    Values for execution_status will be one of UserFacingConfigStatus
    enum:
        inactive, active, reboot-required
    execution_details will provide more details about that state.
    notices is a list of tuples with label and description items.
    r)�pid�lock_holderzconfiguration changes)�	operation)r3r4r�config_path�configr5Nr��	ua_config)r�INACTIVErkr�NO_ACTIVE_OPERATIONSr
�check_lock_inforr��ACTIVE�	LOCK_HELD�formatr�reboot_cmd_marker_file�
is_present�REBOOTREQUIRED�ENABLE_REBOOT_REQUIRED_TMPL�cfg_pathrVr5r �user_config�
public_config�to_dictr�hasattr�getattr)rV�
userStatus�
status_val�status_desc�lock_pidr��notices_listr��retr�r�rKrKrL�_get_config_statusKs<	���	�r��show_allcCsdt|�jr
t|�}nt|�}|�t|��t��rtj	�
|�|s0dd�|�dg�D�}||d<|S)aReturn status as a dict, using a cache for non-root users

    When unattached, get available resources from the contract service
    to report detailed availability of different resources for this
    machine.

    Write the status-cache when called by root.
    cS� g|]}|�dd�dkr|�qS�r^rSrwrHrKrKrLrM��
�zstatus.<locals>.<listcomp>r2)r�is_attachedr�r�r�r�r�we_are_currently_rootr�status_cache_file�writerx)rVr�r��available_servicesrKrKrLr)vs
	

�r)r��entitlement_namecCs`|D]'}|�d�|kr)|�d�rdnd|�di��d�rdnd|�di�d�Sqddid�S)	z0Extract information from the entitlements array.�typer(rSrR�obligations�enableByDefaultr�)r(�auto_enabledr�rw)r�r�rCrKrKrL�_get_entitlement_information�s��

��r��tokenc
Csd}t�t�}zt||�}Wntjy+}zt|d�r%|jdkr%t���|�d}~ww|�	di�}|�	di�}|�
|�	dd�|�	d	d�|�	d
d�|�	dg�d�|�	d	d�|�	d�|�	d
d�|�	d
g�d�dd��t�t
j�}	|�	d�r�|�	d�|d<|d}
|
|	}|��dkr�tjj|dd|
�t�d�}tj|j|jd�t�tjd|jd�d}|�	d�r�|�	d�|d<|d}
|	|
}|��dkr�tjj|dd|
�t�d�}tj|j|jd�t�tjd|jd�d}t|�}dd�t|dd�d�D�}|�	dg�}|D]B}|�	d	d�}zt||d �}Wntj�y'Y�qwt ||�}|d!�!|�	d"|j�|j"|d#|d$|j|v�rGd%nd&d'���q|d!j#d(d�d�t |d)�}|d#�rr|d*�	d+�}|�rr||dd,<|�
t$|��|�s�d-d�|�	d!g�D�}||d!<||fS).z�Get a status dictionary based on a token.

    Returns a tuple with the status dictionary and an integer value - 0 for
    success, 1 for failure
    rrTi�Nrp�accountInfor9r7r'rrr;)r9r'r:r;rsr>T)r6r=r@rtr0r6)�contract_id�date)�	error_msg�
error_code�
�rur/cSsg|]
}|ds|d�qS)r^r'rKryrKrKrLrM�s��z#simulate_status.<locals>.<listcomp>cSs|dS)Nr'rKr}rKrKrLr�sz!simulate_status.<locals>.<lambda>r��resourceEntitlementsr�r2r�r(r�rSrR)r'r*r(r�r^cSr{r|rwr}rKrKrLrr�r�r�r�r<cSr�r�rwrHrKrKrLrMr�)%r�r�r�rr�ContractAPIErrorr�rT�AttachInvalidTokenErrorrxr�r�nowr�utc�
total_secondsr�E_ATTACH_FORBIDDEN_EXPIREDr��strftimer�event�errorrGr'�info�STATUS_TOKEN_NOT_VALID�E_ATTACH_FORBIDDEN_NOT_YETrr�rr�r�r�r*r�r�)rVr�r�r�r��contract_information�e�
contract_info�account_infor��expiration_datetime�deltarU�effective_datetimer�rZr�rzr�rO�entitlement_informationr�r�r�rKrKrL�simulate_status�s�
��



�

����

��

�������


�r��stringcCstj��rt�||�S|S)z=Return colorized string if using a tty, else original string.)�sys�stdout�isatty�STATUS_HUMANIZE_COLORIZErx)r�rKrKrL�for_human_colorized s
���r��commandscCstd}|D]}|r|d7}|d�|�7}qd�tj|tddd��}d|vr*d	}d
}nd}d}d
jtj|||tjd�S)Nr7z && � z \
�z  )�width�subsequent_indentr�z{
  z
}z{ z }z%{color}{prefix}{content}{suffix}{end})�color�prefix�content�suffix�end)�join�textwrap�wraprr�r"�DISABLEGREY�ENDC)r�r��cmd�wrapped_contentr�r�rKrKrL�colorize_commands)s,
���r�column_data�headercsjg}|r	|�|�tdd�|D��}|dkr)d�|��|��fdd�|D��|S|�dd�|D��|S)z�Return a list of content lines to print to console for a section

    Content lines will be center-aligned based on max value length of first
    column.
    cSsg|]}t|d��qS)r)�len�rI�pairrKrKrLrMPsz.get_section_column_content.<locals>.<listcomp>rz{{:>{}}}: {{}}csg|]}�j|��qSrK)r�r
��templaterKrLrMSscSsg|]}|d�qS)r�rKr
rKrKrLrMVs)r��maxr��extend)rrr��template_lengthrKrrL�get_section_column_contentEs

�rcCs8|durtjSz|��}Wn	tyYnw|�d�S)Nz%c %Z)r�STATUS_CONTRACT_EXPIRES_UNKNOWN�
astimezone�	Exceptionr�)r0rKrKrL�format_expiresZs�
rc
Cs4|�d�s�|�d�r<|�dd�stjStjtjtjtjtjtj	d�g}|�dg�D]
}|�
tjd)i|���q)d�|�S|�dd�sGtjg}n@tjtjtjtj	d�g}|�dg�D]-}|�d�}|rd|n|�d	d
�}|�d�dkrttj
ntj}|�
tj|�d
d
�||d��qY|�d�}|r�|�
tj�|�|�|�d�r�|�
dtj�t|�di����D]
\}}	|�
d�||	��q�|s�|�d
tjg�|�d
tjjg�t��tjjkr�|�d
tjg�d�|�Sg}
d}|�dd�s�tjg}n�tg}|�dg�D]�}|�dd
�}
|�d�}|�r|n|�d	d
�}|�d
d
�t|
�t|�dd
��|d�}|�dd�}|du�rD|�dd�}|du�rD|
�
|�|�d�}|�rZ|�sZd}d�|d
�|d
<|�
tjd)i|���|�r�|�r�t|���D]4\}\}}|t |�dk�r�dnd}|�
t!j||�d
�t|�dd
��t|�dd
��|�d	d
�d���qqq�|�r�|�
d
�|�
tj"�|�d��s�t |
�dk�r�|�
d
�|�
tj�|�d�}|�r�|�|�t |
�dk�r�|�|
�|�d��r
|�
dtj�t|�di����D]\}}	|�
d�||	���q�|�
d
�|�s%|�r|�
tj#�n|�
tj�|�
tj$jdd ��g}|�d!i��d
d"�}|�rF|�
tj%|f�|�d#i��d
d"�}|�r[|�
tj&|f�|�d$d�d%k�r�|�
tj't(|�d&��f�|�d#i��d'd"�}|�
tj)t|�f�|�r�|�
d
�|�t*|d(��d�|�S)*z&Format status dict for tabular output.r.r@r2N)r'r^r(r�r*r�)r'r^r*r]r*r7r^rSr'rr5z{}: {}Fr(r)r&r`rUraTz{}*r�u├u└)�markerr'r(r)r*rzpro enable <service>)�commandr=�unknownr6r1�freer0r<)rrK)+rxr�STATUS_NO_SERVICES_AVAILABLE�STATUS_SIMULATED_TMPLr��STATUS_SERVICE�STATUS_AVAILABLE�STATUS_ENTITLED�STATUS_AUTO_ENABLED�STATUS_DESCRIPTIONr�r��STATUS_UNATTACHED_TMPL�STANDALONE_YES�
STANDALONE_NO�STATUS_NOTICESr�STATUS_FEATURESr�ri�STATUS_ALL_HINT�E_UNATTACHEDrGrr�r�r��)LIVEPATCH_KERNEL_NOT_SUPPORTED_UNATTACHED�
STATUS_HEADERr��STATUS_TMPL�	enumerater	�VARIANT_STATUS_TMPL�STATUS_SERVICE_HAS_VARIANTS�STATUS_ALL_HINT_WITH_VARIANTS�"STATUS_FOOTER_ENABLE_SERVICES_WITH�STATUS_FOOTER_ACCOUNT�STATUS_FOOTER_SUBSCRIPTION�STATUS_FOOTER_VALID_UNTILr�STATUS_FOOTER_SUPPORT_LEVELr)r)r�r�rJr�r*r^rr�rk�service_warnings�has_variantsrnr(�fmt_argsr`�warning_messagera�idx�_�variantr�pairs�account_name�
contract_namer<rKrKrL�format_tabulards4

��	

��
�
���
��


��


�
�

��




�
�
���





�������

r>c
	Cs�t|�}d}t�}||d<|D](}|d|ks|�d�|kr7z
t||dd�}Wn
tjy2Yqw|}nq|durBtj|d��t|�jr\t	|i|�}|d}|d|d<||d<n|dret
jj}	nt
j
j}	|	|d<|j|d	<|S)
z�Return help information from an uaclient service as a dict

    :param name: Name of the service for which to return help data.

    :raises: UbuntuProError when no help is available.
    Nr'r�r�)r'r)r(r^�help)rrrxrrr��
NoHelpContentrr�rWrr�rkre�	help_info)
rVr'r��
help_resource�
response_dictrz�help_entrn�
status_msgr^rKrKrLr? s6��



r?)F)N)pr��loggingr�r�collectionsrrr�typingrrrrr	�uaclientr
rrr
rrr�(uaclient.api.u.pro.status.is_attached.v1r�uaclient.configrr�uaclient.contractrr�uaclient.defaultsrr�uaclient.entitlementsr�(uaclient.entitlements.entitlement_statusrrrr�uaclient.filesrrrr �uaclient.files.noticesr!�uaclient.messagesr"�get_event_loggerr��	getLogger�replace_top_level_logger_name�__name__r��	ESSENTIAL�STANDARD�ADVANCEDr�rk�OKGREEN�STATUS_STATUS_ENABLEDrr��FAIL�STATUS_STATUS_DISABLEDrfr�STATUS_STATUS_INAPPLICABLEre�STATUS_STATUS_UNAVAILABLErh�
WARNINGYELLOW�STATUS_STATUS_WARNING�ENTITLED�STATUS_ENTITLED_ENTITLEDrd�STATUS_ENTITLED_UNENTITLED�STATUS_SUPPORT_ESSENTIAL�STATUS_SUPPORT_STANDARD�STATUS_SUPPORT_ADVANCEDr�r!rr�rr�
STATUS_STATUSr r)r*r,�get_versionr�r�rP�strrWr�r�r��boolr)r��intr�r�rrrr>r?rKrKrKrL�<module>s8$	�������������(�
��������	�
���
������� 

�;G. +��

����
�x	���
� 
=

Spamworldpro Mini