+
    G%@iE                     z    ^ RI Ht ^ RIt^ RIHtHtHtHt  ! R R]4      t ! R R]]4      t	 ! R R	]]]4      t
R# )
    )environN)PluginRedHatPluginDebianPluginUbuntuPluginc                   h   a  ] tR t^t o RtRtRtRtRtRt	Rt
RtRtR tR	 tR
 tR tR tR tRtV tR# )OpenVSwitchzOpenVSwitch networkingopenvswitchz
ovs-appctlz	ovs-vsctlz	ovs-ofctlz	ovs-dpctlFc           	     	  a  S P                  R 4      pRR.pS P                  S P                   R24      pVR,          ^ 8H  ;'       d    VR,          P                  R4      S n        \
        ;QJ d    V 3R lRJ 4       F  '       g   K   RM	  R	M! V 3R lRJ 4       4      S n        \        P                  ! R
4      '       d&   VP                  \        P                  ! R
4      4       V'       g3   S P                  V Uu. uF  pS P                  VR4      NK  	  up4       MS P                  V4       S P                  . RKO4       S P                  S P                  RR4      S P                  RR4      S P                  RR4      .4       \        P                  ! R4      pV'       d"   S P                  S P                  VR4      4       S P                  RRRR/4       S P                  . RLO4       S P                  . RNRNRNRNRNRNRNS P                   R2NS P                   R2NS P                   R2NS P                   R2NS P                   R 2NS P                   R!2NS P                   R"2NS P                   R#2NS P                   R$2NS P                   R%2NS P                   R&2NS P                   R'2NS P                   R(2NS P                   R)2NS P                   R*2NS P                   R+2NS P                   R,2NS P                   R-2NS P                   R.2NS P                   R/2NS P                   R02NS P                   R12NS P                   R22NS P                    R32NS P                    R42NS P                   R52NS P                   R62NS P                   R72NS P                   R82NS P                   R92NS P                   R:2NS P                   R;2NS P                   R<2N4       S P                  S P                   R=2R>R?7       S P                  S P                   R@2RAR?7       S P#                  RBRC7       S P#                  RDRC7       S P#                  RERC7       S P#                  RFRC7       S P#                  RGRC7       S P#                  RHRC7       S P%                  4        S P'                  4        S P)                  4        RI# u upi )Mall_logsz/var/log/openvswitch/z/usr/local/var/log/openvswitch/z/ -t 5 get Open_vSwitch . other_config:dpdk-initstatusoutputz"true"c              3   F   <"   T F  pSP                  V4      x  K  	  R # 5i)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   !TF
OVS_LOGDIRz*.logz/usr/local/etc/openvswitchzconf.dbz/etc/openvswitchz/var/lib/openvswitch	OVS_DBDIRz%/var/log/openvswitch/ovs-vswitchd.logopenvswitch_daemon_logz%/var/log/openvswitch/ovsdb-server.logopenvswitch_server_logz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-ipsecN)z6windgate-fpnuage-openvswitch)z!/run/openvswitch/ovsdb-server.pidz!/run/openvswitch/ovs-vswitchd.pidz&/run/openvswitch/ovs-monitor-ipsec.pid)z/run/openvswitchz/dev/hugepages/z	/dev/vfioz/var/lib/vhost_sockets)
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   f     r   setupOpenVSwitch.setup   s$   ??:. $-

 ..yykHIK'1Q6 G G'1<<XF 	3 FDF333 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3(3(	
 	 	 
 	 	 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   =Sc                   . R!OpV P                   '       Ed3   V P                  V4       V P                  RRRRRRRRR	V P                   R
2V P                   R2RV P                   R2RV P                   R2RRRRRRRV P                   R2.4       V P                  RR7       R" F  pV P                  RV 2.4       K  	  V P                  R4      pVR,          ^ 8X  dh   VR,          P                  4        FJ  p\        P                  ! RV4      pV'       g   K$  VP                  ^4      pV P                  RV 2.4       KL  	  R # R # R # )#zCollect output of OVS commands z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   zfpcmd nf4-rules zfp-cli fp-vswitch-portsr   r   z^([\d]+):[\s]+([^\s]+)zfp-cli dpdk-cp-filter-budget N)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.env)filtermanglerawnat)r(   r+   r/   r0   r1   r2   r#   
splitlinesrematchgroup)r   files_6windtable	port_listportmport	port_names   &      r   r3   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           
     `   V P                  V P                   R24      pVR,          ^ 8X  d   VR,          P                  4        Fd  pV P                  V P                   RV 2V P                   RV 2V P                   RV 2V P                   RV 2V P                   RV 2.4       Kf  	  R	# R	# )
z2Gather the datapath information for each datapath z dpctl/dump-dpsr   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#   r0   rA   r/   )r   dp_list_resultdpss   &  r   r4   OpenVSwitch.collect_datapath   s    00DII;o1NO(#q(%h/::<##yyk6yyk!6se<yyk!:3%@yyk!9#?yyk!7u=%  = )rL   c                   V P                  V P                   R24      pVR,          ^ 8w  d   R# VR,          P                  4        EF  pV P                  V P                   RV 2V P                   RV 2V P                   RV 2V P                   RV 2V P                   R	V 2V P
                   R
V 2V P
                   RV 2V P
                   RV 2V P
                   RV 2V P
                   RV 2V P
                   RV 2V P
                   RV 2.4       V P                  V4       V P                  V4       V P                  '       dm   V P                  V P                   RV 24      pVR,          ^ 8X  d?   VR,          P                  4        F#  pV P                  V P                   RV 24       K%  	  V P                  '       g   EK  V P                  V P                   RV 2V P                   RV 2V P                   RV 2V P                   RV 2V P                   RV 2.4       V P                  V P                   RV 24      pVR,          ^ 8X  dI   VR,          P                  4       R,          pV F$  pV P                  V P                   RV 2.4       K&  	  V P                  V P                   RV 24      pVR,          ^ 8X  g   EK  VR,          P                  4       R,          p	V	 F  p
V P                  V P                   RV
 2V P                   RV
 2V P                   RV RV
 2V P                   R V RV
 2V P                   R!V RV
 2V P                   R"V RV
 2V P                   R#V RV
 2V P                   R$V RV
 2V P                   R%V RV
 2V P                   R&V RV
 2.
4       K  	  EK  	  R# )'z:Gather additional output for each OVS bridge on the host. z -t 5 list-brr   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 :   NNz 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$   rA   r/   r0   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   r5   #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5b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 9rL   c                   . ROp^R^R^R^R^R^R/pV P                  V P                   R24      pV P                  V P                   RV 24      p. pVR	,          P                  4        FV  pR
V9   g   K  WwP                  R4      ^,           VP                  R4       pVP	                  RR4      P                  R4      pKX  	  VR.8X  d   VR	,          '       d   VR	,          P                  4       p	. p
V	 Fj  pRV9   g   K  VP                  R4      pV^,          P                  R4      p\        \        V^ ,          ^4      \        V^,          ^4      ^,           4      p
Kl  	  V
 F"  pW9   g   K  VP                  W=,          4       K$  	  V F  pW9   g   K  V P                  V P                   RV RV 2V P                   RV RV 2V P                   RV RV 2V P                   RV RV 2V P                   RV RV 2V P                   RV RV 2V P                   RV RV 2V P                   RV RV 2.4       K  	  R# )z)Collect flow version of the given bridge 
OpenFlow10
OpenFlow11
OpenFlow12
OpenFlow13
OpenFlow14
OpenFlow15z -t 5 --versionz -t 5 list bridge r   	protocols[]" z, zOpenFlow versionszOpenFlow versions :z -O rT   rU   z dump-group-stats rR   z dump-tlv-map rS   z dump-meters z meter-stats N)rj   rk   rl   rm   rn   ro   )r#   r$   rA   findreplacer]   rangeintr*   r/   rY   )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   rZ   OpenVSwitch.get_flow_versionsG  si   
 ,,,,,,
 00DII;o1NO ))yyk+F846 	H%002Dd"#IIcN1$4TYYs^D(00b9??E	 3 !9!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	% 	 "rL   c           
        V P                  V P                   RV 24      pVR,          ^ 8X  d   VR,          P                  4        F  pV P                  V P                   RV 2V P                   RV 2V P                   RV 2V P                   RV R2.4       V P
                  '       g   Ki  V P                  V P                   R	V 24       K  	  R
# R
# )z&Collect port list of the given bridge z -t 5 list-ports r   r   z
 cfm/show z
 qos/show z bond/show z get Interface z optionsrV   N)r\   r$   rA   r/   r0   r&   )r   rz   port_list_resultrH   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 @ +rL   )r(   r&   N)networkvirt)__name__
__module____qualname____firstlineno__
short_descplugin_nameprofilesr0   r$   rY   r1   r&   r(   r:   r3   r4   r5   rZ   r[   __static_attributes____classdictcell__)__classdict__s   @r   r	   r	      s^     )JK"HDDEEJKN'`CJGR?BL LrL   r	   c                       ] tR tRtRtRtR# )RedHatOpenVSwitchi   N)r
   zopenvswitch[2-9].*zopenvswitch-dpdkznuage-openvswitch6windgate-fp)r   r   r   r   packagesr   r   rL   r   r   r     s	     HrL   r   c                   :   a a ] tR tRt oRtRtV 3R ltRtVtV ;t	# )DebianOpenVSwitchi  c                X  < V P                  R 4      '       d   RV n        V P                   V P                   2V n        V P                   V P                   2V n        V P                   V P                   2V n        V P                   V P
                   2V n        \        SV `  4        R# )zopenstack-hypervisorzopenstack-hypervisor.N)r   ovs_cmd_prer0   r$   rY   r1   superr:   )r   	__class__s   &r   r:   DebianOpenVSwitch.setup  s    3446D++,TYYK8DI++,TYYK8DI ,,-djj\:DJ ,,-djj\:DJrL   )r0   r1   rY   r   r$   )zopenvswitch-switchr!   )zD/var/snap/openstack-hypervisor/common/etc/openvswitch/system-id.conf)
r   r   r   r   r   filesr:   r   r   __classcell__)r   r   s   @@r   r   r     s     :HE rL   r   )osr   rB   sos.report.pluginsr   r   r   r   r	   r   r   r   rL   r   <module>r      sB     	 O OKL& KL\ \  \< rL   