U
    -_gL"                     @   s>   d dl Zd dlmZmZ G dd deZG dd deeZdS )    N)PluginRedHatPluginc                   @   s   e Zd ZdZdZdZdZdZdZe	j
edZe	j
edZd	Ze	j
eeZe	j
ed
Ze	j
edZeefZdd Zdd Zdd Zdd Zdd Zdd ZdS )OpenShiftOriginzOpenShift OriginoriginN)Z	openshiftz/etc/origin/masterz/etc/origin/nodezmaster-config.yamlz
master.envznode-config.yamlznode.kubeconfigpodsc                 C   s   |  | jS )zDetermine if we are on a master)path_exists
master_cfgself r   ;/usr/lib/python3/dist-packages/sos/report/plugins/origin.py	is_master>   s    zOpenShiftOrigin.is_masterc                 C   s   |  | jS )zDetermine if we are on a node)r   node_cfgr	   r   r   r   is_nodeB   s    zOpenShiftOrigin.is_nodec                 C   s   |  | | jdS )z*Determine if we are on a node running etcdz	etcd.yaml)r   	path_joinstatic_pod_dirr	   r   r   r   is_static_etcdF   s    zOpenShiftOrigin.is_static_etcdc                 C   s   |  | jS )z*Determine if a node is running static pods)r   r   r	   r   r   r   is_static_pod_compatibleK   s    z(OpenShiftOrigin.is_static_pod_compatiblec                    s  |  | jd| j }|  | jd}|  | jdd}|  | jd}|  | jd}d|  d}|  r| | j| j|  | jd	g |  r| |  | j	d
 | 
| d| dg |  r| 
| d dddg}| 
 fdd|D  dddg}| 
 fdd|D  dddddg}	| 
 fdd|	D  |  sX| jdddgd  |   d!}
|
d"  D ]}| 
  d#|  qt|  r| | j| j|||||  | jd	|  | jd$|  | jd%g	 | jd&d  d S )'Nz
bootstrap-zbootstrap.kubeconfigZcerts*zclient-ca.crtzadmin.kubeconfigzoc --config=zmaster-logsz*.crtz*.yamlz api apiz controllers controllersz
 etcd etcdzadm top imageszadm top imagestreamszadm top nodesc                    s   g | ]}  d | qS ) r   ).0ZsubcmdZoc_cmd_adminr   r   
<listcomp>   s    z)OpenShiftOrigin.setup.<locals>.<listcomp>Z
hostsubnetZclusternetworkZnetnamespacesc                    s   g | ]}  d | qS )z get -o json r   )r   Zjcmdr   r   r   r      s    defaultzopenshift-web-consolez openshift-ansible-service-brokerzopenshift-sdnzopenshift-consolec                    s   g | ]}  d | qS )z7 get -o json deploymentconfig,deployment,daemonsets -n r   )r   nr   r   r   r      s   zatomic-openshift-masterzatomic-openshift-master-apiz#atomic-openshift-master-controllers)Zunitsz get pod -o name -n defaultoutputz logs -n default zresolv.confznode-dnsmasq.confzatomic-openshift-node)r   node_base_dirnode_cfg_filemaster_base_dirr   Zadd_copy_specr   
master_envr   r   Zadd_cmd_outputr   Zadd_journalZexec_cmd
splitlinesr   r   node_kubeconfig)r
   Zbstrap_node_cfgZbstrap_kubeconfigZ
node_certsZnode_client_caZ	admin_cfgZstatic_pod_logs_cmdZsubcmdsZjcmdsZnmspsr   Zpodr   r   r   setupO   s    



zOpenShiftOrigin.setupc                 C   s&   d}|  d|d | | jdd d S )Nzq(?P<var>{\s*"name":\s*[^,]*(pass|pwd|key|token|cred|secret|PASS|PWD|KEY|TOKEN|CRED|SECRET)[^,]*,\s*"value":)[^}]*zoc*jsonz\g<var> "********"z#(bindPassword|clientSecret):\s*(.*)z\1:"********")Zdo_cmd_output_subZdo_file_subr   )r
   Z
env_regexpr   r   r   postproc   s    
zOpenShiftOrigin.postproc)__name__
__module____qualname__
short_descZplugin_namefilesZprofilesr   r   ospathjoinr   r   r   r   r!   r   r   r   r   r   r"   r#   r   r   r   r   r   #   s&   
mr   c                   @   s   e Zd ZdZdZdS )AtomicOpenShiftz3OpenShift Enterprise / OpenShift Container Platform)zatomic-openshiftN)r$   r%   r&   r'   Zpackagesr   r   r   r   r,      s   r,   )os.pathr)   Zsos.report.pluginsr   r   r   r,   r   r   r   r   <module>   s    0