%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/lib/python3/dist-packages/uaclient/__pycache__/
Upload File :
Create Path :
Current File : //usr/lib/python3/dist-packages/uaclient/__pycache__/config.cpython-312.pyc

�

�ϴfrE��X�ddlZddlZddlZddlmZmZddlmZmZm	Z	ddl
mZmZm
Z
mZmZmZmZmZddlmZmZmZmZmZmZmZmZddlmZddlmZej@ejBe"��Z#dd	d
�Z$dZ%dZ&d
Z'ejP�Z)Gd�d�Z*de+fd�Z,dd�Z-de+fd�Z.y)�N)�	lru_cache�wraps)�Any�Dict�Optional)�apt�event_logger�
exceptions�http�messages�snap�system�util)�APT_NEWS_URL�BASE_CONTRACT_URL�BASE_LIVEPATCH_URL�BASE_SECURITY_URL�CONFIG_DEFAULTS�CONFIG_FIELD_ENVVAR_ALLOWLIST�DEFAULT_CONFIG_FILE�DEFAULT_DATA_DIR)�user_config_file)�	safe_load�name�type)�availableResources�resourceEntitlements�_unset)�
http_proxy�https_proxy�apt_http_proxy�apt_https_proxy�ua_apt_http_proxy�ua_apt_https_proxy�global_apt_http_proxy�global_apt_https_proxy�update_messaging_timer�metering_timer�apt_news�apt_news_url)	�contract_url�data_dir�features�log_file�	log_level�security_url�settings_overrides�	ua_config�
livepatch_urlc	�P�eZdZdZdZdZ			d-deeee	fdee
jdeeddfd	�Ze
defd
��Ze
defd��Ze
defd��Ze
deefd
��Zej$defd��Ze
deefd��Zej$defd��Ze
deefd��Zej$defd��Ze
deefd��Zej$defd��Ze
ed��deefd���Zej$defd��Ze
ed��deefd���Zej$defd��Ze
defd��Zej$defd��Ze
defd��Zej$defd��Ze
defd��Zej$defd ��Ze
defd!��Zej$defd"��Ze
defd#��Zej$defd$��Ze
defd%��Z e j$defd&��Z e
d'��Z!e
d(��Z"e
defd)��Z#e
d*��Z$d+�Z%d,�Z&y).�UAConfig)r#r$)r%r&)r!r"N�cfg�user_config�series�returnc�p�|rd|_||_d|_n1t�|_t	|j�\|_|_|r||_n$	tj
j�|_d|jvrOtjji|j
j��|jd�d��|_||_y#t$rO}tjd|��tjd�t
j�|_Yd}~��d}~wwxYw)�NzError loading user config)�exc_infozUsing default config valuesr2T)� optional_type_errors_become_null)�cfg_pathr6�invalid_keys�get_config_path�parse_configr7r�read�	Exception�LOG�warning�UserConfigData�	from_dict�to_dictr8)�selfr6r7r8�es     �1/usr/lib/python3/dist-packages/uaclient/config.py�__init__zUAConfig.__init__Rs��� �D�M��D�H� $�D��+�-�D�M�*6�t�}�}�*E�'�D�H�d�'��*�D��
E�#3�#?�#?�#D�#D�#F�� ��$�(�(�"�/�>�>�H�H�G�4�#�#�+�+�-�G����+�1F�G�15� I� �D��
�����
E����7�!��D����9�:�#3�#B�#B�#D�� � ��
E�s�#C�	D5�&AD0�0D5c�B�|jjdt�S)Nr+)r6�getr�rIs rKr+zUAConfig.contract_urlu����x�x�|�|�N�,=�>�>�c�B�|jjdt�S)Nr0)r6rNrrOs rKr0zUAConfig.security_urlyrPrQc�B�|jjdt�S)Nr3)r6rNrrOs rKr3zUAConfig.livepatch_url}s���x�x�|�|�O�-?�@�@rQc�.�|jjS�N)r7rrOs rKrzUAConfig.http_proxy�s�����*�*�*rQ�valuec�x�||j_tjj|j�yrU)r7rr�write�rIrVs  rKrzUAConfig.http_proxy�s*��&+����#��$�$�*�*�4�+;�+;�<rQc�.�|jjSrU)r7r rOs rKr zUAConfig.https_proxy�s�����+�+�+rQc�x�||j_tjj|j�yrU)r7r rrXrYs  rKr zUAConfig.https_proxy�s*��',����$��$�$�*�*�4�+;�+;�<rQc�.�|jjSrU)r7r$rOs rKr$zUAConfig.ua_apt_https_proxy�s�����2�2�2rQc�x�||j_tjj|j�yrU)r7r$rrXrYs  rKr$zUAConfig.ua_apt_https_proxy�s*��.3����+��$�$�*�*�4�+;�+;�<rQc�.�|jjSrU)r7r#rOs rKr#zUAConfig.ua_apt_http_proxy�s�����1�1�1rQc�x�||j_tjj|j�yrU)r7r#rrXrYs  rKr#zUAConfig.ua_apt_http_proxy�s*��-2����*��$�$�*�*�4�+;�+;�<rQ)�maxsizec���|jj}|r|S|jj}|r6tj	t
jjdd���|Sy)Nr!r%��old�new)r7r%r!�event�infor�WARNING_DEPRECATED_FIELD�format�rI�
global_val�old_apt_vals   rKr%zUAConfig.global_apt_http_proxy�sh���%�%�;�;�
�����&�&�5�5����J�J��1�1�8�8�(�.E�9��
�
��rQc���||j_d|j_tjjj�tjj|j�yrU)r7r%r!r5�fget�cache_clearrrXrYs  rKr%zUAConfig.global_apt_http_proxy�sP��16����.�*.����'��&�&�+�+�7�7�9��$�$�*�*�4�+;�+;�<rQc���|jj}|r|S|jj}|r6tj	t
jjdd���|Sy)Nr"r&rb)r7r&r"rerfrrgrhris   rKr&zUAConfig.global_apt_https_proxy�sh���%�%�<�<�
�����&�&�6�6����J�J��1�1�8�8�)�/G�9��
�
��rQc���||j_d|j_tjjj�tjj|j�yrU)r7r&r"r5rmrnrrXrYs  rKr&zUAConfig.global_apt_https_proxy�sP��27����/�+/����(��'�'�,�,�8�8�:��$�$�*�*�4�+;�+;�<rQc�8�|jj}|�y|S)Ni`T)r7r'�rI�vals  rKr'zUAConfig.update_messaging_timer�s �����5�5���;���
rQc�x�||j_tjj|j�yrU)r7r'rrXrYs  rKr'zUAConfig.update_messaging_timer�s*��27����/��$�$�*�*�4�+;�+;�<rQc�8�|jj}|�y|S)Ni@8)r7r(rrs  rKr(zUAConfig.metering_timer�s �����-�-���;���
rQc�x�||j_tjj|j�yrU)r7r(rrXrYs  rKr(zUAConfig.metering_timer�s*��*/����'��$�$�*�*�4�+;�+;�<rQc�8�|jj}|�y|S)NF)r7�poll_for_pro_licenserrs  rKrxzUAConfig.poll_for_pro_license�s"��
���3�3���;���
rQc�x�||j_tjj|j�yrU)r7rxrrXrYs  rKrxzUAConfig.poll_for_pro_license�s*��05����-��$�$�*�*�4�+;�+;�<rQc�8�|jj}|�y|S)NiX)r7�polling_error_retry_delayrrs  rKr{z"UAConfig.polling_error_retry_delay�s"�����8�8���;���
rQc�x�||j_tjj|j�yrU)r7r{rrXrYs  rKr{z"UAConfig.polling_error_retry_delays*��5:����2��$�$�*�*�4�+;�+;�<rQc�8�|jj}|�y|S)NT)r7r)rrs  rKr)zUAConfig.apt_news
s �����'�'���;���
rQc�x�||j_tjj|j�yrU)r7r)rrXrYs  rKr)zUAConfig.apt_newss*��$)����!��$�$�*�*�4�+;�+;�<rQc�B�|jj}|�tS|SrU)r7r*rrrs  rKr*zUAConfig.apt_news_urls#�����+�+���;����
rQc�x�||j_tjj|j�yrU)r7r*rrXrYs  rKr*zUAConfig.apt_news_urls*��(-����%��$�$�*�*�4�+;�+;�<rQc�B�|jjdt�S)Nr,)r6rNrrOs rKr,zUAConfig.data_dir"s���x�x�|�|�J�(8�9�9rQc��|jjdd�}	tt|j	��S#t
$rtjcYSwxYw)Nr/�DEBUG)r6rN�getattr�logging�upper�AttributeErrorr�)rIr/s  rKr/zUAConfig.log_level&sH���H�H�L�L��g�6�	�	!��7�I�O�O�$5�6�6���	!��=�=� �	!�s�<�A�Ac�H�|jjdtd�S)Nr.)r6rNrrOs rKr.zUAConfig.log_file.s���x�x�|�|�J��
�(C�D�DrQc��|jjd�}|r(t|t�r|Stjd|�iS)z>Return a dictionary of any features provided in uaclient.conf.r-zDUnexpected uaclient.conf features value. Expected dict, but found %s)r6rN�
isinstance�dictrDrE)rIr-s  rKr-zUAConfig.features2sC���8�8�<�<�
�+����(�D�)������3���
�	rQc�<�dD]S}t||�}|�tjd|��(t|t�r|dks�>tj||���|js|jr,|js|jrtj��tjd|jtj�tjd|jtj�tjd|jtj�tjd|jtj�tjd|j tj"�tjd|j$tj&�|js|jrDt)j*|j|jt(j,j.�n[|js|jrCt)j*|j|jt(j,j0�g}t3j4�r�t3j6|j |j$�|j s#t3j8t2j:�s/|j$s4t3j8t2j<�r|j?d�ddl m!}dd	l"m#}||�jH}tKd
�|D��}|r�|jM|j |j$�|j s|j9|j:�s'|j$s,|j9|j<�r|j?d�tO|�dkDr;djQ|�}tStTjVjY|�
��yy)N)r'r(z1No config set for %s, default value will be used.r��keyrVr�httpsr
)�	livepatch)�_enabled_servicesc3�@K�|]}|jdk(s�|���y�w)r�N)r)�.0�ents  rK�	<genexpr>z*UAConfig.process_config.<locals>.<genexpr>�s ���� 
��s�x�x�;�/F�C� 
�s��r�z, )�services)-r�rD�debugr��intr
�InvalidPosIntConfigValuer%r&r#r$�InvalidProxyCombinationConfigr�validate_proxy�PROXY_VALIDATION_APT_HTTP_URL�PROXY_VALIDATION_APT_HTTPS_URLr�PROXY_VALIDATION_SNAP_HTTP_URLr �PROXY_VALIDATION_SNAP_HTTPS_URLr�setup_apt_proxy�
AptProxyScope�GLOBAL�UACLIENTr
�is_snapd_installed�configure_snap_proxy�get_config_option_value�HTTP_PROXY_OPTION�HTTPS_PROXY_OPTION�append�uaclientr��-uaclient.api.u.pro.status.enabled_services.v1r��enabled_services�any�configure_livepatch_proxy�len�join�printr�!PROXY_DETECTED_BUT_NOT_CONFIGUREDrh)	rI�proprV�services_with_proxiesr�r�r��livepatch_enabledr�s	         rK�process_configzUAConfig.process_configAsP��
�	�D��D�$�'�E��}��	�	�G��� ��s�+�u�q�y� �9�9��E���	�
�&�&�$�*E�*E��"�"�d�&=�&=��:�:�<�<������&�&��.�.�	
�
	
