HEX
Server: nginx/1.24.0
System: Linux webserver 6.8.0-87-generic #88-Ubuntu SMP PREEMPT_DYNAMIC Sat Oct 11 09:28:41 UTC 2025 x86_64
User: wpuser (1002)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: //lib/python3/dist-packages/sos/report/plugins/__pycache__/juju.cpython-312.pyc
�

([Qh" ��H�ddlZddlZddlZddlmZmZmZGd�dee�Zy)�N)�Plugin�UbuntuPlugin�	PluginOptc	��eZdZdZdZdZdZdZedde	d�	�ed
de
d�	�ed
de
d�	�edde
d�	�gZdZd�Z
d�Zd�Zy)�Jujua3The Juju plugin is aimed at collecting Juju-related logs,
    configurations, and controller/model state(s).

    Logs and agent configuration information (/var/log/juju and /var/lib/juju)
    is collected by default since these are useful for troubleshooting.

    The Juju state collection is disabled by default and can be enabled with
    the 'juju-state' option. Collecting Juju state is safe in theory, but it
    does act on the live controller(s)/model(s) and is therefore optional.

    The default Juju state collection collects all controllers and models that
    the 'juju-user' (default=ubuntu) has access to.

    Specific controllers or models can be collected using the 'controllers'
    and 'models' options.

    Important: the string list is whitespace delimited, not colon delimited
    (sos plugin standard). This is due to the underlying Juju CLI accepting
    specific models in the format 'controller:model' and whitespaces are not
    allowed in either controller and model names.

    Example: models="controller_a:model_x controller_b:model_y"
    zJuju orchestration tool�juju)�virt�sysmgmt)�
/var/log/juju�
juju-stateFz Include Juju state in the report)�default�val_type�desc�	juju-user�ubuntuzJuju client user.�controllers�z[Collect Juju state for specified controllers. Uses a             whitespace delimited list.�modelszVCollect Juju state for specified models. Uses a whitespace             delimited list.c
��|jd�D]$}|j|�|j|��&dddddddd	d
d�	}|jd�r:|j	�D]'\}}|j|j
|�|�
��)|jd�|jddgd��|jd�r6|jgd��|jd�|jd�n|jd�|jd�sy|jd�}	tj|�|jd�r#|jd�r|jd�y|jd|� �}|d!d"k(rgt!|jd�j#d#��}|r	|d$hk7r|}n5t!t%j&|d%�dj)��}ni}|jd�r?|jd�j#d#�D]}	d&|	�d'�}
|j|
|� ��y|D]e}|j+d(|�d'�|� �}|d!d"k(s�#t%j&|d%�d}
|
D]#}	|	d)}d&|�d*|�d'�}
|j|
|� ��%�gy#t$r|jd|�d��YywxYw)+Nzjuju*�	depenginezdebug/pprof/goroutine?debug=1zdebug/pprof/heap?debug=1�metrics�pubsub�presence�	statepoolz&debug/pprof/juju/state/tracker?debug=1zunits?action=status)	�juju_engine_report�juju_goroutines�juju_heap_profile�juju_metrics�juju_pubsub_report�juju_presence_report�juju_statepool_report�juju_statetracker_report�juju_unit_status�/var/lib/juju/agents)�suggest_filenamez!/var/lib/juju/agents/*/agent.confz/var/log/juju*z/var/lib/juju*T)�	recursive�all_logs)rz
/var/lib/jujuz/var/lib/juju/**/.*z/var/lib/juju/kvmz/var/lib/juju/toolsz/var/log/juju/*.logrrzUser "z4" does not exist, will not collect Juju information.rrzWOptions: controllers, models are mutually exclusive. Will not collect Juju information.zjuju controllers --format=json)�runas�statusr� r�outputzjuju status -m z --format=jsonzjuju models --all -c z
short-name�:)�get_service_names�add_journal�add_service_status�path_exists�items�add_cmd_output�_juju_agent�
add_copy_spec�add_dir_listing�
get_option�add_forbidden_path�pwd�getpwnam�KeyError�	_log_warn�collect_cmd_output�set�split�json�loads�keys�exec_cmd)�self�service�juju_agent_cmds�cmd�	agent_cmd�	juju_user�controllers_json�desired_controllersr�model�command�
controller�models_jsonr�
short_names               �9/usr/lib/python3/dist-packages/sos/report/plugins/juju.py�setupz
Juju.setupRs[���-�-�g�6�	-�G����W�%��#�#�G�,�	-�
#.�>�!;�%�"*�$.�%0�*3� 5�
�����2�3�"1�"7�"7�"9�
���Y��#�#��$�$�Y�/�%(�$��
�	
���>�?�	
�����
��	�	�
�?�?�:�&�
��� �
�

�#�#�$7�8��#�#�$9�:�
���4�5����|�,���O�O�K�0�	�	��L�L��#��?�?�=�)�d�o�o�h�.G��N�N�5�
�
��2�2�,�I�3�
���H�%��*�"%����
�.�4�4�S�9�#��
#�':�r�d�'B�1��!��J�J�/��9�:�%���d�f����K��?�?�8�$�����2�8�8��=�
>��+�E�7�.�A���#�#�G�9�#�=�
>�*�

F�
�"�m�m�+�J�<�~�F�#�,����x�(�A�-�!�Z�Z��H�(=�>�x�H�F�!'�F��%*�<�%8�
�-�j�\��:�,�G,�-� ��+�+�G�9�+�E�
F�

F��W�	��N�N����$5�5�
�
�	�s�2J:�:K�Kc��|jdk(r5|jd�D]!}tjd|�s�||_nd|j�d|��S)Nrr$z$machine-*|controller-*|application-*zjuju-introspect --agent=r*)�
agent_name�listdir�re�search)rCrL�dir_names   rPr3zJuju._juju_agent�sZ���?�?�b� � �L�L�)?�@�
���9�9�C�X�N�&.�D�O��
�
*�$�/�/�):�!�G�9�E�E�c��d}gd�}ddj|��d�}d}|j|||�|j|�|jd�y)Nz/var/lib/juju/agents/*)�sharedsecret�apipassword�oldpassword�
statepasswordz(^\s*(�|z
)\s*:\s*)(.*)z\1*********zjuju controllers)�join�do_path_regex_sub�do_file_private_sub�do_cmd_private_sub)rC�agents_path�protect_keys�
keys_regex�	sub_regexs     rP�postprocz
Juju.postproc�s\��.��
���s�x�x��5�6�m�D�
�"�	����{�J�	�B�� � ��-���� 2�3rXN)�__name__�
__module__�__qualname__�__doc__�
short_desc�plugin_name�profiles�filesr�bool�str�option_listrSrQr3rg�rXrPrrs����0+�J��K�#�H�
�E�	����3�		
�	����$�		
�	����(�		
�	�����		
�)�K�:�J�sF�jF�4rXr)r8r?rU�sos.report.pluginsrrrrrsrXrP�<module>rus&����	�>�>�N4�6�<�N4rX