o
    *ba                     @   sf   d dl mZmZmZmZmZ d dlZd dlZG dd deZG dd deeZ	G dd deeeZ
dS )	    )PluginRedHatPluginDebianPluginUbuntuPluginSoSPredicateNc                   @   s8   e Zd ZdZdZdZdZg fddZdd Zd	d
 Z	dS )
OVNCentralz
OVN NorthdZovn_central)ZnetworkZvirt)zovs-db-bundle.*c              
      sh  | j r<d| }| j|d d| j d}|d dkr!| d| j   d S z	t|d }W nh ty;   | d|  Y d S w z:t| |d	(}zt|}W n tye   | d|  Y W d    W d S w W d    n1 spw   Y  W n t	y } z| d
||f  W Y d }~d S d }~ww z fddt
|d D W S  ty   | d|  Y d S w )Nzcat %sT)Ztimeout
foreground	containerstatusr   z3Could not retrieve DB schema file from container %soutputzCannot parse JSON file %srz$Could not open DB schema file %s: %sc                    s   g | ]}| vr|qS  r   ).0tableskipr   @/usr/lib/python3/dist-packages/sos/report/plugins/ovn_central.py
<listcomp>9   s    
z5OVNCentral.get_tables_from_schema.<locals>.<listcomp>tablesz DB schema %s has no 'tables' key)_container_nameZexec_cmdZ
_log_errorjsonloads	Exceptionopen	path_joinloadIOErrordictkeysAttributeError)selffilenamer   cmdresZdbfexr   r   r   get_tables_from_schema   sX   


z!OVNCentral.get_tables_from_schemac                 C   s(   |sd S |D ]}| d||f  qd S )Nz
%s list %s)append)r    r   cmdsZovn_cmdr   r   r   r   add_database_output>   s
   zOVNCentral.add_database_outputc                 C   s  |  d| _tjd}dD ]!}| | d|| d|| d|g |r/| | || q| dr;| d n| d	 d
| j	d| j
g}g d}g d}d}| | |d}| ||d |}||7 }d| j
dd}	| j| t| |	ddr| | |ddg}
| |
|d ||7 }| j|d| jd | d tjd}dD ]+}| | d|| d|| d|| d|| d |g |r| | || q| jd!d" d S )#Nzovs-dbs-bundle.*Z
OVS_RUNDIR)zovnnb_db.pidzovnsb_db.pidzovn-northd.pidz/var/lib/openvswitch/ovnz/usr/local/var/run/openvswitchz/run/openvswitch/Zall_logsz/var/log/ovn/z/var/log/ovn/*.logz.ovs-appctl -t {} cluster/status OVN_Northboundz.ovs-appctl -t {} cluster/status OVN_Southbound)zovn-nbctl showzovn-nbctl get-sslzovn-nbctl get-connectionzovn-nbctl list loadbalancerzovn-nbctl list Load_Balancerzovn-nbctl list ACLz"ovn-nbctl list Logical_Switch_Port)zovn-sbctl showzovn-sbctl lflow-listzovn-sbctl get-sslzovn-sbctl get-connectionz/usr/share/openvswitchzovn-nb.ovsschemaz	ovn-nbctlzLeader: self)r"   r   )Zcmd_outputs)Zpredzovn-sb.ovsschemaZLogical_Flowz	ovn-sbctlT)r   r	   z/etc/sysconfig/ovn-northdZ	OVS_DBDIR)zovnnb_db.dbzovnsb_db.dbz/usr/local/etc/openvswitchz/etc/openvswitchz/var/lib/openvswitchz/var/lib/ovn/etcz
ovn-northd)Zunits)Zget_container_by_namer   osenvirongetZadd_copy_specr   Z
get_optionformatovn_nbdb_sock_pathovn_sbdb_sock_pathr&   r)   Ztest_predicater   Zadd_cmd_outputZadd_journal)r    Z
ovs_rundirZpidfileZ
ovsdb_cmdsZ
nbctl_cmdsZ
sbctl_cmdsZ
schema_dirZ	nb_tablesr(   coZ	sb_tablesZ	ovs_dbdirZdbfiler   r   r   setupD   sv   











zOVNCentral.setupN)
__name__
__module____qualname__Z
short_descZplugin_nameZprofilesZ
containersr&   r)   r1   r   r   r   r   r      s    !r   c                   @      e Zd ZdZdZdZdS )RedHatOVNCentral)zopenvswitch-ovn-centralzovn.*-centralz!/var/run/openvswitch/ovnnb_db.ctlz!/var/run/openvswitch/ovnsb_db.ctlNr2   r3   r4   Zpackagesr.   r/   r   r   r   r   r6          r6   c                   @   r5   )DebianOVNCentral)zovn-centralz/var/run/ovn/ovnnb_db.ctlz/var/run/ovn/ovnsb_db.ctlNr7   r   r   r   r   r9      r8   r9   )Zsos.report.pluginsr   r   r   r   r   r   r*   r   r6   r9   r   r   r   r   <module>   s   
 