�����'�'��/�/�	
�
	
����D�*�*�D�,N�,N�	
�	
�����#�#��/�/�	
�
	
����D�O�O�T�%H�%H�	
�	
����T�%�%�t�'K�'K�	
��%�%��)D�)D�����*�*��+�+��!�!�(�(�
�
�
#�
#�t�'>�'>�����&�&��'�'��!�!�*�*�
�!#���"�"�$��%�%�d�o�o�t�7G�7G�H��O�O��0�0��1G�1G�H��$�$��0�0��1H�1H�I�%�,�,�V�4�&�	
�-�T�2�C�C��� 
�+� 
�
����/�/�����!1�!1�
��O�O��5�5��/�/���$�$��5�5��0�0��&�,�,�[�9��$�%��)��y�y�!6�7�H���:�:�A�A�%�B��
�*rQc�B�|j�0t|j�D]}tjd|��d|jvrUtjd�tjd�tjd�tjd�yy)Nz&Ignoring invalid uaclient.conf key: %sr2z)legacy "ua_config" found in uaclient.confzPlease do the following:z�  1. run `sudo pro config set field=value` for each field/value pair present under "ua_config" in /etc/ubuntu-advantage/uaclient.confzQ  2. Delete "ua_config" and all sub-fields in /etc/ubuntu-advantage/uaclient.conf)r?�sortedrDrEr6)rI�invalid_keys  rK�warn_about_invalid_keysz UAConfig.warn_about_invalid_keys�s������(�%�d�&7�&7�8�
�����<�k��
��$�(�(�"�
�K�K�C�D��K�K�2�3��K�K�7�
�

�K�K�7�
�#rQ)NNN)'�__name__�
__module__�__qualname__�ua_scoped_proxy_options�global_scoped_proxy_options�&deprecated_global_scoped_proxy_optionsrr�strrrrFrL�propertyr+r0r3r�setterr r$r#rr%r&r�r'r(�boolrxr{r)r*r,r/r.r-r�r��rQrKr5r5Gs&��I��#��.�*�)-�AE� $�	!�
�d�3��8�n�
%�!��.�=�=�>�!���
�	!�

�!�F�?�c�?��?��?�c�?��?��A�s�A��A��+�H�S�M�+��+����=��=��=��,�X�c�]�,��,����=��=��=��3�H�S�M�3��3����=��=��=��2�8�C�=�2��2����=�s�=��=���t��
�x��}�
���
��!�!�=�3�=�"�=���t��
���
�
���
��"�"�=�C�=�#�=��������"�"�=�C�=�#�=����������=�C�=��=���d����� � �=�$�=�!�=���3�����%�%�=�s�=�&�=���$�����_�_�=�d�=��=���c�������=�#�=��=��:��:��!��!��E�#�E��E�����h�TrQr5r9c�T�tjjd�}|r|StS)z4Get config path to be used when loading config dict.�UA_CONFIG_FILE)�os�environrNr)�config_files rKr@r@�s$���*�*�.�.�!1�2�K�����rQc�`�tjt�}|s
t�}tj	d|�t
jj|�r-|jttj|���i}t
jj�D]�\}}|j�}|jd�s�(|dd}|jd�r|dd}|j!d�rTt
jj|�rttj|��}nt#j$|���d	|vr||i|d	<��||d	|<��|t&vs��|||<��|j|�d
|vr%t
jj)|d
�|d
<dD]4}t+j,||�r�t#j.|||���t1|j3��j5t6�}|D]}|j9|��||fS)
a�Parse known Pro config file

    Attempt to find configuration in cwd and fallback to DEFAULT_CONFIG_FILE.
    Any missing configuration keys will be set to CONFIG_DEFAULTS.

    Values are overridden by any environment variable with prefix 'UA_'.

    @param config_path: Fullpath to pro configfile. If unspecified, use
        DEFAULT_CONFIG_FILE.

    @return: Dict of configuration values.
    z%Using client configuration file at %s�ua_�N�	features_�	�yaml)�filepathr-r,)r+r0r�)�copyrr@rDr�r��path�exists�updaterr�	load_filer��items�lower�
