# Copyright (C) 2014 Red Hat, Inc. Neependra Khare <nkhare@redhat.com> # Copyright (C) 2014 Red Hat, Inc. Bryn M. Reeves <bmr@redhat.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 fnmatch import translate import re from sos.report.plugins import (Plugin, RedHatPlugin, DebianPlugin, UbuntuPlugin, PluginOpt) import json class Kubernetes(Plugin): short_desc = 'Kubernetes container orchestration platform' plugin_name = "kubernetes" profiles = ('container',) plugin_timeout = 1200 config_files = [ "/etc/kubernetes", "/run/flannel", ] resources = [ 'events', 'deployments', 'ingresses', 'pods', 'pvc', 'services', 'daemonsets', 'replicasets', 'endpoints', 'statefulsets', 'configmaps', 'serviceaccounts', 'secrets', 'jobs', 'cronjobs', 'clusterroles', 'clusterrolebindings' ] # these are not namespaced, must pull separately. global_resources = [ 'sc', 'pv', 'roles', 'rolebindings' ] option_list = [ PluginOpt('all', default=False, desc='collect all namespace output separately'), PluginOpt('describe', default=False, desc='collect describe output of all resources'), PluginOpt('podlogs', default=False, desc='capture stdout/stderr logs from pods'), PluginOpt('podlogs-filter', default='', val_type=str, desc='only collect logs from pods matching this pattern') ] kube_cmd = "kubectl" def check_is_master(self): """ Check if this is the master node """ return any(self.path_exists(f) for f in self.files) def setup(self): self.add_copy_spec(self.config_files) self.add_env_var([ 'KUBECONFIG', 'KUBERNETES_HTTP_PROXY', 'KUBERNETES_HTTPS_PROXY', 'KUBERNETES_NO_PROXY' ]) svcs = [ 'kubelet', 'kube-apiserver', 'kube-proxy', 'kube-scheduler', 'kube-controller-manager', 'snap.kubelet.daemon', 'snap.kube-apiserver.daemon', 'snap.kube-proxy.daemon', 'snap.kube-scheduler.daemon', 'snap.kube-controller-manager.daemon' ] for svc in svcs: self.add_journal(units=svc) # We can only grab kubectl output from the master if not self.check_is_master(): return for subcmd in ['version', 'config view']: self.add_cmd_output( f'{self.kube_cmd} {subcmd}', subdir='cluster-info' ) if self.get_option('all'): self.add_cmd_output([ f"{self.kube_cmd} get -o json {res}" for res in self.global_resources ], subdir='cluster-info') else: self.add_cmd_output([ f"{self.kube_cmd} get {res}" for res in self.global_resources ], subdir='cluster-info') # Get detailed node information nodes = self.collect_cmd_output(f"{self.kube_cmd} get nodes", subdir='cluster-info') if nodes['status'] == 0 and self.get_option('describe'): for line in nodes['output'].splitlines()[1:]: # find first word in the line and ignore empty+blank lines words = line.split() if not words: continue node = words[0] self.add_cmd_output( f"{self.kube_cmd} describe node {node}", subdir='cluster-info' ) self.add_cmd_output([ f"{self.kube_cmd} get -o json nodes", ], subdir='cluster-info') # Also collect master metrics self.add_cmd_output( f"{self.kube_cmd} get --raw /metrics", subdir='cluster-info' ) # CNV is not part of the base installation, but can be added if self.is_installed('kubevirt-virtctl'): self.resources.extend(['vms', 'vmis']) self.add_cmd_output('virtctl version') self.collect_per_resource_details() self.collect_all_resources() def collect_per_resource_details(self): """ Collect details about each resource in all namespaces """ # get all namespaces in use kns = self.collect_cmd_output(f'{self.kube_cmd} get namespaces', subdir='cluster-info') # namespace is the 1st word on line, until the line has spaces only kn_output = kns['output'].splitlines()[1:] knsps = [n.split()[0] for n in kn_output if n and len(n.split())] for nspace in knsps: knsp = '--namespace=%s' % nspace if self.get_option('all'): k_cmd = f'{self.kube_cmd} get -o json {knsp}' for res in self.resources: self.add_cmd_output( f'{k_cmd} {res}', subdir=f'cluster-info/{nspace}' ) if self.get_option('describe'): # need to drop json formatting for this k_cmd = f'{self.kube_cmd} {knsp}' for res in self.resources: if res == 'events': continue ret = self.exec_cmd(f'{k_cmd} get {res}') if ret['status'] == 0: k_list = [k.split()[0] for k in ret['output'].splitlines()[1:]] for item in k_list: k_cmd = f'{self.kube_cmd} {knsp}' self.add_cmd_output( f'{k_cmd} describe {res} {item}', subdir=f'cluster-info/{nspace}/{res}' ) if self.get_option('podlogs'): k_cmd = f'{self.kube_cmd} get -o json {knsp}' ret = self.exec_cmd(f'{k_cmd} pods') if ret['status'] == 0: pods = json.loads(ret['output']) # allow shell-style regex reg = (translate(self.get_option('podlogs-filter')) if self.get_option('podlogs-filter') else None) for pod in pods["items"]: if reg and not re.match(reg, pod["metadata"]["name"]): continue _subdir = (f'cluster-info/' f'{pod["metadata"]["namespace"]}/podlogs/' f'{pod["metadata"]["name"]}') if "containers" in pod["spec"]: for cont in pod["spec"]["containers"]: pod_name = pod["metadata"]["name"] cont_name = cont["name"] self.add_cmd_output( f'{self.kube_cmd} {knsp} logs ' f'{pod_name} -c {cont_name}', subdir=_subdir ) if "initContainers" in pod["spec"]: for cont in pod["spec"]["initContainers"]: pod_name = pod["metadata"]["name"] cont_name = cont["name"] self.add_cmd_output( f'{self.kube_cmd} {knsp} logs ' f'{pod_name} -c {cont_name}', subdir=_subdir ) def collect_all_resources(self): """ Collect details about all resources """ if not self.get_option('all'): k_cmd = f'{self.kube_cmd} get --all-namespaces=true' for res in self.resources: self.add_cmd_output( f'{k_cmd} {res}', subdir='cluster-info' ) def postproc(self): # First, clear sensitive data from the json output collected. # This will mask values when the "name" looks susceptible of # values worth obfuscating, i.e. if the name contains strings # like "pass", "pwd", "key" or "token" env_regexp = r'(?P<var>{\s*"name":\s*[^,]*' \ r'(pass|pwd|key|token|cred|PASS|PWD|KEY)[^,]*,\s*"value":)[^}]*' self.do_cmd_output_sub(self.kube_cmd, env_regexp, r'\g<var> "********"') # Next, we need to handle the private keys and certs in some # output that is not hit by the previous iteration. self.do_cmd_private_sub(self.kube_cmd) class RedHatKubernetes(Kubernetes, RedHatPlugin): # OpenShift Container Platform uses the atomic-openshift-master package # to provide kubernetes packages = ('kubernetes', 'kubernetes-master', 'atomic-openshift-master') files = ( '/etc/origin/master/admin.kubeconfig', '/etc/origin/node/pods/master-config.yaml', ) kube_cmd = "kubectl" def setup(self): # Rather than loading the config file, use the OCP command directly # that wraps kubectl, so we don't have to manually account for any # other changes the `oc` binary may implement if self.path_exists('/etc/origin/master/admin.kubeconfig'): self.kube_cmd = 'oc' self.resources.extend([ 'limitranges', 'policies', 'resourcequotas', 'routes' ]) self.global_resources.extend([ 'projects', 'pvs' ]) super().setup() class UbuntuKubernetes(Kubernetes, UbuntuPlugin, DebianPlugin): packages = ('kubernetes',) files = ( '/root/cdk/cdk_addons_kubectl_config', '/etc/kubernetes/admin.conf', '/var/snap/microk8s/current/credentials/client.config', ) services = ( # CDK 'cdk.master.auth-webhook', ) def setup(self): for _kconf in self.files: if self.path_exists(_kconf): self.kube_cmd += f" --kubeconfig={_kconf}" break for svc in self.services: self.add_journal(units=svc) if self.is_installed('microk8s'): self.kube_cmd = 'microk8s kubectl' self.config_files.extend([ '/root/cdk/kubelet/config.yaml', '/root/cdk/audit/audit-policy.yaml' ]) super().setup() # vim: et ts=5 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 |
|