# Copyright (C) 2014 Adam Stokes <adam.stokes@ubuntu.com> # This file is part of the sos project: https://github.com/sosreport/sos # # This copyrighted material is made available to anyone wishing to use, # modify, copy, or redistribute it subject to the terms and conditions of # version 2 of the GNU General Public License. # # See the LICENSE file in the source distribution for further information. from os import environ import re from sos.report.plugins import Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin class OpenVSwitch(Plugin): short_desc = 'OpenVSwitch networking' plugin_name = "openvswitch" profiles = ('network', 'virt') actl = "ovs-appctl" check_dpdk = False check_6wind = False def setup(self): all_logs = self.get_option("all_logs") log_dirs = [ '/var/log/openvswitch/', '/usr/local/var/log/openvswitch/', ] dpdk_enabled = self.collect_cmd_output( "ovs-vsctl -t 5 get Open_vSwitch . other_config:dpdk-init") self.check_dpdk = (dpdk_enabled["status"] == 0 and dpdk_enabled["output"].startswith('"true"')) self.check_6wind = any(self.is_installed(p) for p in ['6windgate-fp', 'nuage-openvswitch']) if environ.get('OVS_LOGDIR'): log_dirs.append(environ.get('OVS_LOGDIR')) if not all_logs: self.add_copy_spec([ self.path_join(ld, '*.log') for ld in log_dirs ]) else: self.add_copy_spec(log_dirs) self.add_copy_spec([ "/run/openvswitch/ovsdb-server.pid", "/run/openvswitch/ovs-vswitchd.pid", "/run/openvswitch/ovs-monitor-ipsec.pid" ]) self.add_copy_spec([ self.path_join('/usr/local/etc/openvswitch', 'conf.db'), self.path_join('/etc/openvswitch', 'conf.db'), self.path_join('/var/lib/openvswitch', 'conf.db'), ]) ovs_dbdir = environ.get('OVS_DBDIR') if ovs_dbdir: self.add_copy_spec(self.path_join(ovs_dbdir, 'conf.db')) self.add_file_tags({ "/var/log/openvswitch/ovs-vswitchd.log": "openvswitch_daemon_log", "/var/log/openvswitch/ovsdb-server.log": "openvswitch_server_log" }) self.add_cmd_output([ # List the contents of important runtime directories "ls -laZ /run/openvswitch", "ls -laZ /dev/hugepages/", "ls -laZ /dev/vfio", "ls -laZ /var/lib/vhost_sockets", # List devices and their drivers "dpdk_nic_bind --status", "dpdk-devbind.py --status", "driverctl list-devices", "driverctl -v list-devices", "driverctl list-overrides", "driverctl -v list-overrides", "driverctl list-persisted", # Capture a list of all bond devices "ovs-appctl bond/list", # Capture more details from bond devices "ovs-appctl bond/show", # Capture LACP details "ovs-appctl lacp/show", "ovs-appctl lacp/show-stats", # Capture coverage stats" "ovs-appctl coverage/show", # Capture cached routes "ovs-appctl ovs/route/show", # Capture tnl arp table" "ovs-appctl tnl/arp/show", # Capture a list of listening ports" "ovs-appctl tnl/ports/show -v", # Capture upcall information "ovs-appctl upcall/show", # Capture OVS list "ovs-vsctl -t 5 list Open_vSwitch", # Capture OVS interface list "ovs-vsctl -t 5 list interface", # Capture OVS detailed information from all the bridges "ovs-vsctl -t 5 list bridge", # Capture OVS datapath list "ovs-vsctl -t 5 list datapath", # Capture DPDK queue to pmd mapping "ovs-appctl dpif-netdev/pmd-rxq-show -secs 5", "ovs-appctl dpif-netdev/pmd-rxq-show -secs 30", "ovs-appctl dpif-netdev/pmd-rxq-show", # Capture DPDK pmd stats "ovs-appctl dpif-netdev/pmd-stats-show", # Capture DPDK pmd performance counters "ovs-appctl dpif-netdev/pmd-perf-show", # Capture ofproto tunnel configs "ovs-appctl ofproto/list-tunnels", # Capture ipsec tunnel information "ovs-appctl -t ovs-monitor-ipsec tunnels/show", "ovs-appctl -t ovs-monitor-ipsec xfrm/state", "ovs-appctl -t ovs-monitor-ipsec xfrm/policies", # Capture OVS offload enabled flows "ovs-dpctl dump-flows --name -m type=offloaded", # Capture OVS slowdatapth flows "ovs-dpctl dump-flows --name -m type=ovs", # Capture dpcls implementations "ovs-appctl dpif-netdev/subtable-lookup-prio-get", # Capture dpif implementations "ovs-appctl dpif-netdev/dpif-impl-get", # Capture miniflow extract implementations "ovs-appctl dpif-netdev/miniflow-parser-get", # Capture DPDK pmd sleep config "ovs-appctl dpif-netdev/pmd-sleep-show", # Capture additional DPDK info "ovs-appctl dpdk/lcore-list", "ovs-appctl dpdk/log-list", "ovs-appctl dpdk/get-malloc-stats", # Capture dpdk mempool info "ovs-appctl netdev-dpdk/get-mempool-info" ]) # Capture DPDK and other parameters self.add_cmd_output("ovs-vsctl -t 5 get Open_vSwitch . other_config", tags="openvswitch_other_config") # The '-t 5' adds an upper bound on how long to wait to connect # to the Open vSwitch server, avoiding hangs when running sos. self.add_cmd_output("ovs-vsctl -t 5 show", tags="ovs_vsctl_show") # Gather systemd services logs self.add_journal(units="openvswitch") self.add_journal(units="openvswitch-nonetwork") self.add_journal(units="ovs-vswitchd") self.add_journal(units="ovsdb-server") self.add_journal(units="ovs-configuration") self.add_journal(units="openvswitch-ipsec") self.collect_ovs_info() self.collect_datapath() self.collect_ovs_bridge_info() def collect_ovs_info(self): """ Collect output of OVS commands """ files_6wind = [ "/etc/systemd/system/multi-user.target.wants/openvswitch.service", "/etc/sysctl.d/60-6wind-system-auto-reboot.conf", "/etc/openvswitch/system-id.conf", "/etc/openvswitch/*.db", "/etc/ld.so.conf.d/linux-fp-sync-fptun.conf", "/etc/NetworkManager/conf.d/fpn0.conf", "/etc/default/openvswitch", "/etc/logrotate.d/openvswitch", "/etc/linux-fp-sync.env", "/etc/fp-daemons.env", "/etc/fp-vdev.ini", "/etc/fpm.env", "/etc/6WINDGate/fp.config", "/etc/6WINDGate/fpnsdk.config", "/etc/dms.d/fp-dms.conf", "/etc/dms.d/fpmd-dms.conf", "/etc/dms.d/fpsd-dms.conf", "/etc/fast-path.env", "/etc/fps-fp.env", ] if self.check_6wind: self.add_copy_spec(files_6wind) self.add_cmd_output([ # Various fast-path stats "fp-cli fp-vswitch-stats", "fp-cli dpdk-core-port-mapping", "fp-cpu-usage", "fp-cli fp-vswitch-masks", "fp-cli fp-vswitch-flows", "fp-shmem-dpvi", "fp-cli stats non-zero", "fp-cli stats", "fp-cli dpdk-cp-filter-budget", "ovs-appctl vm/port-detailed-show", "ovs-appctl upcall/show", "fp-cli nfct4", "ovs-appctl vm/port-vip-list-show", "fp-shmem-ports -s", "ovs-dpctl show -s", "fpcmd fp-vswitch-flows", "fp-cli fp-vswitch-ports percore", "fp-cli dpdk-debug-pool", "fp-cli dump-size", "fp-cli conf runtime", "fp-cli conf compiled", "fp-cli iface", "ovs-appctl memory/show", ]) self.add_journal(units="virtual-accelerator") for table in ['filter', 'mangle', 'raw', 'nat']: self.add_cmd_output(["fpcmd nf4-rules %s" % table]) # 6wind doesn't care on which bridge the ports are, there's only # one bridge and it's alubr0 port_list = self.collect_cmd_output("fp-cli fp-vswitch-ports") if port_list['status'] == 0: for port in port_list['output'].splitlines(): mport = re.match(r'^([\d]+):[\s]+([^\s]+)', port) if mport: port_name = mport.group(2) self.add_cmd_output([ "fp-cli dpdk-cp-filter-budget %s" % port_name, ]) def collect_datapath(self): """ Gather the datapath information for each datapath """ dp_list_result = self.collect_cmd_output('ovs-appctl dpctl/dump-dps') if dp_list_result['status'] == 0: for dps in dp_list_result['output'].splitlines(): self.add_cmd_output([ "%s dpctl/show -s %s" % (self.actl, dps), "%s dpctl/dump-flows -m %s" % (self.actl, dps), "%s dpctl/dump-conntrack -m %s" % (self.actl, dps), "%s dpctl/ct-stats-show -m %s" % (self.actl, dps), "%s dpctl/ipf-get-status %s" % (self.actl, dps), ]) def collect_ovs_bridge_info(self): """ Gather additional output for each OVS bridge on the host. """ br_list_result = self.collect_cmd_output("ovs-vsctl -t 5 list-br") if br_list_result['status'] != 0: return for bri in br_list_result['output'].splitlines(): self.add_cmd_output([ "%s bridge/dump-flows --offload-stats %s" % (self.actl, bri), "%s dpif/show-dp-features %s" % (self.actl, bri), "%s fdb/show %s" % (self.actl, bri), "%s fdb/stats-show %s" % (self.actl, bri), "%s mdb/show %s" % (self.actl, bri), "ovs-ofctl dump-flows %s" % bri, "ovs-ofctl dump-ports-desc %s" % bri, "ovs-ofctl dump-ports %s" % bri, "ovs-ofctl queue-get-config %s" % bri, "ovs-ofctl queue-stats %s" % bri, "ovs-ofctl show %s" % bri, "ovs-ofctl dump-groups %s" % bri, ]) self.get_flow_versions(bri) self.get_port_list(bri) if self.check_dpdk: iface_list_result = self.exec_cmd( "ovs-vsctl -t 5 list-ifaces %s" % bri ) if iface_list_result['status'] == 0: for iface in iface_list_result['output'].splitlines(): self.add_cmd_output( "ovs-appctl netdev-dpdk/get-mempool-info %s" % iface) if self.check_6wind: self.add_cmd_output([ "%s evpn/vip-list-show %s" % (self.actl, bri), "%s bridge/dump-conntracks-summary %s" % (self.actl, bri), "%s bridge/acl-table ingress/egress %s" % (self.actl, bri), "%s bridge/acl-table %s" % (self.actl, bri), "%s ofproto/show %s" % (self.actl, bri), ]) vrf_list = self.collect_cmd_output( "%s vrf/list %s" % (self.actl, bri)) if vrf_list['status'] == 0: vrfs = vrf_list['output'].split()[1:] for vrf in vrfs: self.add_cmd_output([ "%s vrf/route-table %s" % (self.actl, vrf), ]) evpn_list = self.collect_cmd_output( "ovs-appctl evpn/list %s" % bri) if evpn_list['status'] == 0: evpns = evpn_list['output'].split()[1:] for evpn in evpns: self.add_cmd_output([ f"{self.actl} evpn/mac-table {evpn}", f"{self.actl} evpn/arp-table {evpn}", f"{self.actl} evpn/dump-flows {bri} {evpn}", f"{self.actl} evpn/dhcp-pool-show {bri} {evpn}", f"{self.actl} evpn/dhcp-relay-show {bri} {evpn}", f"{self.actl} evpn/dhcp-static-show {bri} {evpn}", f"{self.actl} evpn/dhcp-table-show {bri} {evpn}", f"{self.actl} evpn/proxy-arp-filter-list " f"{bri} {evpn}", f"{self.actl} evpn/show {bri} {evpn}", f"{self.actl} port/dscp-table {bri} {evpn}", ]) def get_flow_versions(self, bridge): """ Collect flow version of the given bridge """ # Flow protocols currently supported flow_versions = [ "OpenFlow10", "OpenFlow11", "OpenFlow12", "OpenFlow13", "OpenFlow14", "OpenFlow15" ] # Flow protocol hex identifiers ofp_versions = { 0x01: "OpenFlow10", 0x02: "OpenFlow11", 0x03: "OpenFlow12", 0x04: "OpenFlow13", 0x05: "OpenFlow14", 0x06: "OpenFlow15", } ofp_ver_result = self.collect_cmd_output("ovs-ofctl -t 5 --version") # List protocols currently in use, if any br_info = self.collect_cmd_output(f"ovs-vsctl -t 5 list " f"bridge {bridge}") br_protos = [] for line in br_info['output'].splitlines(): if "protocols" in line: br_protos_ln = line[line.find("[")+1:line.find("]")] br_protos = br_protos_ln.replace('"', '').split(", ") # If 'list bridge' yeilded no protocols, use the range of # protocols enabled by default on this version of ovs. if br_protos == [''] and ofp_ver_result['output']: ofp_version_range = ofp_ver_result['output'].splitlines() ver_range = [] for line in ofp_version_range: if "OpenFlow versions" in line: ver_sp = line.split("OpenFlow versions ") ver = ver_sp[1].split(":") ver_range = range(int(ver[0], 16), int(ver[1], 16)+1) for protocol in ver_range: if protocol in ofp_versions: br_protos.append(ofp_versions[protocol]) # Collect flow information for relevant protocol versions only for flow in flow_versions: if flow in br_protos: self.add_cmd_output([ f"ovs-ofctl -O {flow} show {bridge}", f"ovs-ofctl -O {flow} dump-groups {bridge}", f"ovs-ofctl -O {flow} dump-group-stats {bridge}", f"ovs-ofctl -O {flow} dump-flows {bridge}", f"ovs-ofctl -O {flow} dump-tlv-map {bridge}", f"ovs-ofctl -O {flow} dump-ports-desc {bridge}", ]) def get_port_list(self, bridge): """ Collect port list of the given bridge """ port_list_result = self.exec_cmd(f"ovs-vsctl -t 5 list-ports {bridge}") if port_list_result['status'] == 0: for port in port_list_result['output'].splitlines(): self.add_cmd_output([ "ovs-appctl cfm/show %s" % port, "ovs-appctl qos/show %s" % port, # Not all ports are "bond"s, but all "bond"s are # a single port "ovs-appctl bond/show %s" % port, # In the case of IPSec, we should pull the config "ovs-vsctl get Interface %s options" % port, ]) if self.check_dpdk: self.add_cmd_output( "ovs-appctl netdev-dpdk/get-mempool-info %s" % port) class RedHatOpenVSwitch(OpenVSwitch, RedHatPlugin): packages = ('openvswitch', 'openvswitch[2-9].*', 'openvswitch-dpdk', 'nuage-openvswitch' '6windgate-fp') class DebianOpenVSwitch(OpenVSwitch, DebianPlugin, UbuntuPlugin): packages = ('openvswitch-switch', 'nuage-openvswitch') # vim: set et ts=4 sw=4 :
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
__pycache__ | Folder | 0755 |
|
|
__init__.py | File | 132.74 KB | 0644 |
|
aap_controller.py | File | 3.1 KB | 0644 |
|
aap_eda.py | File | 1.88 KB | 0644 |
|
aap_hub.py | File | 1.31 KB | 0644 |
|
abrt.py | File | 1.51 KB | 0644 |
|
acpid.py | File | 917 B | 0644 |
|
activemq.py | File | 1.65 KB | 0644 |
|
aide.py | File | 1.41 KB | 0644 |
|
alternatives.py | File | 2.29 KB | 0644 |
|
anaconda.py | File | 1.37 KB | 0644 |
|
anacron.py | File | 782 B | 0644 |
|
ansible.py | File | 1.04 KB | 0644 |
|
apache.py | File | 5.2 KB | 0644 |
|
apparmor.py | File | 1.05 KB | 0644 |
|
apport.py | File | 1.37 KB | 0644 |
|
apt.py | File | 1.85 KB | 0644 |
|
arcconf.py | File | 2.13 KB | 0644 |
|
ata.py | File | 1016 B | 0644 |
|
auditd.py | File | 1.83 KB | 0644 |
|
autofs.py | File | 2.77 KB | 0644 |
|
azure.py | File | 2.37 KB | 0644 |
|
bcache.py | File | 2.2 KB | 0644 |
|
block.py | File | 2.34 KB | 0644 |
|
boom.py | File | 1.05 KB | 0644 |
|
boot.py | File | 1.92 KB | 0644 |
|
btrfs.py | File | 739 B | 0644 |
|
buildah.py | File | 1.83 KB | 0644 |
|
candlepin.py | File | 5.84 KB | 0644 |
|
canonical_livepatch.py | File | 958 B | 0644 |
|
canonical_livepatch_onprem.py | File | 1.22 KB | 0644 |
|
ceph_ansible.py | File | 956 B | 0644 |
|
ceph_common.py | File | 3.49 KB | 0644 |
|
ceph_iscsi.py | File | 1.55 KB | 0644 |
|
ceph_mds.py | File | 4.07 KB | 0644 |
|
ceph_mgr.py | File | 5.81 KB | 0644 |
|
ceph_mon.py | File | 9.41 KB | 0644 |
|
ceph_osd.py | File | 5.22 KB | 0644 |
|
ceph_rgw.py | File | 2.23 KB | 0644 |
|
cgroups.py | File | 1.36 KB | 0644 |
|
chrony.py | File | 1.54 KB | 0644 |
|
cifs.py | File | 962 B | 0644 |
|
clear_containers.py | File | 2.58 KB | 0644 |
|
cloud_init.py | File | 1.07 KB | 0644 |
|
cman.py | File | 1.78 KB | 0644 |
|
cobbler.py | File | 1.29 KB | 0644 |
|
cockpit.py | File | 968 B | 0644 |
|
collectd.py | File | 2.24 KB | 0644 |
|
collectl.py | File | 752 B | 0644 |
|
composer.py | File | 2.11 KB | 0644 |
|
conntrack.py | File | 2.37 KB | 0644 |
|
console.py | File | 871 B | 0644 |
|
container_log.py | File | 1.07 KB | 0644 |
|
containerd.py | File | 935 B | 0644 |
|
containers_common.py | File | 2.62 KB | 0644 |
|
convert2rhel.py | File | 1.04 KB | 0644 |
|
coredump.py | File | 1.45 KB | 0644 |
|
corosync.py | File | 2.42 KB | 0644 |
|
crio.py | File | 3.67 KB | 0644 |
|
cron.py | File | 1.01 KB | 0644 |
|
crypto.py | File | 1.38 KB | 0644 |
|
cs.py | File | 4.5 KB | 0644 |
|
ctdb.py | File | 1.42 KB | 0644 |
|
cups.py | File | 1.2 KB | 0644 |
|
cxl.py | File | 1.32 KB | 0644 |
|
date.py | File | 867 B | 0644 |
|
dbus.py | File | 877 B | 0644 |
|
dellrac.py | File | 1.71 KB | 0644 |
|
devicemapper.py | File | 1.13 KB | 0644 |
|
devices.py | File | 740 B | 0644 |
|
dhcp.py | File | 1.03 KB | 0644 |
|
discovery.py | File | 1.15 KB | 0644 |
|
distupgrade.py | File | 1.51 KB | 0644 |
|
dlm.py | File | 1.52 KB | 0644 |
|
dmraid.py | File | 1.29 KB | 0644 |
|
dnf.py | File | 5.2 KB | 0644 |
|
docker.py | File | 5.01 KB | 0644 |
|
docker_distribution.py | File | 1.3 KB | 0644 |
|
dovecot.py | File | 1007 B | 0644 |
|
dpkg.py | File | 1.14 KB | 0644 |
|
dracut.py | File | 902 B | 0644 |
|
drbd.py | File | 955 B | 0644 |
|
ds.py | File | 3.61 KB | 0644 |
|
ebpf.py | File | 3.09 KB | 0644 |
|
elastic.py | File | 2.52 KB | 0644 |
|
etcd.py | File | 2.1 KB | 0644 |
|
fapolicyd.py | File | 1.21 KB | 0644 |
|
fcoe.py | File | 1018 B | 0644 |
|
fibrechannel.py | File | 1.77 KB | 0644 |
|
filesys.py | File | 3.82 KB | 0644 |
|
firewall_tables.py | File | 5.07 KB | 0644 |
|
firewalld.py | File | 1.95 KB | 0644 |
|
flatpak.py | File | 1.29 KB | 0644 |
|
foreman.py | File | 14.53 KB | 0644 |
|
foreman_installer.py | File | 3.8 KB | 0644 |
|
foreman_openscap.py | File | 830 B | 0644 |
|
foreman_proxy.py | File | 2.29 KB | 0644 |
|
freeipmi.py | File | 896 B | 0644 |
|
frr.py | File | 1.79 KB | 0644 |
|
fwupd.py | File | 1.41 KB | 0644 |
|
gcp.py | File | 5.38 KB | 0644 |
|
gdm.py | File | 735 B | 0644 |
|
gfs2.py | File | 1.04 KB | 0644 |
|
gluster.py | File | 5.36 KB | 0644 |
|
gluster_block.py | File | 1.07 KB | 0644 |
|
grafana.py | File | 2.25 KB | 0644 |
|
greenboot.py | File | 905 B | 0644 |
|
grub.py | File | 988 B | 0644 |
|
grub2.py | File | 2.87 KB | 0644 |
|
gssproxy.py | File | 823 B | 0644 |
|
haproxy.py | File | 2.41 KB | 0644 |
|
hardware.py | File | 1.13 KB | 0644 |
|
host.py | File | 1.74 KB | 0644 |
|
hpasm.py | File | 898 B | 0644 |
|
hpssm.py | File | 2.72 KB | 0644 |
|
hts.py | File | 700 B | 0644 |
|
hyperv.py | File | 886 B | 0644 |
|
i18n.py | File | 774 B | 0644 |
|
infiniband.py | File | 2.67 KB | 0644 |
|
infinidat.py | File | 1.38 KB | 0644 |
|
insights.py | File | 2.51 KB | 0644 |
|
ipa.py | File | 7.33 KB | 0644 |
|
ipmitool.py | File | 1.56 KB | 0644 |
|
iprconfig.py | File | 4.54 KB | 0644 |
|
ipvs.py | File | 1.04 KB | 0644 |
|
iscsi.py | File | 2.18 KB | 0644 |
|
iscsitarget.py | File | 1.25 KB | 0644 |
|
jars.py | File | 5.15 KB | 0644 |
|
java.py | File | 978 B | 0644 |
|
juju.py | File | 2.45 KB | 0644 |
|
kata_containers.py | File | 1.34 KB | 0644 |
|
kdump.py | File | 3.86 KB | 0644 |
|
keepalived.py | File | 855 B | 0644 |
|
kernel.py | File | 5.63 KB | 0644 |
|
kernelrt.py | File | 1.66 KB | 0644 |
|
keyutils.py | File | 894 B | 0644 |
|
kimchi.py | File | 1009 B | 0644 |
|
kpatch.py | File | 1.02 KB | 0644 |
|
krb5.py | File | 1.66 KB | 0644 |
|
kubernetes.py | File | 10.92 KB | 0644 |
|
kvm.py | File | 954 B | 0644 |
|
landscape.py | File | 3.17 KB | 0644 |
|
ldap.py | File | 2.99 KB | 0644 |
|
leapp.py | File | 1.04 KB | 0644 |
|
libraries.py | File | 1.55 KB | 0644 |
|
libreswan.py | File | 2.47 KB | 0644 |
|
libvirt.py | File | 3.76 KB | 0644 |
|
lightdm.py | File | 1.11 KB | 0644 |
|
lilo.py | File | 716 B | 0644 |
|
login.py | File | 1 KB | 0644 |
|
logrotate.py | File | 1.24 KB | 0644 |
|
logs.py | File | 4.69 KB | 0644 |
|
lstopo.py | File | 1.21 KB | 0644 |
|
lustre.py | File | 2.73 KB | 0644 |
|
lvm2.py | File | 4.61 KB | 0644 |
|
lxd.py | File | 2.37 KB | 0644 |
|
maas.py | File | 4.79 KB | 0644 |
|
manageiq.py | File | 2.86 KB | 0644 |
|
md.py | File | 1.22 KB | 0644 |
|
megacli.py | File | 1.02 KB | 0644 |
|
mellanox_firmware.py | File | 4.7 KB | 0644 |
|
memcached.py | File | 1.19 KB | 0644 |
|
memory.py | File | 1.36 KB | 0644 |
|
microk8s.py | File | 1.98 KB | 0644 |
|
microshift.py | File | 6.99 KB | 0644 |
|
microshift_ovn.py | File | 1.69 KB | 0644 |
|
migration_results.py | File | 637 B | 0644 |
|
mongodb.py | File | 1.95 KB | 0644 |
|
monit.py | File | 1.68 KB | 0644 |
|
mpt.py | File | 732 B | 0644 |
|
mssql.py | File | 3.34 KB | 0644 |
|
multipath.py | File | 1011 B | 0644 |
|
mvcli.py | File | 978 B | 0644 |
|
mysql.py | File | 3.99 KB | 0644 |
|
named.py | File | 2.5 KB | 0644 |
|
navicli.py | File | 2.49 KB | 0644 |
|
networking.py | File | 12.45 KB | 0644 |
|
networkmanager.py | File | 5.01 KB | 0644 |
|
nfs.py | File | 1.32 KB | 0644 |
|
nfsganesha.py | File | 1.2 KB | 0644 |
|
nginx.py | File | 1.53 KB | 0644 |
|
nis.py | File | 812 B | 0644 |
|
nodejs.py | File | 1.18 KB | 0644 |
|
npm.py | File | 2.06 KB | 0644 |
|
nscd.py | File | 989 B | 0644 |
|
nss.py | File | 885 B | 0644 |
|
ntb.py | File | 937 B | 0644 |
|
ntp.py | File | 1.41 KB | 0644 |
|
numa.py | File | 1.46 KB | 0644 |
|
nvidia.py | File | 1.63 KB | 0644 |
|
nvme.py | File | 1.71 KB | 0644 |
|
nvmetcli.py | File | 977 B | 0644 |
|
oddjob.py | File | 871 B | 0644 |
|
omnipath_client.py | File | 2.06 KB | 0644 |
|
omnipath_manager.py | File | 2.49 KB | 0644 |
|
omsa.py | File | 1.64 KB | 0644 |
|
opencl.py | File | 692 B | 0644 |
|
opencontrail.py | File | 1.35 KB | 0644 |
|
opendaylight.py | File | 1.38 KB | 0644 |
|
opengl.py | File | 694 B | 0644 |
|
openhpi.py | File | 878 B | 0644 |
|
openshift.py | File | 16.93 KB | 0644 |
|
openshift_ovn.py | File | 2.61 KB | 0644 |
|
openssl.py | File | 1.4 KB | 0644 |
|
openstack_ansible.py | File | 1.31 KB | 0644 |
|
openstack_aodh.py | File | 3.91 KB | 0644 |
|
openstack_barbican.py | File | 1.74 KB | 0644 |
|
openstack_ceilometer.py | File | 3.22 KB | 0644 |
|
openstack_cinder.py | File | 6.82 KB | 0644 |
|
openstack_database.py | File | 2.48 KB | 0644 |
|
openstack_designate.py | File | 3.61 KB | 0644 |
|
openstack_edpm.py | File | 1.38 KB | 0644 |
|
openstack_glance.py | File | 4.65 KB | 0644 |
|
openstack_gnocchi.py | File | 3.38 KB | 0644 |
|
openstack_heat.py | File | 5.3 KB | 0644 |
|
openstack_horizon.py | File | 3.26 KB | 0644 |
|
openstack_instack.py | File | 6 KB | 0644 |
|
openstack_ironic.py | File | 8.29 KB | 0644 |
|
openstack_keystone.py | File | 4.88 KB | 0644 |
|
openstack_manila.py | File | 3.65 KB | 0644 |
|
openstack_masakari.py | File | 2.06 KB | 0644 |
|
openstack_masakarimonitors.py | File | 1.5 KB | 0644 |
|
openstack_mistral.py | File | 1.6 KB | 0644 |
|
openstack_neutron.py | File | 5.27 KB | 0644 |
|
openstack_nova.py | File | 8.74 KB | 0644 |
|
openstack_novajoin.py | File | 1.15 KB | 0644 |
|
openstack_octavia.py | File | 5.17 KB | 0644 |
|
openstack_placement.py | File | 4.83 KB | 0644 |
|
openstack_sahara.py | File | 2.65 KB | 0644 |
|
openstack_swift.py | File | 2.92 KB | 0644 |
|
openstack_tripleo.py | File | 1.62 KB | 0644 |
|
openstack_trove.py | File | 2.23 KB | 0644 |
|
opensvc.py | File | 2.72 KB | 0644 |
|
openvswitch.py | File | 16.77 KB | 0644 |
|
origin.py | File | 8.68 KB | 0644 |
|
os_net_config.py | File | 743 B | 0644 |
|
ostree.py | File | 1.05 KB | 0644 |
|
ovirt.py | File | 9.47 KB | 0644 |
|
ovirt_engine_backup.py | File | 1.76 KB | 0644 |
|
ovirt_hosted_engine.py | File | 2.16 KB | 0644 |
|
ovirt_imageio.py | File | 1.56 KB | 0644 |
|
ovirt_node.py | File | 1.62 KB | 0644 |
|
ovirt_provider_ovn.py | File | 1.16 KB | 0644 |
|
ovn_central.py | File | 8.21 KB | 0644 |
|
ovn_host.py | File | 2.27 KB | 0644 |
|
pacemaker.py | File | 5.85 KB | 0644 |
|
pam.py | File | 1.32 KB | 0644 |
|
pci.py | File | 1.35 KB | 0644 |
|
pcp.py | File | 5.99 KB | 0644 |
|
perccli.py | File | 1.84 KB | 0644 |
|
peripety.py | File | 1.19 KB | 0644 |
|
perl.py | File | 662 B | 0644 |
|
pmem.py | File | 3.34 KB | 0644 |
|
podman.py | File | 5.44 KB | 0644 |
|
postfix.py | File | 4.32 KB | 0644 |
|
postgresql.py | File | 4.44 KB | 0644 |
|
powerpath.py | File | 1.82 KB | 0644 |
|
powerpc.py | File | 4.29 KB | 0644 |
|
ppp.py | File | 848 B | 0644 |
|
procenv.py | File | 710 B | 0644 |
|
process.py | File | 4.12 KB | 0644 |
|
processor.py | File | 2.11 KB | 0644 |
|
proxmox.py | File | 2.98 KB | 0644 |
|
psacct.py | File | 1.29 KB | 0644 |
|
ptp.py | File | 817 B | 0644 |
|
pulp.py | File | 7.55 KB | 0644 |
|
pulpcore.py | File | 7.15 KB | 0644 |
|
puppet.py | File | 2.16 KB | 0644 |
|
pxe.py | File | 1.39 KB | 0644 |
|
python.py | File | 3.79 KB | 0644 |
|
qaucli.py | File | 1.37 KB | 0644 |
|
qpid.py | File | 3.54 KB | 0644 |
|
qpid_dispatch.py | File | 2.19 KB | 0644 |
|
qt.py | File | 809 B | 0644 |
|
quagga.py | File | 755 B | 0644 |
|
rabbitmq.py | File | 2.73 KB | 0644 |
|
radius.py | File | 1.34 KB | 0644 |
|
rasdaemon.py | File | 996 B | 0644 |
|
rear.py | File | 1.22 KB | 0644 |
|
redis.py | File | 1.58 KB | 0644 |
|
release.py | File | 1.2 KB | 0644 |
|
rhc.py | File | 1.48 KB | 0644 |
|
rhcos.py | File | 1.36 KB | 0644 |
|
rhui.py | File | 2.25 KB | 0644 |
|
rhv_analyzer.py | File | 941 B | 0644 |
|
rpm.py | File | 2.33 KB | 0644 |
|
rpmostree.py | File | 1.12 KB | 0644 |
|
ruby.py | File | 813 B | 0644 |
|
s390.py | File | 2.38 KB | 0644 |
|
salt.py | File | 2.14 KB | 0644 |
|
saltmaster.py | File | 2.15 KB | 0644 |
|
samba.py | File | 1.76 KB | 0644 |
|
sanlock.py | File | 1000 B | 0644 |
|
saphana.py | File | 2.56 KB | 0644 |
|
sapnw.py | File | 5.22 KB | 0644 |
|
sar.py | File | 3.96 KB | 0644 |
|
sas3ircu.py | File | 1.21 KB | 0644 |
|
scsi.py | File | 2.38 KB | 0644 |
|
seagate_ses.py | File | 2.12 KB | 0644 |
|
sedutil.py | File | 1.7 KB | 0644 |
|
selinux.py | File | 2 KB | 0644 |
|
sendmail.py | File | 1.18 KB | 0644 |
|
services.py | File | 1.44 KB | 0644 |
|
shmcli.py | File | 4.32 KB | 0644 |
|
skydive.py | File | 2.28 KB | 0644 |
|
slurm.py | File | 3.76 KB | 0644 |
|
smartcard.py | File | 1.48 KB | 0644 |
|
smclient.py | File | 1.91 KB | 0644 |
|
snap.py | File | 2.99 KB | 0644 |
|
snapper.py | File | 730 B | 0644 |
|
snmp.py | File | 903 B | 0644 |
|
sos_extras.py | File | 3.74 KB | 0644 |
|
soundcard.py | File | 1.08 KB | 0644 |
|
squid.py | File | 1.28 KB | 0644 |
|
ssh.py | File | 3.45 KB | 0644 |
|
ssmtp.py | File | 976 B | 0644 |
|
sssd.py | File | 2.33 KB | 0644 |
|
storageconsole.py | File | 1.66 KB | 0644 |
|
storcli.py | File | 1.83 KB | 0644 |
|
stratis.py | File | 1.12 KB | 0644 |
|
subscription_manager.py | File | 4.99 KB | 0644 |
|
sudo.py | File | 873 B | 0644 |
|
sunrpc.py | File | 818 B | 0644 |
|
symcli.py | File | 3.46 KB | 0644 |
|
system.py | File | 1.23 KB | 0644 |
|
systemd.py | File | 3.48 KB | 0644 |
|
systemtap.py | File | 881 B | 0644 |
|
sysvipc.py | File | 886 B | 0644 |
|
targetcli.py | File | 1.12 KB | 0644 |
|
teamd.py | File | 1.24 KB | 0644 |
|
telegraf.py | File | 1.68 KB | 0644 |
|
tftpserver.py | File | 840 B | 0644 |
|
tigervnc.py | File | 1.67 KB | 0644 |
|
tomcat.py | File | 1.99 KB | 0644 |
|
tpm2.py | File | 989 B | 0644 |
|
tuned.py | File | 1.17 KB | 0644 |
|
ubuntu.py | File | 1.93 KB | 0644 |
|
udev.py | File | 900 B | 0644 |
|
udisks.py | File | 804 B | 0644 |
|
ufw.py | File | 987 B | 0644 |
|
ultrapath.py | File | 1.29 KB | 0644 |
|
unbound.py | File | 899 B | 0644 |
|
unity.py | File | 703 B | 0644 |
|
unpackaged.py | File | 3.48 KB | 0644 |
|
usb.py | File | 731 B | 0644 |
|
usbguard.py | File | 813 B | 0644 |
|
validation_framework.py | File | 1.5 KB | 0644 |
|
vault.py | File | 1.78 KB | 0644 |
|
vdo.py | File | 976 B | 0644 |
|
vdsm.py | File | 5.08 KB | 0644 |
|
vectordev.py | File | 1.2 KB | 0644 |
|
veritas.py | File | 1.33 KB | 0644 |
|
vhostmd.py | File | 1.76 KB | 0644 |
|
virsh.py | File | 3.79 KB | 0644 |
|
virtwho.py | File | 985 B | 0644 |
|
vmware.py | File | 1.73 KB | 0644 |
|
vsftpd.py | File | 724 B | 0644 |
|
vulkan.py | File | 700 B | 0644 |
|
watchdog.py | File | 2.83 KB | 0644 |
|
wireless.py | File | 886 B | 0644 |
|
x11.py | File | 1.38 KB | 0644 |
|
xdp.py | File | 659 B | 0644 |
|
xen.py | File | 3.32 KB | 0644 |
|
xfs.py | File | 1.35 KB | 0644 |
|
xinetd.py | File | 837 B | 0644 |
|
zfs.py | File | 1.91 KB | 0644 |
|
zvm.py | File | 2.77 KB | 0644 |
|