startswith�endswithr
�InvalidFeatureYamlConfigValuer�
expanduserr�is_service_url�InvalidURLConfigValue�set�keys�
difference�VALID_UA_CONFIG_KEYS�pop)	�config_pathr6�env_keysr�rV�
field_name�feature_field_namer?r�s	         rKrArA�s����)�)�O�
$�C��%�'���I�I�5�{�C�	�w�w�~�~�k�"��
�
�9�V�-�-�k�:�;�<��H��j�j�&�&�(�-�
��U��i�i�k���>�>�%� ��Q�R��J��$�$�[�1�%/���^�"��>�>�&�)��w�w�~�~�e�,� )�&�*:�*:�5�*A� B��(�F�F�%*����S�(�'9�5�&A�C�
�O�:?�C�
�O�$6�7��5�5�',���$�5-�6�J�J�x���S���'�'�,�,�S��_�=��J��/�L���"�"�3�s�8�,��2�2�s�#�c�(�K�K�L��s�x�x�z�?�-�-�.B�C�L�#������������rQ�override_keyc����fd�}|S)a�Decorator used to override function return by config settings.

    To identify if we should override the function return, we check
    if the config object has the expected override key, we use it
    has, we will use the key value as the function return. Otherwise
    we will call the function normally.

    @param override_key: key to be looked for in the settings_override
     entry in the config dict. If that key is present, we will return
     its value as the function return.
    c�2���t����fd��}|S)Nc���t�\}}|jdi�j�t�}|tk7r�dk(r|dfS|S��S)Nr1�
cloud_type)rArN�UNSET_SETTINGS_OVERRIDE_KEY)r6�_�value_override�fr�s   ��rK�new_fz>apply_config_settings_override.<locals>.wrapper.<locals>.new_fs[���!�^�F�C�� �W�W�%9�2�>�B�B��9��N��!<�<��<�/�*�D�1�1�%�%��3�JrQ)r)r�r�r�s` �rK�wrapperz/apply_config_settings_override.<locals>.wrappers ���	�q��	�
�	��rQr�)r�r�s` rK�apply_config_settings_overrider�	s����"�NrQrU)/r�r�r��	functoolsrr�typingrrrr�rr	r
rrr
rr�uaclient.defaultsrrrrrrrr�uaclient.filesr�
uaclient.yamlr�	getLogger�replace_top_level_logger_namer�rD�MERGE_ID_KEY_MAPr��UA_CONFIGURABLE_KEYSr��get_event_loggerrer5r�r@rAr�r�rQrK�<module>r�s�����	�&�&�&�	�	�	�	�	�	�,�#��g���:��:�:�8�D�E��!�"���'��
�� 
��	&��%�%�'��w�w�t���<�~��rQ

Zerion Mini Shell 1.0