U
    *bn?                     @   sf   d dl mZmZmZmZ d dlm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)environNc                   @   s    e Zd ZdZdZdZdd ZdS )OpenVSwitchzOpenVSwitch networkingopenvswitch)ZnetworkZvirtc           (   $      s    d}ddg} d}|d dko4|d d}t fd	d
dD }d}dddddddddddddddddddg}td r|td  |s  fd!d
|D  n
 |  d"d#d$g   d%d& d'd& d(d&g td)}|r  |d&  	d*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKg"  j
dLdM  j
dNdM  j
dOdM  j
dPdM  j
dQdM  j
dRdM |rt |  	dSdTdUdVdWdXdYdZd[d\d;d]d^d_d`dadbdcdddedfdgdhg  j
didM djD ]}	 	dk|	 g q dl}
|
d dkrt|
d  D ]2}tdm|}|r@|dn} 	do| g q@ dp}|d dkr|d  D ]B} 	dq||f dr||f ds||f dt||f du||f g q dv} dw}|d dkr|d  D ]} 	dx||f dy||f dz||f d{||f d|||f d}| d~| d| d| d| d| g ddddddg}ddddddd}d| } |}g }|d  D ]>}d|kr||dd |d }|ddd}q|dgkr|d r|d  }g }|D ]F}d|kr|dd d}tt|d dt|d dd }q|D ]}||krj|||  qj|D ]V}||kr 	d||f d||f d||f d||f d||f d||f g q d| }|d dkrL|d  D ]<} 	d| d| d| d| g |r 	d|  q|r d| } | d dkr| d  D ]}! 	d|!  qz|r
 	d||f d||f d||f d||f d||f g  d||f }"|"d dkr&|"d  dd  }#|#D ]}$ 	d||$f g q
 d| }%|%d dkr
|%d  dd  }&|&D ]}' 	d||'f d||'f d|||'f d|||'f d|||'f d|||'f d|||'f d|||'f d|||'f d|||'f g
 qZq
d S )Nall_logsz/var/log/openvswitch/z/usr/local/var/log/openvswitch/z8ovs-vsctl -t 5 get Open_vSwitch . other_config:dpdk-initZstatusr   outputz"true"c                    s   g | ]}  |qS  )Zis_installed).0pselfr   @/usr/lib/python3/dist-packages/sos/report/plugins/openvswitch.py
<listcomp>%   s     z%OpenVSwitch.setup.<locals>.<listcomp>)z6windgate-fpnuage-openvswitchz
ovs-appctlz?/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
OVS_LOGDIRc                    s   g | ]}  |d qS )z*.log)	path_join)r   Zldr   r   r   r   C   s    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/openvswitchZ	OVS_DBDIRzovs-vsctl -t 5 showzls -laZ /run/openvswitchzls -laZ /dev/hugepages/zls -laZ /dev/vfiozls -laZ /var/lib/vhost_socketszdpdk_nic_bind --statuszdpdk-devbind.py --statuszdriverctl list-deviceszdriverctl list-overrideszovs-appctl bond/listzovs-appctl bond/showzovs-appctl lacp/showzovs-appctl lacp/show-statszovs-appctl coverage/showzovs-appctl ovs/route/showzovs-appctl tnl/arp/showzovs-appctl tnl/ports/show -vzovs-appctl upcall/showz.ovs-vsctl -t 5 get Open_vSwitch . other_configz ovs-vsctl -t 5 list Open_vSwitchzovs-vsctl -t 5 list interfacezovs-vsctl -t 5 list bridgez#ovs-appctl dpif-netdev/pmd-rxq-showz%ovs-appctl dpif-netdev/pmd-stats-showz$ovs-appctl dpif-netdev/pmd-perf-showzovs-appctl ofproto/list-tunnelsz,ovs-appctl -t ovs-monitor-ipsec tunnels/showz*ovs-appctl -t ovs-monitor-ipsec xfrm/statez-ovs-appctl -t ovs-monitor-ipsec xfrm/policiesz-ovs-dpctl dump-flows --name -m type=offloadedz'ovs-dpctl dump-flows --name -m type=ovsz/ovs-appctl dpif-netdev/subtable-lookup-prio-getz$ovs-appctl dpif-netdev/dpif-impl-getz*ovs-appctl dpif-netdev/miniflow-parser-getr   )Zunitszopenvswitch-nonetworkzovs-vswitchdzovsdb-serverzovs-configurationzopenvswitch-ipsecz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 ovs-appctl vm/port-detailed-showzfp-cli nfct4z ovs-appctl vm/port-vip-list-showzfp-shmem-ports -szovs-dpctl 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ovs-appctl memory/showzvirtual-accelerator)filterZmanglerawZnatzfpcmd nf4-rules %szfp-cli fp-vswitch-portsz^([\d]+):[\s]+([^\s]+)   zfp-cli dpdk-cp-filter-budget %szovs-appctl dpctl/dump-dpsz%s dpctl/show -s %sz%s dpctl/dump-flows -m %sz%s dpctl/dump-conntrack -m %sz%s dpctl/ct-stats-show -m %sz%s dpctl/ipf-get-status %szovs-vsctl -t 5 list-brzovs-ofctl -t 5 --versionz'%s bridge/dump-flows --offload-stats %sz%s dpif/show-dp-features %sz%s fdb/show %sz%s fdb/stats-show %sz%s mdb/show %szovs-ofctl dump-flows %szovs-ofctl dump-ports-desc %szovs-ofctl dump-ports %szovs-ofctl queue-get-config %szovs-ofctl queue-stats %szovs-ofctl show %sZ
OpenFlow10Z
OpenFlow11Z
OpenFlow12Z
OpenFlow13Z
OpenFlow14Z
OpenFlow15)   r               zovs-vsctl -t 5 list bridge %sZ	protocols[r   ]" z, zOpenFlow versionszOpenFlow versions :   zovs-ofctl -O %s show %szovs-ofctl -O %s dump-groups %sz#ovs-ofctl -O %s dump-group-stats %szovs-ofctl -O %s dump-flows %szovs-ofctl -O %s dump-tlv-map %sz"ovs-ofctl -O %s dump-ports-desc %szovs-vsctl -t 5 list-ports %szovs-appctl cfm/show %szovs-appctl qos/show %szovs-appctl bond/show %sz"ovs-vsctl get Interface %s optionsz*ovs-appctl netdev-dpdk/get-mempool-info %szovs-vsctl -t 5 list-ifaces %sz%s evpn/vip-list-show %sz$%s bridge/dump-conntracks-summary %sz%%s bridge/acl-table ingress/egress %sz%s bridge/acl-table %sz%s ofproto/show %sz%s vrf/list %sz%s vrf/route-table %szovs-appctl evpn/list %sz%s evpn/mac-table %sz%s evpn/arp-table %sz%s evpn/dump-flows %s %sz%s evpn/dhcp-pool-show %s %sz%s evpn/dhcp-relay-show %s %sz%s evpn/dhcp-static-show %s %sz%s evpn/dhcp-table-show %s %sz#%s evpn/proxy-arp-filter-list %s %sz%s evpn/show %s %sz%s port/dscp-table %s %s)Z
get_optionZcollect_cmd_output
startswithanyr   getappendZadd_copy_specr   Zadd_cmd_outputZadd_journal
splitlinesrematchgroupfindreplacesplitrangeintZexec_cmd)(r   r	   Zlog_dirsZdpdk_enabledZ
check_dpdkZcheck_6windZactlZfiles_6windZ	ovs_dbdirtableZ	port_listZportmZ	port_nameZdp_list_resultZdpZbr_list_resultZofp_ver_resultbrZflow_versionsZofp_versionsZovs_list_bridge_cmdZbr_infoZ	br_protoslineZbr_protos_lnZofp_version_rangeZ	ver_rangevZprotocolZflowZport_list_resultZiface_list_resultZifaceZvrf_listZvrfsZvrfZ	evpn_listZevpnsZevpnr   r   r   setup   s<   







@










	










&








	










          zOpenVSwitch.setupN)__name__
__module____qualname__Z
short_descZplugin_nameZprofilesr4   r   r   r   r   r      s   r   c                   @   s   e Zd ZdZdS )RedHatOpenVSwitch)r   zopenvswitch2.*zopenvswitch-dpdkznuage-openvswitch6windgate-fpNr5   r6   r7   Zpackagesr   r   r   r   r8   k  s   r8   c                   @   s   e Zd ZdZdS )DebianOpenVSwitch)zopenvswitch-switchr   Nr9   r   r   r   r   r:   r  s   r:   )Zsos.report.pluginsr   r   r   r   osr   r'   r   r8   r:   r   r   r   r   <module>   s     [