File: //lib/python3.6/site-packages/sos/collector/__pycache__/sosnode.cpython-36.opt-1.pyc
3
��'ju� � @ 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_persistZocZ saltstackZjujuc @ s� e Zd Zdjdd�Zedd� �Zdd� Zd d
� Zdd� Zed
d� �Z edd� �Z
dd� Zdd� Zdd� Z
dd� Zdkdd�Zedd� �Zdd� Zd d!� Zd"d#� Zd$d%� Zd&d'� Zd(d)� Zd*d+� Zd,d-� Zd.d/� Zdld0d1�Zd2d3� Zd4d5� Zd6d7� Zd8d9� Zdmd<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� Z4dhdi� Z5dS )n�SosNodeNTc C s |j � | _|| _|d | _| j� |d | _|d | _|d | _|d | _| jj | _ | jj
| _
d| _d | _d | _
d | _i | _i | _|p�| jj| _| jj r�| jj r�| j| j_|r�|| j_d | _d| _d| _g | _d g g g g |d d�| _d | _tjd
�| _tjd�| _| j|�| _ | j j!�r,| j j!dk| _y| j j"| j� W n6 t#k
�rt } z| j$d
|� �� � W Y d d }~X nX | j%� | _d | _&| j j| _| j�r�| jj'�r�d}| j(�r�|�r�| j�s�| j j)� d S | j�r�| j*� �r�d| j_+| jj+�r�| j,� | j-� 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_policy�_sudo_binaryZno_local� connected�
disconnect�check_in_container�
containerized�create_sos_container�_load_sos_info)�selfr r r) Z
local_sudoZ
load_facts�err� rA �/usr/lib/python3.6/sosnode.py�__init__, st
zSosNode.__init__c C s | j r| j jS dS )NT)r4 r9 )r? rA rA rB r9 r s zSosNode.connectedc C s | j j� dS )zDWrapper to close the remote session via our transport agent
N)r4 r: )r? rA rA rB r: y s zSosNode.disconnectc C st | j dkrd| _t| j |�S | jjtkr<t| jj | j |�S | jjdkrh| jd| 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
� localhost� 127.0.0.1T�autoz4Connection failed: unknown or unsupported transport )rD rE ) r r r r � transport�
TRANSPORTSr6 r
r )r? r rA rA rB r3 ~ 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 sp | j sj| jrtjj� | _ nP| jd�}|d dkrjx8|d jd�D ]&}|sJq@|jd�}|d | j |d <