
    ~ g%                     |    S SK r S SKrS SKrS SKJrJrJrJr   " S S\5      r " S S\\5      r	 " S S\\\5      r
g)	    N)PluginRedHatPluginDebianPluginUbuntuPluginc                   ^    \ rS rSrSrSrSrSrSrSr	Sr
SrSrSrSrS r/ 4S jrS	 rS
 rSrg)
OVNCentral   z
OVN Northdovn_central)networkvirt)zovn-dbs-bundle.*ovn_cluster_north_db_server c                    U R                  X5      nU R                  (       a  U R                  SU 3U R                  S9nUS   S:w  d	  SUS   ;  a   U R                  SU R                   35        U$ [        R
                  " U5      nUS   R                  S5       H,  nUR                  U5      (       d  M  U R                  X5      s  $    U$ )Nzls )	containerstatusr   
outputz=Could not retrieve ovn_controller socket path from container )	path_joincontainer_nameexec_cmd
_log_errorrecompilesplitmatch)selfpath
regex_name_sfilerespatternfilenames          @/usr/lib/python3/dist-packages/sos/report/plugins/ovn_central.py
_find_sockOVNCentral._find_sock%   s    1--#dV8K8K-LC8}!TX%>&&*&9&9%:<  **Z0 #H 3 3D 9H}}X..#~~d== !:     c                 <   U R                   (       ad  SU 3nU R                  USSU R                   S9nUS   S:w  a  U R                  SU R                    35        g [        R                  " US   5      nO> U R                  U5      n[        US
SS9 n [        R                  " U5      n SSS5         [        R                  WS   5       V	s/ s H  n	X;  d  M
  U	PM     sn	$ ! [
         a    U R                  S	U 35         gf = f! [
         a    U R                  S	U 35         SSS5        gf = f! , (       d  f       N= f! [         a!  nU R                  SU SU 35         SnAgSnAff = fs  sn	f ! [         a    U R                  SU S35         gf = f)zGet tables from schema zcat NT)timeout
foregroundr   r   r   z1Could not retrieve DB schema file from container r   zCannot parse JSON file rzUTF-8)encodingzCould not open DB schema file z: tablesz
DB schema z has no 'tables' key)r   r   r   jsonloads	Exceptionr   openloadIOErrordictkeysAttributeError)
r   r"   skipcmdr    	db_schemafnamefileextables
             r#   get_tables_from_schema!OVNCentral.get_tables_from_schema6   s   
#C--Td*.*=*=   ?C8}! !--1-@-@,A!C D JJs8}5	
x0%w74$$(IIdO	 8	I'+yy(#(% ; (%e(-(9  (% ; ;#  "9( DE % $*A((LM# 87$ 87  4XJbEG
; 	IOOj
2FGH	Is   C% 7E D5D	,E 5E9 	E4E4"E9 %DD	D2'D5(E 1D22D55
E?E E 
E1E,,E14E9 9FFc                 J    U(       a  U Vs/ s H	  o2 SU 3PM     sn$ gs  snf )zCollect OVN database output z list N )r   r,   ovn_cmdr<   s       r#   add_database_outputOVNCentral.add_database_outputY   s,    ;AB6%iveW-6BB Cs    c           
         U R                  U R                  S   5      (       a$  U R                  U R                  S   5      U l        O#U R                  U R                  S   5      U l        [        R
                  R                  S5      nS H  nU R                  U R                  SU5      U R                  SU5      U R                  SU5      U R                  SU5      /5        U(       d  Ma  U R                  U R                  X5      5        M     U R                  S	5      (       a  U R                  S
5        OU R                  S5        U R                  U R                  U R                  5      nU R                  U R                  U R                  5      nSn/ nU R                  nU SU R                   SU S3U SU R                    SU S3U SU S3U SU S3/nU R#                  USU R                  SS9  U(       d&  Sn	U R#                  U SU SU	 3SU R                  SS9  Sn
U SU
 S3U SU
 S3U SU
 S3/nU R#                  USU R                  SS9  U SU
 S3U SU
 S3U SU
 S3U SU
 S3/nU R#                  USU R                  SS9  S Hr  nU R%                  U R                  US 5      5      (       d  M+  U R'                  U R                  US 5      5      nUR)                  U R+                  UU SU
 35      5        Mt     S Ht  nU R%                  U R                  US!5      5      (       d  M+  U R'                  U R                  US!5      S"/5      nUR)                  U R+                  UU SU
 35      5        Mv     [-        [/        U5      5      nU R#                  USU R                  S#9  U R                  S$5        [        R
                  R                  S%5      nS& H  nS' HO  nU R                  UU5      nU R%                  U5      (       d  M-  U R                  U5        U R1                  U5        MQ     U(       d  Ma  U R                  U R                  UU5      5        M     U R3                  S(S)9  g )*N   r   
OVS_RUNDIR)zovnnb_db.pidzovnsb_db.pidzovn-northd.pid/var/lib/openvswitch/ovnz/usr/local/var/run/openvswitchz/run/openvswitch/!/var/snap/microovn/common/run/ovnall_logsz/var/log/ovn/z/var/log/ovn/*.logzcluster/statuszovs-appctl -t  z OVN_Northboundz OVN_Southboundzovn-appctl -t z statusz connection-statusT   )r)   r   r(   zdebug/chassis-features-listz--no-leader-onlyz
ovn-nbctl z showz get-sslz get-connectionz
ovn-sbctl z lflow-list)z/usr/share/openvswitchz/usr/share/ovnz /snap/microovn/current/share/ovnzovn-nb.ovsschemazovn-sb.ovsschemaLogical_Flow)r)   r   z/etc/sysconfig/ovn-northd	OVS_DBDIR)zovnnb_db.dbzovnsb_db.db)rG   z/usr/local/etc/openvswitchz/etc/openvswitchz/var/lib/openvswitchz/var/lib/ovn/etcz/var/lib/ovnz)/var/snap/microovn/common/data/central/dbz
ovn-northd)units)container_exists
containersget_container_by_namer   osenvirongetadd_copy_specr   
get_optionr$   
ovn_socketovn_controller_sock_regexovn_northd_sock_regexpfxovn_nbdb_socketovn_sbdb_socketadd_cmd_outputpath_existsr=   extendrB   listsetadd_dir_listingadd_journal)r   
ovs_rundirpidfileovn_controller_socketnorthd_socketcscmdsrZ   appctl_cmdsdflnolo
nbctl_cmds
sbctl_cmdsr   	nb_tables	sb_tables	ovs_dbdirdbfile
dbfilepaths                      r#   setupOVNCentral.setup_   s     !344"&"<"<"#$D #'"<"<"#$D ZZ^^L1
IG97C?I2G<BGL	   z""4>>*#FG J ??:&&/34 $OOT;;!= (,(B(BD hh e>$"6"6!7qOLe>$"6"6!7qOLe>-8e>"7!88JK	
 	KD&*&9&92 	 	G /C3%~m_AcU K+/*.*=*=r   K
 "e:dV5)e:dV8,e:dV?3

 	J4&*&9&92 	 	G e:dV5)e:dV;/e:dV8,e:dV?3	

 	J4&*&9&92 	 	G9Dt5G HII 77,9. /	D44Y8;uJtf5MO P99Dt5G HII 77,9.0>/?A	D44Y8;uJtf5MO P9 CITT-@-@ 	 	
 	67JJNN;/	4F "^^D&9
##J//&&z2((4 y""4>>)V#DE! 5$ 	|,r&   )r   N)__name__
__module____qualname____firstlineno__
short_descplugin_nameprofilesrP   r   r[   r\   rW   rX   rY   rZ   r$   r=   rB   rt   __static_attributes__r@   r&   r#   r   r      sV    JK"HDJNOOJ "
C" 57 !Fy-r&   r   c                   ,    \ rS rSrSrSrSrSrSrSr	Sr
g	)
RedHatOVNCentral   )zopenvswitch-ovn-centralzovn.*-centralz!/var/run/openvswitch/ovnnb_db.ctlz!/var/run/openvswitch/ovnsb_db.ctlz/var/run/openvswitchovn-controller.*.ctlovn-northd.*.ctlr@   N)rv   rw   rx   ry   packagesr[   r\   rW   rX   rY   r}   r@   r&   r#   r   r      s"    =H9O9O'J 6.r&   r   c                   4   ^  \ rS rSrSrU 4S jrSrSrSrU =r	$ )DebianOVNCentral   )zovn-centralmicroovnc                    > U R                  S5      (       a7  SU l        U R                   S3U l        U R                   S3U l        SU l        OSU l        SU l        SU l        [
        TU ]  5         g )	Nz/snap/bin/microovnrH   z/ovnnb_db.ctlz/ovnsb_db.ctlz	microovn.z/var/run/ovnz/var/run/ovn/ovnnb_db.ctlz/var/run/ovn/ovnsb_db.ctl)r^   rW   r[   r\   rZ   superrt   )r   	__class__s    r#   rt   DebianOVNCentral.setup   sk    011ADO&*oo%6m#DD &*oo%6m#DD "DH,DO#>D #>D r&   r   r   )r[   r\   rW   rZ   )
rv   rw   rx   ry   r   rt   rX   rY   r}   __classcell__)r   s   @r#   r   r      s    ,H
 !7.r&   r   )r-   rR   r   sos.report.pluginsr   r   r   r   r   r   r   r@   r&   r#   <module>r      sG     	 	 A- A-H/z< //z< /r&   