관리-도구
편집 파일: sosnode.cpython-39.pyc
a -�_g͗ � @ 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 <