Current File : //usr/lib/python3/dist-packages/sos/report/plugins/__pycache__/juju.cpython-312.pyc |
�
-�_g� � �@ � d dl Z d dlZd dlmZmZmZ G d� dee� Zy)� N)�Plugin�UbuntuPlugin� PluginOptc � � e Zd ZdZdZdZdZdZ edde d� � ed
de
d� � ed
de
d� � edde
d� � gZd� Zd� Z
y)�Jujua3 The 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 � � | j d� D ]$ }| j |� | j |� �& | j g d�� | j d� | j ddgd�� | j
d� r%| j g d �� | j d
� n| j d� | j
d� sy | j
d
� } t j |� | j
d� r#| j
d� r| j d� y | j d|�� }|d dk( rgt | j
d� j d� � }|r |dhk7 r|}n5t t j |d � d j# � � }ni }| j
d� r?| j
d� j d� D ] }d|� d�}| j ||�� � y |D ]e }| j% d|� d�|�� } | d dk( s�#t j | d � d }
|
D ]# }|d }d|� d|� d�}| j ||�� �% �g y # t $ r | j d|� d�� Y y w xY w)Nzjuju*)
�juju_engine_report�juju_goroutines�juju_heap_profile�juju_leases�juju_metrics�juju_pubsub_report�juju_presence_report�juju_statepool_report�juju_statetracker_report�juju_unit_statusz!/var/lib/juju/agents/*/agent.confz/var/log/juju*z/var/lib/juju*T)� recursive�all_logs)r z
/var/lib/jujuz/var/lib/juju/**/.*z/var/lib/juju/kvmz/var/log/juju/*.logr r zUser "z4" does not exist, will not collect Juju information.r r zWOptions: 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�add_cmd_output�
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_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.setupO s� � � �-�-�g�6� -�G����W�%��#�#�G�,� -�
���
� �
���>�?�
�����
� � � �
�?�?�:�&�
��� �
�
�#�#�$7�8�
���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 �I% �%J�Jc � � d}g d�}ddj |� � d�}d}| j |||� | j |� | j d� 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)r: �agents_path�protect_keys�
keys_regex� sub_regexs rD �postprocz
Juju.postproc� s\ � �.��
�� �s�x�x��5�6�m�D�
�"� ����{�J� �B�� � ��-���� 2�3� N)�__name__�
__module__�__qualname__�__doc__�
short_desc�plugin_name�profiles�filesr �bool�str�option_listrE rT � rU rD r r s� � ��0 +�J��K�#�H�
�E� ����3�
� ����$�
� ����(�
� �����
�)�K�:kF�Z4rU r )r/ r6 �sos.report.pluginsr r r r ra rU rD �<module>rc s# �� � � >� >�{4�6�<� {4rU