o
    O6ufL"  ã                   @   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)Ú	openshiftz/etc/origin/masterz/etc/origin/nodezmaster-config.yamlz
master.envznode-config.yamlznode.kubeconfigÚpodsc                 C   ó   |   | 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>   ó   zOpenShiftOrigin.is_masterc                 C   r   )zDetermine if we are on a node)r	   Únode_cfgr   r   r   r   Úis_nodeB   r   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   r   )z*Determine if a node is running static pods)r	   r   r   r   r   r   Úis_static_pod_compatibleK   r   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¡ |  ¡ rh|  
|› d�¡ g d¢}|  
‡ fdd„|D ƒ¡ g d¢}|  
‡ fdd„|D ƒ¡ g d¢}	|  
‡ fdd„|	D ƒ¡ |  ¡ s¤| jg d¢d� |  ˆ › d�¡}
|
d  ¡ D ]}|  
ˆ › d|› �¡ q²|  ¡ rê|  | j| j|||||   | jd	¡|   | jd¡|   | jd¡g	¡ | jdd� d S d S )Nz
bootstrap-zbootstrap.kubeconfigÚcertsÚ*zclient-ca.crtzadmin.kubeconfigzoc --config=zmaster-logsz*.crtz*.yamlz api apiz controllers controllersz
 etcd etcd)zadm top imageszadm top imagestreamszadm top nodesc                    ó   g | ]	}ˆ › d |› �‘qS )ú r   )Ú.0Úsubcmd©Úoc_cmd_adminr   r   Ú
<listcomp>†   ó    ÿz)OpenShiftOrigin.setup.<locals>.<listcomp>)Ú
hostsubnetÚclusternetworkÚnetnamespacesc                    r   )z get -o json r   )r   Újcmdr   r   r   r   �   r    )Údefaultzopenshift-web-consolez openshift-ansible-service-brokerzopenshift-sdnzopenshift-consolec                    r   )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)Ú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   Úadd_copy_specr
   Ú
master_envr   r   Úadd_cmd_outputr   Úadd_journalÚexec_cmdÚ
splitlinesr   r   Únode_kubeconfig)r   Úbstrap_node_cfgÚbstrap_kubeconfigÚ
node_certsÚnode_client_caÚ	admin_cfgÚstatic_pod_logs_cmdÚsubcmdsÚjcmdsÚnmspsr   Úpodr   r   r   ÚsetupO   st   ÿÿ
ýÿþÿÿþ÷ó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:"********")Údo_cmd_output_subÚdo_file_subr
   )r   Ú
env_regexpr   r   r   Úpostproc¼   s   
þzOpenShiftOrigin.postproc)Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚfilesÚprofilesr+   r)   ÚosÚpathÚjoinr
   r-   r*   r   r2   r   r   r   r   r   r=   rA   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)rB   rC   rD   rE   Úpackagesr   r   r   r   rL   Ò   s    rL   )Úos.pathrI   Úsos.report.pluginsr   r   r   rL   r   r   r   r   Ú<module>   s
   
 0