+
    iE  c                   sz    ^ 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# )
i    )environN)PluginRedHatPluginDebianPluginUbuntuPluginc                   sh   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           	     s	  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   sF   <"   T F  pSP                  V4      x  K  	  R # 5i)N)is_installed)Z.0Zpselfs   & C/usr/lib/python3.14/site-packages/sos/report/plugins/openvswitch.pyZ	<genexpr>Z$OpenVSwitch.setup.<locals>.<genexpr>)   s'      FD 9:t0033Ds   !TFZ
OVS_LOGDIRz*.logz/usr/local/etc/openvswitchzconf.dbz/etc/openvswitchz/var/lib/openvswitchZ	OVS_DBDIRz%/var/log/openvswitch/ovs-vswitchd.logZopenvswitch_daemon_logz%/var/log/openvswitch/ovsdb-server.logZ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_configZopenvswitch_other_config)Ztagsz
 -t 5 showZovs_vsctl_showr   Z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)Z
get_optioncollect_cmd_outputvctlZ
startswith
check_dpdkZanycheck_6windr    Zgetappendadd_copy_specZ	path_joinZadd_file_tagsZadd_dir_listingadd_cmd_outputactldpctladd_journalcollect_ovs_infocollect_datapathcollect_ovs_bridge_info)r   r   Zlog_dirsZdpdk_enabledZldZ	ovs_dbdirs   f     r   setupZ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                s   . 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)ZfilterZmangleZrawZnat)r   r   r   r   r   r   r   
splitlinesreZmatchZgroup)r   Zfiles_6windZtableZ	port_listportZmportZ	port_names   &      r   r   Z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           
     s`   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   r   r   r   )r   Zdp_list_resultZdpss   &  r   r   ZOpenVSwitch.collect_datapath   s    00DII;o1NO(#q(%h/::<##yyk6yyk!6se<yyk!:3%@yyk!9#?yyk!7u=%  = )r!   c                s   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 :i   NNz vrf/route-table z evpn/list z evpn/mac-table z evpn/arp-table z evpn/dump-flows Z 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   r   r   r   ofctlget_flow_versionsget_port_listr   exec_cmdr   split)r   Zbr_list_resultZbriZiface_list_resultZifaceZvrf_listZvrfsZvrfZ	evpn_listZevpnsZevpns   &          r   r   Z#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 9r!   c                s   . 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	   Z	protocolsZ[Z]Z"Z z, zOpenFlow versionszOpenFlow versions Z:z -O r$   r%   z dump-group-stats r"   z dump-tlv-map r#   z dump-meters z meter-stats N)r,   r-   r.   r/   r0   r1   )r   r   r   ZfindZreplacer+   ZrangeZintr   r   r'   )r   bridgeZflow_versionsZofp_versionsZofp_ver_resultZbr_infoZ	br_protosZlineZbr_protos_lnZofp_version_rangeZ	ver_rangeZver_spZverZprotocolZflows   &&             r   r(   Z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	% 	 "r!   c           
     s   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 optionsr&   N)r*   r   r   r   r   r   )r   r2   Zport_list_resultr    s   &&  r   r)   Z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 @ +r!   )r   r   N)ZnetworkZvirt)__name__
__module____qualname____firstlineno__Z
short_descZplugin_nameZprofilesr   r   r'   r   r   r   r   r   r   r   r(   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r!   r   c                   s    ] tR tRtRtRtR# )RedHatOpenVSwitchi   N)r   zopenvswitch[2-9].*zopenvswitch-dpdkznuage-openvswitch6windgate-fp)r3   r4   r5   r6   packagesr7   r;   r!   r   r:   r:     s	     Hr!   r:   c                   s:   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                sX  < 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_prer   r   r'   r   Zsuperr   )r   	__class__s   &r   r   ZDebianOpenVSwitch.setup  s    3446D++,TYYK8DI++,TYYK8DI ,,-djj\:DJ ,,-djj\:DJr!   )r   r   r'   r>   r   )zopenvswitch-switchr   )zD/var/snap/openstack-hypervisor/common/etc/openvswitch/system-id.conf)
r3   r4   r5   r6   r<   Zfilesr   r7   r8   Z__classcell__)r?   r9   s   @@r   r=   r=     s     :HE r!   r=   )Zosr    r   Zsos.report.pluginsr   r   r   r   r   r:   r=   r;   r!   r   <module>r@      sB     	 O OKL& KL\ \  \< r!   