
    ~ gE                     x    S SK J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)
    )environN)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S rS rS rSrg)OpenVSwitch   zOpenVSwitch networkingopenvswitch)networkvirtz
ovs-appctlz	ovs-vsctlz	ovs-ofctlz	ovs-dpctlFc           	      ,	  ^  T R                  S5      nSS/nT R                  T R                   S35      nUS   S:H  =(       a    US   R                  S5      T l        [        U 4S	 jS
 5       5      T l        [        R                  " S5      (       a%  UR                  [        R                  " S5      5        U(       d3  T R                  U Vs/ s H  nT R                  US5      PM     sn5        OT R                  U5        T R                  / SQ5        T R                  T R                  SS5      T R                  SS5      T R                  SS5      /5        [        R                  " S5      nU(       a!  T R                  T R                  US5      5        T R                  SSS.5        T R                  / SQ5        T R                  / SPSPSPSPSPSPSPT R                   S3PT R                   S3PT R                   S 3PT R                   S!3PT R                   S"3PT R                   S#3PT R                   S$3PT R                   S%3PT R                   S&3PT R                   S'3PT R                   S(3PT R                   S)3PT R                   S*3PT R                   S+3PT R                   S,3PT R                   S-3PT R                   S.3PT R                   S/3PT R                   S03PT R                   S13PT R                   S23PT R                   S33PT R                   S43PT R                    S53PT R                    S63PT R                   S73PT R                   S83PT R                   S93PT R                   S:3PT R                   S;3PT R                   S<3PT R                   S=3PT R                   S>3P5        T R                  T R                   S?3S@SA9  T R                  T R                   SB3SCSA9  T R#                  SDSE9  T R#                  SFSE9  T R#                  SGSE9  T R#                  SHSE9  T R#                  SISE9  T R#                  SJSE9  T R%                  5         T R'                  5         T R)                  5         g s  snf )KNall_logsz/var/log/openvswitch/z/usr/local/var/log/openvswitch/z/ -t 5 get Open_vSwitch . other_config:dpdk-initstatusr   outputz"true"c              3   F   >#    U  H  nTR                  U5      v   M     g 7f)N)is_installed).0pselfs     @/usr/lib/python3/dist-packages/sos/report/plugins/openvswitch.py	<genexpr>$OpenVSwitch.setup.<locals>.<genexpr>)   s'      FD 9:t0033Ds   !)z6windgate-fpnuage-openvswitch
OVS_LOGDIRz*.log)z!/run/openvswitch/ovsdb-server.pidz!/run/openvswitch/ovs-vswitchd.pidz&/run/openvswitch/ovs-monitor-ipsec.pidz/usr/local/etc/openvswitchzconf.dbz/etc/openvswitchz/var/lib/openvswitch	OVS_DBDIRopenvswitch_daemon_logopenvswitch_server_log)z%/var/log/openvswitch/ovs-vswitchd.logz%/var/log/openvswitch/ovsdb-server.log)z/run/openvswitchz/dev/hugepages/z	/dev/vfioz/var/lib/vhost_socketszdpdk_nic_bind --statuszdpdk-devbind.py --statuszdriverctl list-deviceszdriverctl -v list-deviceszdriverctl list-overrideszdriverctl -v list-overrideszdriverctl list-persistedz
 bond/listz
 bond/showz
 lacp/showz lacp/show-statsz coverage/showz ovs/route/showz tnl/arp/showz tnl/ports/show -v upcall/showz -t 5 list Open_vSwitchz -t 5 list managerz -t 5 list interfacez -t 5 list bridgez -t 5 list datapathz! dpif-netdev/pmd-rxq-show -secs 5z" dpif-netdev/pmd-rxq-show -secs 30z dpif-netdev/pmd-rxq-showz dpif-netdev/pmd-stats-showz dpif-netdev/pmd-perf-showz ofproto/list-tunnelsz" -t ovs-monitor-ipsec tunnels/showz  -t ovs-monitor-ipsec xfrm/statez# -t ovs-monitor-ipsec xfrm/policiesz$ dump-flows --name -m type=offloadedz dump-flows --name -m type=ovsz% dpif-netdev/subtable-lookup-prio-getz dpif-netdev/dpif-impl-getz  dpif-netdev/miniflow-parser-getz dpif-netdev/pmd-sleep-showz dpdk/lcore-listz dpdk/log-listz dpdk/get-malloc-statsz netdev-dpdk/get-mempool-infoz% -t 5 get Open_vSwitch . other_configopenvswitch_other_config)tagsz
 -t 5 showovs_vsctl_showr   unitszopenvswitch-nonetworkzovs-vswitchdzovsdb-serverzovs-configurationzopenvswitch-ipsec)
get_optioncollect_cmd_outputvctl
startswith
check_dpdkanycheck_6windr   getappendadd_copy_spec	path_joinadd_file_tagsadd_dir_listingadd_cmd_outputactldpctladd_journalcollect_ovs_infocollect_datapathcollect_ovs_bridge_info)r   r   log_dirsdpdk_enabledld	ovs_dbdirs   `     r   setupOpenVSwitch.setup   s   ??:. $-

 ..yykHIK'1Q6 G'1<<XF 	 FDF F ;;|$$OOGKK566> 6>r7+h   x( 
 	 	NN7CNN-y9NN19=
 	
 KK,	t~~iCD((	
 	 	 
 	 	 D
$D
 'D
 %	D

 (D
 'D
 *D
 'D
 yyk$D
 yyk$D
 yyk$D
 yyk)*D
" yyk(#D
& yyk)'D
* yyk'+D
. yyk+,/D
2 yyk&3D
6 yyk017D
: yyk+,;D
> yyk-.?D
B yyk*+CD
F yyk,-GD
J yyk:;KD
L yyk;<MD
N yyk23OD
R yyk45SD
V yyk34WD
Z yyk./[D
^ yyk;<_D
` yyk9:aD
b yyk<=cD
f zzl>?gD
j zzl89kD
n yyk>?oD
r yyk34sD
v yyk9:wD
z yyk45{D
~ yyk)*D
@ yyk(AD
B yyk/0CD
F yyk67GD
 D	L 	yyk>?+ 	 	-
 	tyyk4!1 	 	3 	}-67~.~.2323$$&u s   Rc                 v   / SQnU R                   (       Ga#  U R                  U5        U R                  SSSSSSSS	S
U R                   S3U R                   S3SU R                   S3SU R                   S3SSSSSSSU R                   S3/5        U R                  SS9  S H  nU R                  SU 3/5        M     U R                  S5      nUS   S:X  aa  US    R                  5        HI  n[        R                  " S!U5      nU(       d  M#  UR                  S"5      nU R                  S#U 3/5        MK     g$g$g$)%zCollect output of OVS commands )z?/etc/systemd/system/multi-user.target.wants/openvswitch.servicez./etc/sysctl.d/60-6wind-system-auto-reboot.confz/etc/openvswitch/system-id.confz/etc/openvswitch/*.dbz*/etc/ld.so.conf.d/linux-fp-sync-fptun.confz$/etc/NetworkManager/conf.d/fpn0.confz/etc/default/openvswitchz/etc/logrotate.d/openvswitchz/etc/linux-fp-sync.envz/etc/fp-daemons.envz/etc/fp-vdev.iniz/etc/fpm.envz/etc/6WINDGate/fp.configz/etc/6WINDGate/fpnsdk.configz/etc/dms.d/fp-dms.confz/etc/dms.d/fpmd-dms.confz/etc/dms.d/fpsd-dms.confz/etc/fast-path.envz/etc/fps-fp.envzfp-cli fp-vswitch-statszfp-cli dpdk-core-port-mappingzfp-cpu-usagezfp-cli fp-vswitch-maskszfp-cli fp-vswitch-flowszfp-shmem-dpvizfp-cli stats non-zerozfp-cli statszfp-cli dpdk-cp-filter-budgetz vm/port-detailed-showr   zfp-cli nfct4z vm/port-vip-list-showzfp-shmem-ports -sz show -szfpcmd fp-vswitch-flowszfp-cli fp-vswitch-ports percorezfp-cli dpdk-debug-poolzfp-cli dump-sizezfp-cli conf runtimezfp-cli conf compiledzfp-cli ifacez memory/showzvirtual-acceleratorr#   )filtermanglerawnatzfpcmd nf4-rules zfp-cli fp-vswitch-portsr   r   r   z^([\d]+):[\s]+([^\s]+)   zfp-cli dpdk-cp-filter-budget N)r+   r.   r2   r3   r4   r5   r&   
splitlinesrematchgroup)r   files_6windtable	port_listportmport	port_names          r   r6   OpenVSwitch.collect_ovs_info   sp   
, {+)/))'.99+3499+\*99+34#::,h'(1("%&99+\*1! 4 #89;##'7w%?$@A <
 //0IJI"a'%h/::<DHH%>EEu$)KKN	++;I;G- 	 = (G     c           
      J   U R                  U R                   S35      nUS   S:X  a|  US   R                  5        Hd  nU R                  U R                   SU 3U R                   SU 3U R                   SU 3U R                   SU 3U R                   S	U 3/5        Mf     g
g
)z2Gather the datapath information for each datapath z dpctl/dump-dpsr   r   r   z dpctl/show -s z dpctl/dump-flows -m z dpctl/dump-conntrack -m z dpctl/ct-stats-show -m z dpctl/ipf-get-status N)r&   r3   rE   r2   )r   dp_list_resultdpss      r   r7   OpenVSwitch.collect_datapath   s    00DII;o1NO(#q(%h/::<##yyk6yyk!6se<yyk!:3%@yyk!9#?yyk!7u=%  = )rP   c                 >   U R                  U R                   S35      nUS   S:w  a  gUS   R                  5        GH]  nU R                  U R                   SU 3U R                   SU 3U R                   SU 3U R                   S	U 3U R                   S
U 3U R
                   SU 3U R
                   SU 3U R
                   SU 3U R
                   SU 3U R
                   SU 3U R
                   SU 3U R
                   SU 3/5        U R                  U5        U R                  U5        U R                  (       ac  U R                  U R                   SU 35      nUS   S:X  a:  US   R                  5        H#  nU R                  U R                   SU 35        M%     U R                  (       d  GM  U R                  U R                   SU 3U R                   SU 3U R                   SU 3U R                   SU 3U R                   SU 3/5        U R                  U R                   SU 35      nUS   S:X  a@  US   R                  5       SS nU H$  nU R                  U R                   SU 3/5        M&     U R                  U R                   SU 35      nUS   S:X  d  GMu  US   R                  5       SS n	U	 H  n
U R                  U R                   SU
 3U R                   SU
 3U R                   SU S U
 3U R                   S!U S U
 3U R                   S"U S U
 3U R                   S#U S U
 3U R                   S$U S U
 3U R                   S%U S U
 3U R                   S&U S U
 3U R                   S'U S U
 3/
5        M     GM`     g)(z:Gather additional output for each OVS bridge on the host. z -t 5 list-brr   r   Nr   z# bridge/dump-flows --offload-stats z dpif/show-dp-features z
 fdb/show z fdb/stats-show z
 mdb/show  dump-flows  dump-ports-desc z dump-ports z queue-get-config z queue-stats  show  dump-groups z -t 5 list-ifaces  netdev-dpdk/get-mempool-info z evpn/vip-list-show z  bridge/dump-conntracks-summary z! bridge/acl-table ingress/egress z bridge/acl-table z ofproto/show z
 vrf/list    z vrf/route-table z evpn/list z evpn/mac-table z evpn/arp-table z evpn/dump-flows  z evpn/dhcp-pool-show z evpn/dhcp-relay-show z evpn/dhcp-static-show z evpn/dhcp-table-show z evpn/proxy-arp-filter-list z evpn/show z port/dscp-table )r&   r'   rE   r2   r3   ofctlget_flow_versionsget_port_listr)   exec_cmdr+   split)r   br_list_resultbriiface_list_resultifacevrf_listvrfsvrf	evpn_listevpnsevpns              r   r8   #OpenVSwitch.collect_ovs_bridge_info   s    00DII;m1LM(#q(!(+668C99+@F99+4SE:99+Zu-99+-cU399+Zu-::,l3%0::,/u5::,l3%0::,06::,mC51::,fSE*::,mC51!  ""3's#$(MMyyk!3C59%! %X.!3!28!<!G!G!I++#yyk)GwO "J ##yyk!5cU;yyk!A#Gyyk!B3%Hyyk!3C59yyku5%   22yykC513H%*#H-335ab9D#++#yyk):3%@-   $
 !33yykSE24	X&!+%h/557;E %++#yyk)9$@#yyk)9$@#yyk):3%qG#yyk)>se1TFK#yyk)?uAdVL#yyk)@QtfM#yyk)?uAdVL#yyk)E"e1TF,#yykSE4&A#yyk):3%qG-  !&g 9rP   c                 0   / SQnSSSSSSS.nU R                  U R                   S	35      nU R                  U R                   S
U 35      n/ nUS   R                  5        HQ  nSU;   d  M  XwR                  S5      S-   UR                  S5       nUR	                  SS5      R                  S5      nMS     US/:X  a  US   (       a  US   R                  5       n	/ n
U	 HY  nSU;   d  M  UR                  S5      nUS   R                  S5      n[        [        US   S5      [        US   S5      S-   5      n
M[     U
 H  nX;   d  M
  UR                  X=   5        M     U H  nX;   d  M
  U R                  U R                   SU SU 3U R                   SU SU 3U R                   SU SU 3U R                   SU SU 3U R                   SU SU 3U R                   SU SU 3U R                   SU SU 3U R                   SU S U 3/5        M     g!)"z)Collect flow version of the given bridge )
OpenFlow10
OpenFlow11
OpenFlow12
OpenFlow13
OpenFlow14
OpenFlow15rn   ro   rp   rq   rr   rs   )r[   rD               z -t 5 --versionz -t 5 list bridge r   	protocols[r[   ]" z, zOpenFlow versionszOpenFlow versions :r   r
   z -O rX   rY   z dump-group-stats rV   z dump-tlv-map rW   z dump-meters z meter-stats N)r&   r'   rE   findreplacera   rangeintr-   r2   r]   )r   bridgeflow_versionsofp_versionsofp_ver_resultbr_info	br_protoslinebr_protos_lnofp_version_range	ver_rangever_spverprotocolflows                  r   r^   OpenVSwitch.get_flow_versionsG  sZ   
 
 00DII;o1NO ))yyk+F846 	H%002Dd"#IIcN1$4TYYs^D(00b9??E	 3 !9 .x 8 C C EI)&$.!ZZ(<=F )//#.C %c#a&"o&)#a&"oa&7!9I	 * &+$$\%;< &
 "D ##zzl$tfF6(;zzl$tfM&Bzzl$tf,>vhGzzl$tfLAzzl$tfN6(Czzl$tf,=fXFzzl$tfM&Bzzl$tfM&B	% 	 "rP   c           
         U R                  U R                   SU 35      nUS   S:X  a  US   R                  5        H  nU R                  U R                   SU 3U R                   SU 3U R                   SU 3U R                   SU S	3/5        U R
                  (       d  Mh  U R                  U R                   S
U 35        M     gg)z&Collect port list of the given bridge z -t 5 list-ports r   r   r   z
 cfm/show z
 qos/show z bond/show z get Interface z optionsrZ   N)r`   r'   rE   r2   r3   r)   )r   r   port_list_resultrL   s       r   r_   OpenVSwitch.get_port_list  s    ==yyk*6(35 H%*(2==?##yykD62yykD62 yykTF3yykh?%  ???''99+%CD6JL @ +rP   )r+   r)   N)__name__
__module____qualname____firstlineno__
short_descplugin_nameprofilesr3   r'   r]   r4   r)   r+   r=   r6   r7   r8   r^   r_   __static_attributes__ rP   r   r	   r	      sU    )JK"HDDEEJKN'`CJGR?BLrP   r	   c                       \ rS rSrSrSrg)RedHatOpenVSwitchi  )r   zopenvswitch[2-9].*zopenvswitch-dpdkznuage-openvswitch6windgate-fpr   N)r   r   r   r   packagesr   r   rP   r   r   r     s	     HrP   r   c                   0   ^  \ rS rSrSrSrU 4S jrSrU =r$ )DebianOpenVSwitchi  )zopenvswitch-switchr   )zD/var/snap/openstack-hypervisor/common/etc/openvswitch/system-id.confc                 T  > U R                  S5      (       a  SU l        U R                   U R                   3U l        U R                   U R                   3U l        U R                   U R                   3U l        U R                   U R
                   3U l        [        TU ]  5         g )Nzopenstack-hypervisorzopenstack-hypervisor.)r   ovs_cmd_prer3   r'   r]   r4   superr=   )r   	__class__s    r   r=   DebianOpenVSwitch.setup  s    3446D++,TYYK8DI++,TYYK8DI ,,-djj\:DJ ,,-djj\:DJrP   )r3   r4   r]   r   r'   )	r   r   r   r   r   filesr=   r   __classcell__)r   s   @r   r   r     s    :HE rP   r   )osr   rF   sos.report.pluginsr   r   r   r   r	   r   r   r   rP   r   <module>r      sB     	 O OKL& KL\ \  \< rP   