File: //lib/python3.9/site-packages/sos/collector/__pycache__/sosnode.cpython-39.opt-1.pyc
a
\��h͗ � @ s� d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl m
Z
d dlmZ d dl
mZ d dlmZ d dlmZ d d lmZ d d
lmZmZmZmZ d dlmZ eeeeed�ZG d
d� d�ZdS )� N)�quote)�load)�
InitSystem)�JujuSSH)�SSHControlPersist)�LocalTransport)�OCTransport)�SaltStackMaster)�CommandTimeoutException�ConnectionException�UnsupportedHostException�InvalidTransportException)�sos_parse_version)�localZcontrol_persist�ocZ saltstackZjujuc @ s� e Zd Zdhdd�Zedd� �Zdd� Zd d
� Zdd� Zed
d� �Z dd� Z
dd� Zdd� Zdd� Z
didd�Zedd� �Zdd� Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zdjd.d/�Zd0d1� Zd2d3� Zd4d5� Zd6d7� Zdkd:d;�Zd<d=� Zd>d?� Z d@dA� Z!dBdC� Z"dDdE� Z#dFdG� Z$dHdI� Z%dJdK� Z&dLdM� Z'dNdO� Z(dPdQ� Z)dRdS� Z*dTdU� Z+dVdW� Z,dXdY� Z-dZd[� Z.d\d]� Z/d^d_� Z0d`da� Z1dbdc� Z2ddde� Z3dfdg� Z4dS )l�SosNodeNTc
C s� |� � | _|| _|d | _| �� |d | _|d | _|d | _|d | _| jj | _ | jj
| _
d| _d | _d | _
d | _i | _i | _|p�| jj| _| jjs�| jjs�| j| j_|r�|| j_d | _d| _d| _g | _d g g g g |d d�| _d | _t�d
�| _t�d�| _| �|�| _ | j j!�r(| j j!dk| _z| j �"| j� W n8 t#�yr } z| �$d
|� �� � W Y d }~n
d }~0 0 | �%� | _| j j| _| j�r�| jj&�r�d}| j'�r�|�r�| j�s�| j �(� d S | j�r�| �)� �r�d| j_*| jj*�r�| �+� | �,� d S )NZcmdlineopts�tmpdir�hostlen� need_sudo�sos_optionsF�sos_cmd)�version�enabled�disabled�options�presetsr � sosreportZsosZsos_ui�rootzUnable to open remote session: )-�strip�address�commons�opts�_assign_config_optsr r r r �node_config_file�inherit_config_filer �host�cluster�hostname�sos_env_vars� _env_vars�password� _passwordZ
nopasswd_sudoZsudo_pw�sos_path� retrievedZhash_retrieved� file_list�sos_info�sos_bin�loggingZ getLogger�soslog�ui_log�_load_remote_transport�
_transportZdefault_userZconnect� Exception� log_error�determine_host_policyZno_local� connected�
disconnect�check_in_container�
containerized�create_sos_container�_load_sos_info)�selfr r r* Z
local_sudoZ
load_facts�err� rA �9/usr/lib/python3.9/site-packages/sos/collector/sosnode.py�__init__, st
�
zSosNode.__init__c C s | j r| j jS dS )NT)r5 r9 �r? rA rA rB r9 q s zSosNode.connectedc C s | j �� dS )zDWrapper to close the remote session via our transport agent
N)r5 r: rD rA rA rB r: x s zSosNode.disconnectc C st | j dv rd| _t| j |�S | jjtv r<t| jj | j |�S | jjdkrh| �d| jj� �� t| jj��t| j |�S )z�Determine the type of remote transport to load for this node, then
return an instantiated instance of that transport
)� localhostz 127.0.0.1T�autoz4Connection failed: unknown or unsupported transport ) r r r r! � transport�
TRANSPORTSr7 r
r )r? r rA rA rB r4 } s
��zSosNode._load_remote_transportc C s | j d| jd � ��d|� �S )N�<� z : )� _hostnamer �r? �msgrA rA rB �_fmt_msg� s zSosNode._fmt_msgc C sl | j sf| jrtj�� | _ nL| �d�}|d dkrf|d �d�D ]&}|sHq>|�d�}|d | j |d <