Source code for insights.specs.default

"""
This module defines all datasources used by standard Red Hat Insight components.

To define data sources that override the components in this file, create a
`insights.core.spec_factory.SpecFactory` with "insights.specs" as the constructor
argument. Data sources created with that factory will override components in
this file with the same `name` keyword argument. This allows overriding the
data sources that standard Insights `Parsers` resolve against.
"""

import logging
import os
import re

from insights.core.context import ClusterArchiveContext
from insights.core.context import DockerImageContext
from insights.core.context import HostContext
from insights.core.context import HostArchiveContext
from insights.core.context import OpenShiftContext

from insights.core.dr import SkipComponent
from insights.core.plugins import datasource
from insights.core.spec_factory import CommandOutputProvider, ContentException, DatasourceProvider, RawFileProvider
from insights.core.spec_factory import simple_file, simple_command, glob_file, command_with_args
from insights.core.spec_factory import first_of, foreach_collect, foreach_execute
from insights.core.spec_factory import first_file, listdir
from insights.parsers.mount import Mount, ProcMounts
from insights.parsers.dnf_module import DnfModuleList
from insights.parsers.uname import Uname
from insights.combiners.cloud_provider import CloudProvider
from insights.combiners.satellite_version import SatelliteVersion
from insights.components.rhel_version import IsRhel8
from insights.specs import Specs

from grp import getgrgid
from os import stat
from pwd import getpwuid


logger = logging.getLogger(__name__)


[docs]def get_owner(filename): st = stat(filename) name = getpwuid(st.st_uid).pw_name group = getgrgid(st.st_gid).gr_name return (name, group)
[docs]def get_cmd_and_package_in_ps(broker, target_command): ps = broker[DefaultSpecs.ps_auxww].content ctx = broker[HostContext] results = set() for p in ps: p_splits = p.split(None, 10) cmd = p_splits[10].split()[0] if len(p_splits) == 11 else '' which = ctx.shell_out("which {0}".format(cmd)) if target_command in os.path.basename(cmd) else None resolved = ctx.shell_out("readlink -e {0}".format(which[0])) if which else None pkg = ctx.shell_out("/bin/rpm -qf {0}".format(resolved[0])) if resolved else None if cmd and pkg is not None: results.add("{0} {1}".format(cmd, pkg[0])) return results
def _make_rpm_formatter(fmt=None): if fmt is None: fmt = [ '"name":"%{NAME}"', '"epoch":"%{EPOCH}"', '"version":"%{VERSION}"', '"release":"%{RELEASE}"', '"arch":"%{ARCH}"', '"installtime":"%{INSTALLTIME:date}"', '"buildtime":"%{BUILDTIME}"', '"vendor":"%{VENDOR}"', '"buildhost":"%{BUILDHOST}"', '"sigpgp":"%{SIGPGP:pgpsig}"' ] def inner(idx=None): if idx: return "\{" + ",".join(fmt[:idx]) + "\}\n" else: return "\{" + ",".join(fmt) + "\}\n" return inner format_rpm = _make_rpm_formatter()
[docs]class DefaultSpecs(Specs): amq_broker = glob_file("/var/opt/amq-broker/*/etc/broker.xml") auditctl_status = simple_command("/sbin/auditctl -s") auditd_conf = simple_file("/etc/audit/auditd.conf") audit_log = simple_file("/var/log/audit/audit.log") autofs_conf = simple_file("/etc/autofs.conf") avc_hash_stats = simple_file("/sys/fs/selinux/avc/hash_stats") avc_cache_threshold = simple_file("/sys/fs/selinux/avc/cache_threshold")
[docs] @datasource(CloudProvider) def is_aws(broker): cp = broker[CloudProvider] if cp and cp.cloud_provider == CloudProvider.AWS: return True raise SkipComponent()
aws_instance_id_doc = simple_command("/usr/bin/curl -s http://169.254.169.254/latest/dynamic/instance-identity/document --connect-timeout 5", deps=[is_aws]) aws_instance_id_pkcs7 = simple_command("/usr/bin/curl -s http://169.254.169.254/latest/dynamic/instance-identity/pkcs7 --connect-timeout 5", deps=[is_aws]) aws_instance_type = simple_command("/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-type --connect-timeout 5", deps=[is_aws])
[docs] @datasource(CloudProvider) def is_azure(broker): cp = broker[CloudProvider] if cp and cp.cloud_provider == CloudProvider.AZURE: return True raise SkipComponent()
azure_instance_type = simple_command("/usr/bin/curl -s -H Metadata:true http://169.254.169.254/metadata/instance/compute/vmSize?api-version=2018-10-01&format=text --connect-timeout 5", deps=[is_azure]) bios_uuid = simple_command("/usr/sbin/dmidecode -s system-uuid") blkid = simple_command("/sbin/blkid -c /dev/null") bond = glob_file("/proc/net/bonding/bond*") bond_dynamic_lb = glob_file("/sys/class/net/bond[0-9]*/bonding/tlb_dynamic_lb") boot_loader_entries = glob_file("/boot/loader/entries/*.conf") branch_info = simple_file("/branch_info", kind=RawFileProvider) brctl_show = simple_command("/usr/sbin/brctl show") candlepin_log = simple_file("/var/log/candlepin/candlepin.log") candlepin_error_log = simple_file("/var/log/candlepin/error.log") cgroups = simple_file("/proc/cgroups") checkin_conf = simple_file("/etc/splice/checkin.conf") ps_alxwww = simple_command("/bin/ps alxwww") ps_aux = simple_command("/bin/ps aux") ps_auxcww = simple_command("/bin/ps auxcww") ps_auxww = simple_command("/bin/ps auxww") ps_ef = simple_command("/bin/ps -ef") ps_eo = simple_command("/usr/bin/ps -eo pid,ppid,comm")
[docs] @datasource(ps_auxww) def tomcat_base(broker): """Path: Tomcat base path""" ps = broker[DefaultSpecs.ps_auxww].content results = [] findall = re.compile(r"\-Dcatalina\.base=(\S+)").findall for p in ps: found = findall(p) if found: # Only get the path which is absolute results.extend(f for f in found if f[0] == '/') return list(set(results))
catalina_out = foreach_collect(tomcat_base, "%s/catalina.out") catalina_server_log = foreach_collect(tomcat_base, "%s/catalina*.log") cciss = glob_file("/proc/driver/cciss/cciss*") cdc_wdm = simple_file("/sys/bus/usb/drivers/cdc_wdm/module/refcnt") ceilometer_central_log = simple_file("/var/log/ceilometer/central.log") ceilometer_collector_log = first_file(["/var/log/containers/ceilometer/collector.log", "/var/log/ceilometer/collector.log"]) ceilometer_compute_log = first_file(["/var/log/containers/ceilometer/compute.log", "/var/log/ceilometer/compute.log"]) ceilometer_conf = first_file(["/var/lib/config-data/puppet-generated/ceilometer/etc/ceilometer/ceilometer.conf", "/etc/ceilometer/ceilometer.conf"]) ceph_socket_files = listdir("/var/run/ceph/ceph-*.*.asok", context=HostContext) ceph_conf = first_file(["/var/lib/config-data/puppet-generated/ceph/etc/ceph/ceph.conf", "/etc/ceph/ceph.conf"]) ceph_config_show = foreach_execute(ceph_socket_files, "/usr/bin/ceph daemon %s config show") ceph_df_detail = simple_command("/usr/bin/ceph df detail -f json") ceph_health_detail = simple_command("/usr/bin/ceph health detail -f json")
[docs] @datasource(ps_auxww) def is_ceph_monitor(broker): ps = broker[DefaultSpecs.ps_auxww].content findall = re.compile(r"ceph\-mon").findall if any(findall(p) for p in ps): return True raise SkipComponent()
ceph_insights = simple_command("/usr/bin/ceph insights", deps=[is_ceph_monitor]) ceph_log = glob_file(r"var/log/ceph/ceph.log*") ceph_osd_dump = simple_command("/usr/bin/ceph osd dump -f json") ceph_osd_df = simple_command("/usr/bin/ceph osd df -f json") ceph_osd_ec_profile_ls = simple_command("/usr/bin/ceph osd erasure-code-profile ls") ceph_osd_ec_profile_get = foreach_execute(ceph_osd_ec_profile_ls, "/usr/bin/ceph osd erasure-code-profile get %s -f json") ceph_osd_log = glob_file(r"var/log/ceph/ceph-osd*.log") ceph_osd_tree = simple_command("/usr/bin/ceph osd tree -f json") ceph_s = simple_command("/usr/bin/ceph -s -f json") ceph_v = simple_command("/usr/bin/ceph -v") certificates_enddate = simple_command("/usr/bin/find /etc/origin/node /etc/origin/master /etc/pki -type f -exec /usr/bin/openssl x509 -noout -enddate -in '{}' \; -exec echo 'FileName= {}' \;") chkconfig = simple_command("/sbin/chkconfig --list") chrony_conf = simple_file("/etc/chrony.conf") chronyc_sources = simple_command("/usr/bin/chronyc sources") cib_xml = simple_file("/var/lib/pacemaker/cib/cib.xml") cinder_api_log = first_file(["/var/log/containers/cinder/cinder-api.log", "/var/log/cinder/cinder-api.log"]) cinder_conf = first_file(["/var/lib/config-data/puppet-generated/cinder/etc/cinder/cinder.conf", "/etc/cinder/cinder.conf"]) cinder_volume_log = simple_file("/var/log/cinder/volume.log") cloud_init_custom_network = simple_file("/etc/cloud/cloud.cfg.d/99-custom-networking.cfg") cloud_init_log = simple_file("/var/log/cloud-init.log") cluster_conf = simple_file("/etc/cluster/cluster.conf") cmdline = simple_file("/proc/cmdline") cpe = simple_file("/etc/system-release-cpe") # are these locations for different rhel versions? cobbler_settings = first_file(["/etc/cobbler/settings", "/conf/cobbler/settings"]) cobbler_modules_conf = first_file(["/etc/cobbler/modules.conf", "/conf/cobbler/modules.conf"]) corosync = simple_file("/etc/sysconfig/corosync") corosync_conf = simple_file("/etc/corosync/corosync.conf") cpu_cores = glob_file("sys/devices/system/cpu/cpu[0-9]*/online") cpu_siblings = glob_file("sys/devices/system/cpu/cpu[0-9]*/topology/thread_siblings_list") cpu_smt_active = simple_file("sys/devices/system/cpu/smt/active") cpu_smt_control = simple_file("sys/devices/system/cpu/smt/control") cpu_vulns = glob_file("sys/devices/system/cpu/vulnerabilities/*") cpu_vulns_meltdown = simple_file("sys/devices/system/cpu/vulnerabilities/meltdown") cpu_vulns_spectre_v1 = simple_file("sys/devices/system/cpu/vulnerabilities/spectre_v1") cpu_vulns_spectre_v2 = simple_file("sys/devices/system/cpu/vulnerabilities/spectre_v2") cpu_vulns_spec_store_bypass = simple_file("sys/devices/system/cpu/vulnerabilities/spec_store_bypass") cpuinfo = simple_file("/proc/cpuinfo") cpuinfo_max_freq = simple_file("/sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq") cpupower_frequency_info = simple_command("/usr/bin/cpupower -c all frequency-info") cpuset_cpus = simple_file("/sys/fs/cgroup/cpuset/cpuset.cpus") crypto_policies_config = simple_file("/etc/crypto-policies/config") crypto_policies_state_current = simple_file("/etc/crypto-policies/state/current") crypto_policies_opensshserver = simple_file("/etc/crypto-policies/back-ends/opensshserver.config") crypto_policies_bind = simple_file("/etc/crypto-policies/back-ends/bind.config") current_clocksource = simple_file("/sys/devices/system/clocksource/clocksource0/current_clocksource") date = simple_command("/bin/date") date_iso = simple_command("/bin/date --iso-8601=seconds") date_utc = simple_command("/bin/date --utc") db2licm_l = simple_command("/usr/bin/db2licm -l") df__al = simple_command("/bin/df -al") df__alP = simple_command("/bin/df -alP") df__li = simple_command("/bin/df -li") dig = simple_command("/usr/bin/dig +dnssec . DNSKEY") dig_dnssec = simple_command("/usr/bin/dig +dnssec . SOA") dig_edns = simple_command("/usr/bin/dig +edns=0 . SOA") dig_noedns = simple_command("/usr/bin/dig +noedns . SOA") dirsrv = simple_file("/etc/sysconfig/dirsrv") dirsrv_access = glob_file("var/log/dirsrv/*/access*") dirsrv_errors = glob_file("var/log/dirsrv/*/errors*") display_java = simple_command("/usr/sbin/alternatives --display java") dmesg = simple_command("/bin/dmesg") dmesg_log = simple_file("/var/log/dmesg") dmidecode = simple_command("/usr/sbin/dmidecode") dmsetup_info = simple_command("/usr/sbin/dmsetup info -C") dnf_modules = glob_file("/etc/dnf/modules.d/*.module") dnf_module_list = simple_command("/usr/bin/dnf -C --noplugins module list", deps=[IsRhel8])
[docs] @datasource(DnfModuleList) def dnf_module_names(broker): dml = broker[DnfModuleList] if dml: return (' ').join(dml) raise SkipComponent()
dnf_module_info = command_with_args("/usr/bin/dnf -C --noplugins module info %s", dnf_module_names, deps=[IsRhel8]) dnsmasq_config = glob_file(["/etc/dnsmasq.conf", "/etc/dnsmasq.d/*.conf"]) docker_info = simple_command("/usr/bin/docker info") docker_list_containers = simple_command("/usr/bin/docker ps --all --no-trunc") docker_list_images = simple_command("/usr/bin/docker images --all --no-trunc --digests")
[docs] @datasource(docker_list_images) def docker_image_ids(broker): """Command: docker_image_ids""" images = broker[DefaultSpecs.docker_list_images] try: result = set() for l in images.content[1:]: result.add(l.split(None)[3].strip()) except: raise ContentException("No docker images.") if result: return list(result) raise ContentException("No docker images.")
# TODO: This parsing is broken.
[docs] @datasource(docker_list_containers) def docker_container_ids(broker): """Command: docker_container_ids""" containers = broker[DefaultSpecs.docker_list_containers] try: result = set() for l in containers.content[1:]: result.add(l.split(None)[3].strip()) except: raise ContentException("No docker containers.") if result: return list(result) raise ContentException("No docker containers.")
docker_host_machine_id = simple_file("/etc/redhat-access-insights/machine-id") docker_image_inspect = foreach_execute(docker_image_ids, "/usr/bin/docker inspect %s") docker_container_inspect = foreach_execute(docker_container_ids, "/usr/bin/docker inspect %s") docker_network = simple_file("/etc/sysconfig/docker-network") docker_storage = simple_file("/etc/sysconfig/docker-storage") docker_storage_setup = simple_file("/etc/sysconfig/docker-storage-setup") docker_sysconfig = simple_file("/etc/sysconfig/docker")
[docs] @datasource(ProcMounts) def dumpdev(broker): mnt = broker[ProcMounts] mounted_dev = [m.mounted_device for m in mnt if m.mount_type in ('ext2', 'ext3', 'ext4')] if mounted_dev: return mounted_dev raise SkipComponent()
dumpe2fs_h = foreach_execute(dumpdev, "/sbin/dumpe2fs -h %s") engine_config_all = simple_command("/usr/bin/engine-config --all") engine_log = simple_file("/var/log/ovirt-engine/engine.log") etc_journald_conf = simple_file(r"etc/systemd/journald.conf") etc_journald_conf_d = glob_file(r"etc/systemd/journald.conf.d/*.conf") etc_machine_id = simple_file("/etc/machine-id") etcd_conf = simple_file("/etc/etcd/etcd.conf") ethernet_interfaces = listdir("/sys/class/net", context=HostContext) dcbtool_gc_dcb = foreach_execute(ethernet_interfaces, "/sbin/dcbtool gc %s dcb") ethtool = foreach_execute(ethernet_interfaces, "/sbin/ethtool %s") ethtool_S = foreach_execute(ethernet_interfaces, "/sbin/ethtool -S %s") ethtool_T = foreach_execute(ethernet_interfaces, "/sbin/ethtool -T %s") ethtool_a = foreach_execute(ethernet_interfaces, "/sbin/ethtool -a %s") ethtool_c = foreach_execute(ethernet_interfaces, "/sbin/ethtool -c %s") ethtool_g = foreach_execute(ethernet_interfaces, "/sbin/ethtool -g %s") ethtool_i = foreach_execute(ethernet_interfaces, "/sbin/ethtool -i %s") ethtool_k = foreach_execute(ethernet_interfaces, "/sbin/ethtool -k %s") exim_conf = simple_file("etc/exim.conf") facter = simple_command("/usr/bin/facter") fc_match = simple_command("/bin/fc-match -sv 'sans:regular:roman' family fontformat") fcoeadm_i = simple_command("/usr/sbin/fcoeadm -i") fdisk_l = simple_command("/sbin/fdisk -l") findmnt_lo_propagation = simple_command("/bin/findmnt -lo+PROPAGATION") firewalld_conf = simple_file("/etc/firewalld/firewalld.conf") foreman_production_log = simple_file("/var/log/foreman/production.log") foreman_proxy_conf = simple_file("/etc/foreman-proxy/settings.yml") foreman_proxy_log = simple_file("/var/log/foreman-proxy/proxy.log") foreman_satellite_log = simple_file("/var/log/foreman-installer/satellite.log") foreman_ssl_access_ssl_log = simple_file("var/log/httpd/foreman-ssl_access_ssl.log") foreman_rake_db_migrate_status = simple_command('/usr/sbin/foreman-rake db:migrate:status') foreman_tasks_config = first_file(["/etc/sysconfig/foreman-tasks", "/etc/sysconfig/dynflowd"]) freeipa_healthcheck_log = simple_file("/var/log/ipa/healthcheck/healthcheck.log") fstab = simple_file("/etc/fstab") galera_cnf = first_file(["/var/lib/config-data/puppet-generated/mysql/etc/my.cnf.d/galera.cnf", "/etc/my.cnf.d/galera.cnf"]) getconf_page_size = simple_command("/usr/bin/getconf PAGE_SIZE") getenforce = simple_command("/usr/sbin/getenforce") getsebool = simple_command("/usr/sbin/getsebool -a") glance_api_conf = first_file(["/var/lib/config-data/puppet-generated/glance_api/etc/glance/glance-api.conf", "/etc/glance/glance-api.conf"]) glance_api_log = first_file(["/var/log/containers/glance/api.log", "/var/log/glance/api.log"]) glance_cache_conf = first_file(["/var/lib/config-data/puppet-generated/glance_api/etc/glance/glance-cache.conf", "/etc/glance/glance-cache.conf"]) glance_registry_conf = simple_file("/etc/glance/glance-registry.conf") gluster_v_info = simple_command("/usr/sbin/gluster volume info") gluster_v_status = simple_command("/usr/sbin/gluster volume status") gluster_peer_status = simple_command("/usr/sbin/gluster peer status") gnocchi_conf = first_file(["/var/lib/config-data/puppet-generated/gnocchi/etc/gnocchi/gnocchi.conf", "/etc/gnocchi/gnocchi.conf"]) gnocchi_metricd_log = first_file(["/var/log/containers/gnocchi/gnocchi-metricd.log", "/var/log/gnocchi/metricd.log"]) grub_conf = simple_file("/boot/grub/grub.conf") grub_config_perms = simple_command("/bin/ls -l /boot/grub2/grub.cfg") # only RHEL7 and updwards grub_efi_conf = simple_file("/boot/efi/EFI/redhat/grub.conf") grub1_config_perms = simple_command("/bin/ls -l /boot/grub/grub.conf") # RHEL6 grub2_cfg = simple_file("/boot/grub2/grub.cfg") grub2_efi_cfg = simple_file("boot/efi/EFI/redhat/grub.cfg") grubby_default_index = simple_command("/usr/sbin/grubby --default-index") # only RHEL7 and updwards grubby_default_kernel = simple_command("/usr/sbin/grubby --default-kernel") # RHEL6 and updwards hammer_ping = simple_command("/usr/bin/hammer ping") hammer_task_list = simple_command("/usr/bin/hammer --config /root/.hammer/cli.modules.d/foreman.yml --output csv task list --search 'state=running AND ( label=Actions::Candlepin::ListenOnCandlepinEvents OR label=Actions::Katello::EventQueue::Monitor )'") haproxy_cfg = first_file(["/var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg", "/etc/haproxy/haproxy.cfg"]) heat_api_log = first_file(["/var/log/containers/heat/heat_api.log", "/var/log/heat/heat-api.log", "/var/log/heat/heat_api.log"]) heat_conf = first_file(["/var/lib/config-data/puppet-generated/heat/etc/heat/heat.conf", "/etc/heat/heat.conf"]) heat_crontab = simple_command("/usr/bin/crontab -l -u heat") heat_crontab_container = simple_command("docker exec heat_api_cron /usr/bin/crontab -l -u heat") heat_engine_log = first_file(["/var/log/containers/heat/heat-engine.log", "/var/log/heat/heat-engine.log"]) hostname = simple_command("/bin/hostname -f") hostname_default = simple_command("/bin/hostname") hostname_short = simple_command("/bin/hostname -s") hosts = simple_file("/etc/hosts") hponcfg_g = simple_command("/sbin/hponcfg -g") httpd_access_log = simple_file("/var/log/httpd/access_log") httpd_conf = glob_file( [ "/etc/httpd/conf/httpd.conf", "/etc/httpd/conf.d/*.conf", "/etc/httpd/conf.d/*/*.conf", "/etc/httpd/conf.modules.d/*.conf" ] ) httpd_conf_scl_httpd24 = glob_file( [ "/opt/rh/httpd24/root/etc/httpd/conf/httpd.conf", "/opt/rh/httpd24/root/etc/httpd/conf.d/*.conf", "/opt/rh/httpd24/root/etc/httpd/conf.d/*/*.conf", "/opt/rh/httpd24/root/etc/httpd/conf.modules.d/*.conf" ] ) httpd_conf_scl_jbcs_httpd24 = glob_file( [ "/opt/rh/jbcs-httpd24/root/etc/httpd/conf/httpd.conf", "/opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/*.conf", "/opt/rh/jbcs-httpd24/root/etc/httpd/conf.d/*/*.conf", "/opt/rh/jbcs-httpd24/root/etc/httpd/conf.modules.d/*.conf" ] ) httpd_error_log = simple_file("var/log/httpd/error_log") httpd24_httpd_error_log = simple_file("/opt/rh/httpd24/root/etc/httpd/logs/error_log") jbcs_httpd24_httpd_error_log = simple_file("/opt/rh/jbcs-httpd24/root/etc/httpd/logs/error_log") httpd_pid = simple_command("/usr/bin/pgrep -o httpd") httpd_limits = foreach_collect(httpd_pid, "/proc/%s/limits")
[docs] @datasource(SatelliteVersion) def is_sat(broker): sat = broker[SatelliteVersion] if sat: return True raise SkipComponent()
satellite_enabled_features = simple_command("/usr/bin/curl -sk https://localhost:9090/features --connect-timeout 5", deps=[is_sat]) virt_uuid_facts = simple_file("/etc/rhsm/facts/virt_uuid.facts")
[docs] @datasource(ps_auxww) def httpd_cmd(broker): """Command: httpd_command""" ps = broker[DefaultSpecs.ps_auxww].content ps_httpds = set() for p in ps: p_splits = p.split(None, 10) if len(p_splits) >= 11: cmd = p_splits[10].split()[0] # Should compatible with RHEL6 # e.g. /usr/sbin/httpd, /usr/sbin/httpd.worker and /usr/sbin/httpd.event # and SCL's httpd24-httpd if os.path.basename(cmd).startswith('httpd'): ps_httpds.add(cmd) # Running multiple httpd instances on RHEL is supported # https://access.redhat.com/solutions/21680 return list(ps_httpds)
[docs] @datasource(Mount) def httpd_on_nfs(broker): import json mnt = broker[Mount] mps = mnt.search(mount_type='nfs4') # get nfs 4.0 mount points nfs_mounts = [m.mount_point for m in mps if m['mount_options'].get("vers") == "4.0"] if nfs_mounts: # get all httpd ps httpd_pids = broker[HostContext].shell_out("pgrep httpd") if httpd_pids: open_nfs_files = 0 lsof_cmds = ["lsof -p {}".format(pid) for pid in httpd_pids if pid] # maybe there are thousands open files httpd_open_files = broker[HostContext].shell_out(lsof_cmds) for line in httpd_open_files: items = line.split() if len(items) > 8 and items[8].startswith(tuple(nfs_mounts)): open_nfs_files += 1 result_dict = {"http_ids": httpd_pids, "nfs_mounts": nfs_mounts, "open_nfs_files": open_nfs_files} return DatasourceProvider(content=json.dumps(result_dict), relative_path="httpd_open_nfsV4_files") raise SkipComponent()
httpd_M = foreach_execute(httpd_cmd, "%s -M") httpd_ssl_access_log = simple_file("/var/log/httpd/ssl_access_log") httpd_ssl_error_log = simple_file("/var/log/httpd/ssl_error_log") httpd_V = foreach_execute(httpd_cmd, "%s -V") ifcfg = glob_file("/etc/sysconfig/network-scripts/ifcfg-*") ifcfg_static_route = glob_file("/etc/sysconfig/network-scripts/route-*") ifconfig = simple_command("/sbin/ifconfig -a") imagemagick_policy = glob_file(["/etc/ImageMagick/policy.xml", "/usr/lib*/ImageMagick-6.5.4/config/policy.xml"]) init_ora = simple_file("${ORACLE_HOME}/dbs/init.ora") initscript = glob_file(r"etc/rc.d/init.d/*") init_process_cgroup = simple_file("/proc/1/cgroup") interrupts = simple_file("/proc/interrupts") ip_addr = simple_command("/sbin/ip addr") ip_addresses = simple_command("/bin/hostname -I") ip_route_show_table_all = simple_command("/sbin/ip route show table all") ip_s_link = simple_command("/sbin/ip -s -d link") ipaupgrade_log = simple_file("/var/log/ipaupgrade.log") ipcs_m = simple_command("/usr/bin/ipcs -m") ipcs_m_p = simple_command("/usr/bin/ipcs -m -p") ipcs_s = simple_command("/usr/bin/ipcs -s")
[docs] @datasource(ipcs_s) def semid(broker): """Command: semids""" source = broker[DefaultSpecs.ipcs_s].content results = set() for s in source: s_splits = s.split() # key semid owner perms nsems # 0x00000000 65536 apache 600 1 if len(s_splits) == 5 and s_splits[1].isdigit(): results.add(s_splits[1]) return results
ipcs_s_i = foreach_execute(semid, "/usr/bin/ipcs -s -i %s") iptables = simple_command("/sbin/iptables-save") iptables_permanent = simple_file("etc/sysconfig/iptables") ip6tables = simple_command("/sbin/ip6tables-save") ip6tables_permanent = simple_file("etc/sysconfig/ip6tables") ipv4_neigh = simple_command("/sbin/ip -4 neighbor show nud all") ipv6_neigh = simple_command("/sbin/ip -6 neighbor show nud all") ironic_inspector_log = simple_file("/var/log/ironic-inspector/ironic-inspector.log") ironic_conf = first_file(["/var/lib/config-data/puppet-generated/ironic/etc/ironic/ironic.conf", "/etc/ironic/ironic.conf"]) iscsiadm_m_session = simple_command("/usr/sbin/iscsiadm -m session") katello_service_status = simple_command("/usr/bin/katello-service status") kdump_conf = simple_file("/etc/kdump.conf") kerberos_kdc_log = simple_file("var/log/krb5kdc.log") kernel_config = glob_file("/boot/config-*") kexec_crash_loaded = simple_file("/sys/kernel/kexec_crash_loaded") kexec_crash_size = simple_file("/sys/kernel/kexec_crash_size") keystone_conf = first_file(["/var/lib/config-data/puppet-generated/keystone/etc/keystone/keystone.conf", "/etc/keystone/keystone.conf"]) keystone_crontab = simple_command("/usr/bin/crontab -l -u keystone") keystone_crontab_container = simple_command("docker exec keystone_cron /usr/bin/crontab -l -u keystone") keystone_log = first_file(["/var/log/containers/keystone/keystone.log", "/var/log/keystone/keystone.log"])
[docs] @datasource(Uname, context=HostContext) def kpatch_patches_running_kernel_dir(broker): un = broker[Uname] return r"/var/lib/kpatch/" + un.kernel
kpatch_list = simple_command("/usr/sbin/kpatch list") kpatch_patch_files = command_with_args("ls %s", kpatch_patches_running_kernel_dir) krb5 = glob_file([r"etc/krb5.conf", r"etc/krb5.conf.d/*"]) ksmstate = simple_file("/sys/kernel/mm/ksm/run") kubepods_cpu_quota = glob_file("/sys/fs/cgroup/cpu/kubepods.slice/kubepods-burstable.slice/kubepods-burstable-pod[a-f0-9_]*.slice/cpu.cfs_quota_us") last_upload_globs = ["/etc/redhat-access-insights/.lastupload", "/etc/insights-client/.lastupload"] lastupload = glob_file(last_upload_globs) libkeyutils = simple_command("/usr/bin/find -L /lib /lib64 -name 'libkeyutils.so*'") libkeyutils_objdumps = simple_command('/usr/bin/find -L /lib /lib64 -name libkeyutils.so.1 -exec objdump -x "{}" \;') libvirtd_log = simple_file("/var/log/libvirt/libvirtd.log") libvirtd_qemu_log = glob_file(r"/var/log/libvirt/qemu/*.log") limits_conf = glob_file(["/etc/security/limits.conf", "/etc/security/limits.d/*.conf"]) locale = simple_command("/usr/bin/locale") localtime = simple_command("/usr/bin/file -L /etc/localtime") logrotate_conf = glob_file(["/etc/logrotate.conf", "/etc/logrotate.d/*"]) lpstat_p = simple_command("/usr/bin/lpstat -p") ls_boot = simple_command("/bin/ls -lanR /boot") ls_dev = simple_command("/bin/ls -lanR /dev") ls_disk = simple_command("/bin/ls -lanR /dev/disk") ls_docker_volumes = simple_command("/bin/ls -lanR /var/lib/docker/volumes") ls_edac_mc = simple_command("/bin/ls -lan /sys/devices/system/edac/mc") ls_etc = simple_command("/bin/ls -lanR /etc") ls_lib_firmware = simple_command("/bin/ls -lanR /lib/firmware") ls_ocp_cni_openshift_sdn = simple_command("/bin/ls -l /var/lib/cni/networks/openshift-sdn") ls_origin_local_volumes_pods = simple_command("/bin/ls -l /var/lib/origin/openshift.local.volumes/pods") ls_osroot = simple_command("/bin/ls -lan /") ls_run_systemd_generator = simple_command("/bin/ls -lan /run/systemd/generator") ls_R_var_lib_nova_instances = simple_command("/bin/ls -laR /var/lib/nova/instances") ls_sys_firmware = simple_command("/bin/ls -lanR /sys/firmware") ls_usr_lib64 = simple_command("/bin/ls -lan /usr/lib64") ls_usr_sbin = simple_command("/bin/ls -ln /usr/sbin") ls_var_lib_mongodb = simple_command("/bin/ls -la /var/lib/mongodb") ls_var_lib_nova_instances = simple_command("/bin/ls -laRZ /var/lib/nova/instances") ls_var_log = simple_command("/bin/ls -la /var/log /var/log/audit") ls_var_opt_mssql = simple_command("/bin/ls -ld /var/opt/mssql") ls_var_opt_mssql_log = simple_command("/bin/ls -la /var/opt/mssql/log") ls_var_spool_clientmq = simple_command("/bin/ls -ln /var/spool/clientmqueue") ls_var_spool_postfix_maildrop = simple_command("/bin/ls -ln /var/spool/postfix/maildrop") ls_var_tmp = simple_command("/bin/ls -ln /var/tmp") ls_var_run = simple_command("/bin/ls -lnL /var/run") ls_var_www = simple_command("/bin/ls -la /dev/null /var/www") # https://github.com/RedHatInsights/insights-core/issues/827 lsblk = simple_command("/bin/lsblk") lsblk_pairs = simple_command("/bin/lsblk -P -o NAME,KNAME,MAJ:MIN,FSTYPE,MOUNTPOINT,LABEL,UUID,RA,RO,RM,MODEL,SIZE,STATE,OWNER,GROUP,MODE,ALIGNMENT,MIN-IO,OPT-IO,PHY-SEC,LOG-SEC,ROTA,SCHED,RQ-SIZE,TYPE,DISC-ALN,DISC-GRAN,DISC-MAX,DISC-ZERO") lscpu = simple_command("/usr/bin/lscpu") lsinitrd = simple_command("/usr/bin/lsinitrd") lsinitrd_lvm_conf = first_of([ simple_command("/sbin/lsinitrd -f /etc/lvm/lvm.conf"), simple_command("/usr/bin/lsinitrd -f /etc/lvm/lvm.conf") ]) lsmod = simple_command("/sbin/lsmod") lsof = simple_command("/usr/sbin/lsof") lspci = simple_command("/sbin/lspci -k") lssap = simple_command("/usr/sap/hostctrl/exe/lssap") lsscsi = simple_command("/usr/bin/lsscsi") lvdisplay = simple_command("/sbin/lvdisplay") lvm_conf = simple_file("/etc/lvm/lvm.conf") lvs = None # simple_command('/sbin/lvs -a -o +lv_tags,devices --config="global{locking_type=0}"') lvs_noheadings = simple_command("/sbin/lvs --nameprefixes --noheadings --separator='|' -a -o lv_name,lv_size,lv_attr,mirror_log,vg_name,devices,region_size,data_percent,metadata_percent,segtype,seg_monitor --config=\"global{locking_type=0}\"") lvs_noheadings_all = simple_command("/sbin/lvs --nameprefixes --noheadings --separator='|' -a -o lv_name,lv_size,lv_attr,mirror_log,vg_name,devices,region_size,data_percent,metadata_percent,segtype --config='global{locking_type=0} devices{filter=[\"a|.*|\"]}'") mac_addresses = glob_file("/sys/class/net/*/address") machine_id = first_file(["etc/insights-client/machine-id", "etc/redhat-access-insights/machine-id", "etc/redhat_access_proactive/machine-id"]) manila_conf = first_file(["/var/lib/config-data/puppet-generated/manila/etc/manila/manila.conf", "/etc/manila/manila.conf"]) mariadb_log = simple_file("/var/log/mariadb/mariadb.log") max_uid = simple_command("/bin/awk -F':' '{ if($3 > max) max = $3 } END { print max }' /etc/passwd") md5chk_files = foreach_execute( ["/etc/pki/product/69.pem", "/etc/pki/product-default/69.pem", "/usr/lib/libsoftokn3.so", "/usr/lib64/libsoftokn3.so", "/usr/lib/libfreeblpriv3.so", "/usr/lib64/libfreeblpriv3.so"], "/usr/bin/md5sum %s") mdstat = simple_file("/proc/mdstat") meminfo = first_file(["/proc/meminfo", "/meminfo"]) messages = simple_file("/var/log/messages") metadata_json = simple_file("metadata.json", context=ClusterArchiveContext, kind=RawFileProvider) mistral_executor_log = simple_file("/var/log/mistral/executor.log") mlx4_port = glob_file("/sys/bus/pci/devices/*/mlx4_port[0-9]") modinfo_i40e = simple_command("/sbin/modinfo i40e") modinfo_igb = simple_command("/sbin/modinfo igb") modinfo_ixgbe = simple_command("/sbin/modinfo ixgbe") modinfo_veth = simple_command("/sbin/modinfo veth") modinfo_vmxnet3 = simple_command("/sbin/modinfo vmxnet3")
[docs] @datasource(lsmod, context=HostContext) def lsmod_only_names(broker): lsmod = broker[DefaultSpecs.lsmod].content # skip the title return [line.split()[0] for line in lsmod[1:] if line.strip()]
modinfo = foreach_execute(lsmod_only_names, "modinfo %s")
[docs] @datasource(lsmod_only_names, context=HostContext) def lsmod_all_names(broker): mod_list = broker[DefaultSpecs.lsmod_only_names] if mod_list: return ' '.join(mod_list) raise SkipComponent()
modinfo_all = command_with_args("modinfo %s", lsmod_all_names) modprobe = glob_file(["/etc/modprobe.conf", "/etc/modprobe.d/*.conf"]) sysconfig_mongod = glob_file([ "etc/sysconfig/mongod", "etc/opt/rh/rh-mongodb26/sysconfig/mongod" ]) mongod_conf = glob_file([ "/etc/mongod.conf", "/etc/mongodb.conf", "/etc/opt/rh/rh-mongodb26/mongod.conf" ]) mount = simple_command("/bin/mount") mounts = simple_file("/proc/mounts") mssql_conf = simple_file("/var/opt/mssql/mssql.conf") multicast_querier = simple_command("/usr/bin/find /sys/devices/virtual/net/ -name multicast_querier -print -exec cat {} \;") multipath_conf = simple_file("/etc/multipath.conf") multipath_conf_initramfs = simple_command("/bin/lsinitrd -f /etc/multipath.conf") multipath__v4__ll = simple_command("/sbin/multipath -v4 -ll") mysqladmin_status = simple_command("/bin/mysqladmin status") mysqladmin_vars = simple_command("/bin/mysqladmin variables") mysql_log = glob_file([ "/var/log/mysql/mysqld.log", "/var/log/mysql.log", "/var/opt/rh/rh-mysql*/log/mysql/mysqld.log" ]) mysqld_pid = simple_command("/usr/bin/pgrep -n mysqld") mysqld_limits = foreach_collect(mysqld_pid, "/proc/%s/limits") named_checkconf_p = simple_command("/usr/sbin/named-checkconf -p") namespace = simple_command("/bin/ls /var/run/netns") ip_netns_exec_namespace_lsof = foreach_execute(namespace, "/sbin/ip netns exec %s lsof -i") netconsole = simple_file("/etc/sysconfig/netconsole") netstat = simple_command("/bin/netstat -neopa") netstat_agn = simple_command("/bin/netstat -agn") netstat_i = simple_command("/bin/netstat -i") netstat_s = simple_command("/bin/netstat -s") networkmanager_dispatcher_d = glob_file("/etc/NetworkManager/dispatcher.d/*-dhclient") neutron_conf = first_file(["/var/lib/config-data/puppet-generated/neutron/etc/neutron/neutron.conf", "/etc/neutron/neutron.conf"]) neutron_dhcp_agent_ini = first_file(["/var/lib/config-data/puppet-generated/neutron/etc/neutron/dhcp_agent.ini", "/etc/neutron/dhcp_agent.ini"]) neutron_l3_agent_ini = first_file(["/var/lib/config-data/puppet-generated/neutron/etc/neutron/l3_agent.ini", "/etc/neutron/l3_agent.ini"]) neutron_l3_agent_log = simple_file("/var/log/neutron/l3-agent.log") neutron_metadata_agent_ini = first_file(["/var/lib/config-data/puppet-generated/neutron/etc/neutron/metadata_agent.ini", "/etc/neutron/metadata_agent.ini"]) neutron_metadata_agent_log = first_file(["/var/log/containers/neutron/metadata-agent.log", "/var/log/neutron/metadata-agent.log"]) neutron_ml2_conf = first_file(["/var/lib/config-data/puppet-generated/neutron/etc/neutron/plugins/ml2/ml2_conf.ini", "/etc/neutron/plugins/ml2/ml2_conf.ini"]) neutron_ovs_agent_log = first_file(["/var/log/containers/neutron/openvswitch-agent.log", "/var/log/neutron/openvswitch-agent.log"]) neutron_plugin_ini = first_file(["/var/lib/config-data/puppet-generated/neutron/etc/neutron/plugin.ini", "/etc/neutron/plugin.ini"]) neutron_server_log = first_file(["/var/log/containers/neutron/server.log", "/var/log/neutron/server.log"]) nfnetlink_queue = simple_file("/proc/net/netfilter/nfnetlink_queue") nfs_exports = simple_file("/etc/exports") nfs_exports_d = glob_file("/etc/exports.d/*.exports") nginx_conf = glob_file([ "/etc/nginx/*.conf", "/etc/nginx/conf.d/*", "/etc/nginx/default.d/*", "/opt/rh/nginx*/root/etc/nginx/*.conf", "/opt/rh/nginx*/root/etc/nginx/conf.d/*", "/opt/rh/nginx*/root/etc/nginx/default.d/*", "/etc/opt/rh/rh-nginx*/nginx/*.conf", "/etc/opt/rh/rh-nginx*/nginx/conf.d/*", "/etc/opt/rh/rh-nginx*/nginx/default.d/*" ]) nmcli_conn_show = simple_command("/usr/bin/nmcli conn show") nmcli_dev_show = simple_command("/usr/bin/nmcli dev show") nova_api_log = first_file(["/var/log/containers/nova/nova-api.log", "/var/log/nova/nova-api.log"]) nova_compute_log = first_file(["/var/log/containers/nova/nova-compute.log", "/var/log/nova/nova-compute.log"]) nova_conf = first_file([ "/var/lib/config-data/puppet-generated/nova/etc/nova/nova.conf", "/var/lib/config-data/puppet-generated/nova_libvirt/etc/nova/nova.conf", "/etc/nova/nova.conf" ]) nova_crontab = simple_command("/usr/bin/crontab -l -u nova") nova_crontab_container = simple_command("docker exec nova_api_cron /usr/bin/crontab -l -u nova") nova_uid = simple_command("/usr/bin/id -u nova") nova_migration_uid = simple_command("/usr/bin/id -u nova_migration") nscd_conf = simple_file("/etc/nscd.conf") nsswitch_conf = simple_file("/etc/nsswitch.conf") ntp_conf = simple_file("/etc/ntp.conf") ntpq_leap = simple_command("/usr/sbin/ntpq -c 'rv 0 leap'") ntpq_pn = simple_command("/usr/sbin/ntpq -pn") ntptime = simple_command("/usr/sbin/ntptime") numa_cpus = glob_file("/sys/devices/system/node/node[0-9]*/cpulist") numeric_user_group_name = simple_command("/bin/grep -c '^[[:digit:]]' /etc/passwd /etc/group") nvme_core_io_timeout = simple_file("/sys/module/nvme_core/parameters/io_timeout") oc_get_bc = simple_command("/usr/bin/oc get bc -o yaml --all-namespaces", context=OpenShiftContext) oc_get_build = simple_command("/usr/bin/oc get build -o yaml --all-namespaces", context=OpenShiftContext) oc_get_clusterrole_with_config = simple_command("/usr/bin/oc get clusterrole --config /etc/origin/master/admin.kubeconfig") oc_get_clusterrolebinding_with_config = simple_command("/usr/bin/oc get clusterrolebinding --config /etc/origin/master/admin.kubeconfig") oc_get_dc = simple_command("/usr/bin/oc get dc -o yaml --all-namespaces", context=OpenShiftContext) oc_get_egressnetworkpolicy = simple_command("/usr/bin/oc get egressnetworkpolicy -o yaml --all-namespaces", context=OpenShiftContext) oc_get_endpoints = simple_command("/usr/bin/oc get endpoints -o yaml --all-namespaces", context=OpenShiftContext) oc_get_event = simple_command("/usr/bin/oc get event -o yaml --all-namespaces", context=OpenShiftContext) oc_get_node = simple_command("/usr/bin/oc get nodes -o yaml", context=OpenShiftContext) oc_get_pod = simple_command("/usr/bin/oc get pod -o yaml --all-namespaces", context=OpenShiftContext) oc_get_project = simple_command("/usr/bin/oc get project -o yaml --all-namespaces", context=OpenShiftContext) oc_get_pv = simple_command("/usr/bin/oc get pv -o yaml --all-namespaces", context=OpenShiftContext) oc_get_pvc = simple_command("/usr/bin/oc get pvc -o yaml --all-namespaces", context=OpenShiftContext) oc_get_rc = simple_command("/usr/bin/oc get rc -o yaml --all-namespaces", context=OpenShiftContext) oc_get_role = simple_command("/usr/bin/oc get role -o yaml --all-namespaces", context=OpenShiftContext) oc_get_rolebinding = simple_command("/usr/bin/oc get rolebinding -o yaml --all-namespaces", context=OpenShiftContext) oc_get_route = simple_command("/usr/bin/oc get route -o yaml --all-namespaces", context=OpenShiftContext) oc_get_service = simple_command("/usr/bin/oc get service -o yaml --all-namespaces", context=OpenShiftContext) oc_get_configmap = simple_command("/usr/bin/oc get configmap -o yaml --all-namespaces", context=OpenShiftContext) odbc_ini = simple_file("/etc/odbc.ini") odbcinst_ini = simple_file("/etc/odbcinst.ini") crt = simple_command("/usr/bin/find /etc/origin/node /etc/origin/master -type f -path '*.crt'") openshift_certificates = foreach_execute(crt, "/usr/bin/openssl x509 -noout -enddate -in %s") openshift_fluentd_pid = simple_command("/usr/bin/pgrep -n fluentd") openshift_fluentd_environ = foreach_collect(openshift_fluentd_pid, "/proc/%s/environ") openshift_hosts = simple_file("/root/.config/openshift/hosts") openshift_router_pid = simple_command("/usr/bin/pgrep -n openshift-route") openshift_router_environ = foreach_collect(openshift_router_pid, "/proc/%s/environ") openvswitch_other_config = simple_command("/usr/bin/ovs-vsctl -t 5 get Open_vSwitch . other_config") openvswitch_server_log = simple_file('/var/log/openvswitch/ovsdb-server.log') openvswitch_daemon_log = simple_file('/var/log/openvswitch/ovs-vswitchd.log') os_release = simple_file("etc/os-release") osa_dispatcher_log = first_file([ "/var/log/rhn/osa-dispatcher.log", "/rhn-logs/rhn/osa-dispatcher.log" ]) ose_master_config = simple_file("/etc/origin/master/master-config.yaml") ose_node_config = simple_file("/etc/origin/node/node-config.yaml") ovirt_engine_confd = glob_file("/etc/ovirt-engine/engine.conf.d/*") ovirt_engine_server_log = simple_file("/var/log/ovirt-engine/server.log") ovirt_engine_ui_log = simple_file("/var/log/ovirt-engine/ui.log") ovirt_engine_boot_log = simple_file("/var/log/ovirt-engine/boot.log") ovirt_engine_console_log = simple_file("/var/log/ovirt-engine/console.log") ovs_vsctl_list_br = simple_command("/usr/bin/ovs-vsctl list-br") ovs_appctl_fdb_show_bridge = foreach_execute(ovs_vsctl_list_br, "/usr/bin/ovs-appctl fdb/show %s") ovs_ofctl_dump_flows = foreach_execute(ovs_vsctl_list_br, "/usr/bin/ovs-ofctl dump-flows %s") ovs_vsctl_list_bridge = simple_command("/usr/bin/ovs-vsctl list bridge") ovs_vsctl_show = simple_command("/usr/bin/ovs-vsctl show") ovs_vswitchd_pid = simple_command("/usr/bin/pgrep -o ovs-vswitchd") ovs_vswitchd_limits = foreach_collect(ovs_vswitchd_pid, "/proc/%s/limits") pacemaker_log = first_file(["/var/log/pacemaker.log", "/var/log/pacemaker/pacemaker.log"]) pci_rport_target_disk_paths = simple_command("/usr/bin/find /sys/devices/ -maxdepth 10 -mindepth 9 -name stat -type f")
[docs] @datasource(ps_auxww, context=HostContext) def package_and_java(broker): """Command: package_and_java""" return get_cmd_and_package_in_ps(broker, 'java')
package_provides_java = foreach_execute(package_and_java, "echo %s")
[docs] @datasource(ps_auxww, context=HostContext) def package_and_httpd(broker): """Command: package_and_httpd""" return get_cmd_and_package_in_ps(broker, 'httpd')
package_provides_httpd = foreach_execute(package_and_httpd, "echo %s") pam_conf = simple_file("/etc/pam.conf") parted__l = simple_command("/sbin/parted -l -s") partitions = simple_file("/proc/partitions") passenger_status = simple_command("/usr/bin/passenger-status") password_auth = simple_file("/etc/pam.d/password-auth") pcs_config = simple_command("/usr/sbin/pcs config") pcs_quorum_status = simple_command("/usr/sbin/pcs quorum status") pcs_status = simple_command("/usr/sbin/pcs status") pluginconf_d = glob_file("/etc/yum/pluginconf.d/*.conf") postgresql_conf = first_file([ "/var/lib/pgsql/data/postgresql.conf", "/opt/rh/postgresql92/root/var/lib/pgsql/data/postgresql.conf", "database/postgresql.conf" ]) postgresql_log = first_of([ glob_file("/var/lib/pgsql/data/pg_log/postgresql-*.log"), glob_file("/opt/rh/postgresql92/root/var/lib/pgsql/data/pg_log/postgresql-*.log"), glob_file("/database/postgresql-*.log") ]) puppetserver_config = simple_file("/etc/sysconfig/puppetserver") prev_uploader_log = simple_file("var/log/redhat-access-insights/redhat-access-insights.log.1") proc_netstat = simple_file("proc/net/netstat") proc_slabinfo = simple_file("proc/slabinfo") proc_snmp_ipv4 = simple_file("proc/net/snmp") proc_snmp_ipv6 = simple_file("proc/net/snmp6") proc_stat = simple_file("proc/stat") pulp_worker_defaults = simple_file("etc/default/pulp_workers") pvs = simple_command('/sbin/pvs -a -v -o +pv_mda_free,pv_mda_size,pv_mda_count,pv_mda_used_count,pe_count --config="global{locking_type=0}"') pvs_noheadings = simple_command("/sbin/pvs --nameprefixes --noheadings --separator='|' -a -o pv_all,vg_name --config=\"global{locking_type=0}\"") pvs_noheadings_all = simple_command("/sbin/pvs --nameprefixes --noheadings --separator='|' -a -o pv_all,vg_name --config='global{locking_type=0} devices{filter=[\"a|.*|\"]}'") qemu_conf = simple_file("/etc/libvirt/qemu.conf") qemu_xml = glob_file(r"/etc/libvirt/qemu/*.xml") qpid_stat_g = simple_command("/usr/bin/qpid-stat -g --ssl-certificate=/etc/pki/katello/qpid_client_striped.crt -b amqps://localhost:5671") qpid_stat_q = simple_command("/usr/bin/qpid-stat -q --ssl-certificate=/etc/pki/katello/qpid_client_striped.crt -b amqps://localhost:5671") qpid_stat_u = simple_command("/usr/bin/qpid-stat -u --ssl-certificate=/etc/pki/katello/qpid_client_striped.crt -b amqps://localhost:5671") qpidd_conf = simple_file("/etc/qpid/qpidd.conf") rabbitmq_env = simple_file("/etc/rabbitmq/rabbitmq-env.conf") rabbitmq_logs = glob_file("/var/log/rabbitmq/rabbit@*.log", ignore=".*rabbit@.*(?<!-sasl).log$") rabbitmq_policies = simple_command("/usr/sbin/rabbitmqctl list_policies") rabbitmq_queues = simple_command("/usr/sbin/rabbitmqctl list_queues name messages consumers auto_delete") rabbitmq_report = simple_command("/usr/sbin/rabbitmqctl report") rabbitmq_startup_err = simple_file("/var/log/rabbitmq/startup_err") rabbitmq_startup_log = simple_file("/var/log/rabbitmq/startup_log") rabbitmq_users = simple_command("/usr/sbin/rabbitmqctl list_users") rc_local = simple_file("/etc/rc.d/rc.local") rdma_conf = simple_file("/etc/rdma/rdma.conf") readlink_e_etc_mtab = simple_command("/usr/bin/readlink -e /etc/mtab") redhat_release = simple_file("/etc/redhat-release") resolv_conf = simple_file("/etc/resolv.conf") rhosp_release = simple_file("/etc/rhosp-release")
[docs] @datasource(HostContext) def rhev_data_center(broker): import json root = broker[HostContext].root relative_path = "rhev/data-center" path = os.path.join(root, relative_path) bad_apples = [] for dirpath, dirnames, filenames in os.walk(path): for p in dirnames + filenames: tmp = os.path.join(dirpath, p) try: name, group = get_owner(tmp) good = ("vdsm", "kvm") if (name, group) != good: bad_apples.append({"name": name, "group": group, "path": tmp}) except: logger.error(tmp) if bad_apples: return DatasourceProvider(content=json.dumps(bad_apples), relative_path=relative_path) raise SkipComponent()
rhv_log_collector_analyzer = simple_command("rhv-log-collector-analyzer --json") rhn_charsets = simple_command("/usr/bin/rhn-charsets") rhn_conf = first_file(["/etc/rhn/rhn.conf", "/conf/rhn/rhn/rhn.conf"]) rhn_entitlement_cert_xml = first_of([glob_file("/etc/sysconfig/rhn/rhn-entitlement-cert.xml*"), glob_file("/conf/rhn/sysconfig/rhn/rhn-entitlement-cert.xml*")]) rhn_hibernate_conf = first_file(["/usr/share/rhn/config-defaults/rhn_hibernate.conf", "/config-defaults/rhn_hibernate.conf"]) rhn_schema_stats = simple_command("/usr/bin/rhn-schema-stats -") rhn_schema_version = simple_command("/usr/bin/rhn-schema-version") rhn_server_satellite_log = simple_file("var/log/rhn/rhn_server_satellite.log") rhn_server_xmlrpc_log = first_file(["/var/log/rhn/rhn_server_xmlrpc.log", "/rhn-logs/rhn/rhn_server_xmlrpc.log"]) rhn_search_daemon_log = first_file(["/var/log/rhn/search/rhn_search_daemon.log", "/rhn-logs/rhn/search/rhn_search_daemon.log"]) rhn_taskomatic_daemon_log = first_file(["/var/log/rhn/rhn_taskomatic_daemon.log", "rhn-logs/rhn/rhn_taskomatic_daemon.log"]) rhsm_conf = simple_file("/etc/rhsm/rhsm.conf") rhsm_log = simple_file("/var/log/rhsm/rhsm.log") rhsm_releasever = simple_file('/var/lib/rhsm/cache/releasever.json') rndc_status = simple_command("/usr/sbin/rndc status") root_crontab = simple_command("/usr/bin/crontab -l -u root") route = simple_command("/sbin/route -n") rpm_V_packages = simple_command("/bin/rpm -V coreutils procps procps-ng shadow-utils passwd sudo", keep_rc=True) rsyslog_conf = simple_file("/etc/rsyslog.conf") samba = simple_file("/etc/samba/smb.conf") saphostctrl_listinstances = simple_command("/usr/sap/hostctrl/exe/saphostctrl -function ListInstances")
[docs] @datasource(saphostctrl_listinstances, hostname) def sap_sid_nr(broker): """ Get the SID and Instance Number Typical output of saphostctrl_listinstances:: # /usr/sap/hostctrl/exe/saphostctrl -function ListInstances Inst Info : SR1 - 01 - liuxc-rhel7-hana-ent - 749, patch 418, changelist 1816226 Returns: (list): List of tuple of SID and Instance Number. """ insts = broker[DefaultSpecs.saphostctrl_listinstances].content hn = broker[DefaultSpecs.hostname].content[0].split('.')[0].strip() results = set() for ins in insts: ins_splits = ins.split(' - ') # Local Instance if ins_splits[2].strip() == hn: # (sid, nr) results.add((ins_splits[0].split()[-1].lower(), ins_splits[1].strip())) return list(results)
[docs] @datasource(sap_sid_nr) def sap_sid(broker): """ Get the SID Returns: (list): List of SID. """ return list(set(sn[0] for sn in broker[DefaultSpecs.sap_sid_nr]))
sap_hdb_version = foreach_execute(sap_sid, "/usr/bin/sudo -iu %sadm HDB version", keep_rc=True) sap_host_profile = simple_file("/usr/sap/hostctrl/exe/host_profile") sapcontrol_getsystemupdatelist = foreach_execute(sap_sid_nr, "/usr/bin/sudo -iu %sadm sapcontrol -nr %s -function GetSystemUpdateList", keep_rc=True) saphostctl_getcimobject_sapinstance = simple_command("/usr/sap/hostctrl/exe/saphostctrl -function GetCIMObject -enuminstances SAPInstance") saphostexec_status = simple_command("/usr/sap/hostctrl/exe/saphostexec -status") saphostexec_version = simple_command("/usr/sap/hostctrl/exe/saphostexec -version") sat5_insights_properties = simple_file("/etc/redhat-access/redhat-access-insights.properties") satellite_mongodb_storage_engine = simple_command("/usr/bin/mongo pulp_database --eval 'db.serverStatus().storageEngine'") satellite_version_rb = simple_file("/usr/share/foreman/lib/satellite/version.rb") satellite_custom_hiera = simple_file("/etc/foreman-installer/custom-hiera.yaml") block_devices = listdir("/sys/block") scheduler = foreach_collect(block_devices, "/sys/block/%s/queue/scheduler") scsi = simple_file("/proc/scsi/scsi") scsi_eh_deadline = glob_file('/sys/class/scsi_host/host[0-9]*/eh_deadline') scsi_fwver = glob_file('/sys/class/scsi_host/host[0-9]*/fwrev') sctp_asc = simple_file('/proc/net/sctp/assocs') sctp_eps = simple_file('/proc/net/sctp/eps') sctp_snmp = simple_file('/proc/net/sctp/snmp') sealert = simple_command('/usr/bin/sealert -l "*"') secure = simple_file("/var/log/secure") selinux_config = simple_file("/etc/selinux/config") sestatus = simple_command("/usr/sbin/sestatus -b") setup_named_chroot = simple_file("/usr/libexec/setup-named-chroot.sh")
[docs] @datasource(HostContext) def block(broker): """Path: /sys/block directories starting with . or ram or dm- or loop""" remove = (".", "ram", "dm-", "loop") tmp = "/dev/%s" return[(tmp % f) for f in os.listdir("/sys/block") if not f.startswith(remove)]
smbstatus_p = simple_command("/usr/bin/smbstatus -p") smbstatus_S = simple_command("/usr/bin/smbstatus -S") smartctl = foreach_execute(block, "/sbin/smartctl -a %s", keep_rc=True) smartpdc_settings = simple_file("/etc/smart_proxy_dynflow_core/settings.yml") sockstat = simple_file("/proc/net/sockstat") softnet_stat = simple_file("proc/net/softnet_stat") software_collections_list = simple_command('/usr/bin/scl --list') spfile_ora = glob_file("${ORACLE_HOME}/dbs/spfile*.ora") ss = simple_command("/usr/sbin/ss -tupna") ssh_config = simple_file("/etc/ssh/ssh_config") ssh_foreman_config = simple_file("/usr/share/foreman/.ssh/ssh_config") ssh_foreman_proxy_config = simple_file("/usr/share/foreman-proxy/.ssh/ssh_config") sshd_config = simple_file("/etc/ssh/sshd_config") sshd_config_perms = simple_command("/bin/ls -l /etc/ssh/sshd_config") sssd_config = simple_file("/etc/sssd/sssd.conf") subscription_manager_id = simple_command("/usr/sbin/subscription-manager identity") # use "/usr/sbin" here, BZ#1690529 subscription_manager_installed_product_ids = simple_command("/usr/bin/find /etc/pki/product-default/ /etc/pki/product/ -name '*pem' -exec rct cat-cert --no-content '{}' \;") subscription_manager_release_show = simple_command('/usr/sbin/subscription-manager release --show') # use "/usr/sbin" here, BZ#1690529 swift_conf = first_file(["/var/lib/config-data/puppet-generated/swift/etc/swift/swift.conf", "/etc/swift/swift.conf"]) swift_log = first_file(["/var/log/containers/swift/swift.log", "/var/log/swift/swift.log"]) swift_object_expirer_conf = first_file(["/var/lib/config-data/puppet-generated/swift/etc/swift/object-expirer.conf", "/etc/swift/object-expirer.conf"]) swift_proxy_server_conf = first_file(["/var/lib/config-data/puppet-generated/swift/etc/swift/proxy-server.conf", "/etc/swift/proxy-server.conf"]) sysconfig_chronyd = simple_file("/etc/sysconfig/chronyd") sysconfig_httpd = simple_file("/etc/sysconfig/httpd") sysconfig_irqbalance = simple_file("etc/sysconfig/irqbalance") sysconfig_kdump = simple_file("etc/sysconfig/kdump") sysconfig_libvirt_guests = simple_file("etc/sysconfig/libvirt-guests") sysconfig_memcached = first_file(["/var/lib/config-data/puppet-generated/memcached/etc/sysconfig/memcached", "/etc/sysconfig/memcached"]) sysconfig_network = simple_file("etc/sysconfig/network") sysconfig_ntpd = simple_file("/etc/sysconfig/ntpd") sysconfig_prelink = simple_file("/etc/sysconfig/prelink") sysconfig_sshd = simple_file("/etc/sysconfig/sshd") sysconfig_virt_who = simple_file("/etc/sysconfig/virt-who") sysctl = simple_command("/sbin/sysctl -a") sysctl_conf = simple_file("/etc/sysctl.conf") sysctl_conf_files = listdir("/boot/initramfs-*kdump.img") sysctl_conf_initramfs = foreach_execute(sysctl_conf_files, "/bin/lsinitrd /boot/%s -f /etc/sysctl.conf /etc/sysctl.d/*.conf") systemctl_cat_rpcbind_socket = simple_command("/bin/systemctl cat rpcbind.socket") systemctl_cinder_volume = simple_command("/bin/systemctl show openstack-cinder-volume") systemctl_httpd = simple_command("/bin/systemctl show httpd") systemctl_nginx = simple_command("/bin/systemctl show nginx") systemctl_list_unit_files = simple_command("/bin/systemctl list-unit-files") systemctl_list_units = simple_command("/bin/systemctl list-units") systemctl_mariadb = simple_command("/bin/systemctl show mariadb") systemctl_pulp_workers = simple_command("/bin/systemctl show pulp_workers") systemctl_pulp_resmg = simple_command("/bin/systemctl show pulp_resource_manager") systemctl_pulp_celerybeat = simple_command("/bin/systemctl show pulp_celerybeat") systemctl_qpidd = simple_command("/bin/systemctl show qpidd") systemctl_qdrouterd = simple_command("/bin/systemctl show qdrouterd") systemctl_show_all_services = simple_command("/bin/systemctl show *.service") systemctl_show_target = simple_command("/bin/systemctl show *.target") systemctl_smartpdc = simple_command("/bin/systemctl show smart_proxy_dynflow_core") systemd_docker = simple_command("/usr/bin/systemctl cat docker.service") systemd_logind_conf = simple_file("/etc/systemd/logind.conf") systemd_openshift_node = simple_command("/usr/bin/systemctl cat atomic-openshift-node.service") systemd_system_conf = simple_file("/etc/systemd/system.conf") systemd_system_origin_accounting = simple_file("/etc/systemd/system.conf.d/origin-accounting.conf") systemid = first_of([ simple_file("/etc/sysconfig/rhn/systemid"), simple_file("/conf/rhn/sysconfig/rhn/systemid") ]) systool_b_scsi_v = simple_command("/bin/systool -b scsi -v") tags = simple_file("/tags.json", kind=RawFileProvider) teamdctl_config_dump = foreach_execute(ethernet_interfaces, "/usr/bin/teamdctl %s config dump") teamdctl_state_dump = foreach_execute(ethernet_interfaces, "/usr/bin/teamdctl %s state dump") thp_use_zero_page = simple_file("/sys/kernel/mm/transparent_hugepage/use_zero_page") thp_enabled = simple_file("/sys/kernel/mm/transparent_hugepage/enabled") tmpfilesd = glob_file(["/etc/tmpfiles.d/*.conf", "/usr/lib/tmpfiles.d/*.conf", "/run/tmpfiles.d/*.conf"]) tomcat_web_xml = first_of([glob_file("/etc/tomcat*/web.xml"), glob_file("/conf/tomcat/tomcat*/web.xml")]) tomcat_server_xml = first_of([foreach_collect(tomcat_base, "%s/conf/server.xml"), glob_file("conf/tomcat/tomcat*/server.xml", context=HostArchiveContext)])
[docs] @datasource(ps_auxww) def tomcat_home_base(broker): """Command: tomcat_home_base_paths""" ps = broker[DefaultSpecs.ps_auxww].content results = [] findall = re.compile(r"\-Dcatalina\.(home|base)=(\S+)").findall for p in ps: found = findall(p) if found: # Only get the path which is absolute results.extend(f[1] for f in found if f[1][0] == '/') return list(set(results))
tomcat_vdc_targeted = foreach_execute(tomcat_home_base, "/bin/grep -R -s 'VirtualDirContext' --include '*.xml' %s") tomcat_vdc_fallback = simple_command("/usr/bin/find /usr/share -maxdepth 1 -name 'tomcat*' -exec /bin/grep -R -s 'VirtualDirContext' --include '*.xml' '{}' +") tuned_adm = simple_command("/usr/sbin/tuned-adm list") tuned_conf = simple_file("/etc/tuned.conf") udev_persistent_net_rules = simple_file("/etc/udev/rules.d/70-persistent-net.rules") udev_fc_wwpn_id_rules = simple_file("/usr/lib/udev/rules.d/59-fc-wwpn-id.rules") uname = simple_command("/usr/bin/uname -a") up2date = simple_file("/etc/sysconfig/rhn/up2date") up2date_log = simple_file("/var/log/up2date") uploader_log = simple_file("/var/log/redhat-access-insights/redhat-access-insights.log") uptime = simple_command("/usr/bin/uptime") usr_journald_conf_d = glob_file(r"usr/lib/systemd/journald.conf.d/*.conf") # note that etc_journald.conf.d also exists vdo_status = simple_command("/usr/bin/vdo status") vgdisplay = simple_command("/sbin/vgdisplay") vdsm_conf = simple_file("etc/vdsm/vdsm.conf") vdsm_id = simple_file("etc/vdsm/vdsm.id") vdsm_log = simple_file("var/log/vdsm/vdsm.log") vdsm_logger_conf = simple_file("etc/vdsm/logger.conf") vma_ra_enabled = simple_file("/sys/kernel/mm/swap/vma_ra_enabled") vmware_tools_conf = simple_file("etc/vmware-tools/tools.conf") vgs = None # simple_command('/sbin/vgs -v -o +vg_mda_count,vg_mda_free,vg_mda_size,vg_mda_used_count,vg_tags --config="global{locking_type=0}"') vgs_noheadings = simple_command("/sbin/vgs --nameprefixes --noheadings --separator='|' -a -o vg_all --config=\"global{locking_type=0}\"") vgs_noheadings_all = simple_command("/sbin/vgs --nameprefixes --noheadings --separator='|' -a -o vg_all --config='global{locking_type=0} devices{filter=[\"a|.*|\"]}'") virsh_list_all = simple_command("/usr/bin/virsh --readonly list --all") virt_what = simple_command("/usr/sbin/virt-what") virt_who_conf = glob_file([r"etc/virt-who.conf", r"etc/virt-who.d/*.conf"]) virtlogd_conf = simple_file("/etc/libvirt/virtlogd.conf") vmcore_dmesg = glob_file("/var/crash/*/vmcore-dmesg.txt") vsftpd = simple_file("/etc/pam.d/vsftpd") vsftpd_conf = simple_file("/etc/vsftpd/vsftpd.conf") woopsie = simple_command(r"/usr/bin/find /var/crash /var/tmp -path '*.reports-*/whoopsie-report' -print -quit") x86_pti_enabled = simple_file("sys/kernel/debug/x86/pti_enabled") x86_ibpb_enabled = simple_file("sys/kernel/debug/x86/ibpb_enabled") x86_ibrs_enabled = simple_file("sys/kernel/debug/x86/ibrs_enabled") x86_retp_enabled = simple_file("sys/kernel/debug/x86/retp_enabled")
[docs] @datasource(Mount) def xfs_mounts(broker): mnt = broker[Mount] mps = mnt.search(mount_type='xfs') return [m.mount_point for m in mps]
xfs_info = foreach_execute(xfs_mounts, "/usr/sbin/xfs_info %s") xinetd_conf = glob_file(["/etc/xinetd.conf", "/etc/xinetd.d/*"]) yum_conf = simple_file("/etc/yum.conf") yum_list_installed = simple_command("yum -C --noplugins list installed") yum_log = simple_file("/var/log/yum.log") yum_repolist = simple_command("/usr/bin/yum -C --noplugins repolist") yum_repos_d = glob_file("/etc/yum.repos.d/*") zdump_v = simple_command("/usr/sbin/zdump -v /etc/localtime -c 2019,2039") zipl_conf = simple_file("/etc/zipl.conf") rpm_format = format_rpm() host_installed_rpms = simple_command("/bin/rpm -qa --qf '%s'" % rpm_format, context=HostContext)
[docs] @datasource(DockerImageContext) def docker_installed_rpms(broker): """ Command: /bin/rpm -qa --root `%s` --qf `%s`""" ctx = broker[DockerImageContext] root = ctx.root fmt = DefaultSpecs.rpm_format cmd = "/bin/rpm -qa --root %s --qf '%s'" % (root, fmt) result = ctx.shell_out(cmd) return CommandOutputProvider(cmd, ctx, content=result)
# unify the different installed rpm provider types installed_rpms = first_of([host_installed_rpms, docker_installed_rpms])
[docs] @datasource(ps_auxww, context=HostContext) def jboss_home(broker): """Command: JBoss home progress command content paths""" ps = broker[DefaultSpecs.ps_auxww].content results = [] findall = re.compile(r"\-Djboss\.home\.dir=(\S+)").findall # JBoss progress command content should contain jboss.home.dir # and any of string ['-D[Standalone]', '-D[Host Controller]', '-D[Server:'] for p in ps: if any(i in p for i in ['-D[Standalone]', '-D[Host Controller]', '-D[Server:']): found = findall(p) if found: # Only get the path which is absolute results.extend(f for f in found if f[0] == '/') return list(set(results))
jboss_version = foreach_collect(jboss_home, "%s/version.txt")
[docs] @datasource(ps_auxww, context=HostContext, multi_output=True) def jboss_domain_server_log_dir(broker): """Command: JBoss domain server log directory""" ps = broker[DefaultSpecs.ps_auxww].content results = [] findall = re.compile(r"\-Djboss\.server\.log\.dir=(\S+)").findall # JBoss domain server progress command content should contain jboss.server.log.dir for p in ps: if '-D[Server:' in p: found = findall(p) if found: # Only get the path which is absolute results.extend(f for f in found if f[0] == '/') return list(set(results))
jboss_domain_server_log = foreach_collect(jboss_domain_server_log_dir, "%s/server.log*")
[docs] @datasource(ps_auxww, context=HostContext, multi_output=True) def jboss_standalone_main_config_files(broker): """Command: JBoss standalone main config files""" ps = broker[DefaultSpecs.ps_auxww].content results = [] search = re.compile(r"\-Djboss\.server\.base\.dir=(\S+)").search # JBoss progress command content should contain jboss.home.dir for p in ps: if '-D[Standalone]' in p: match = search(p) # Only get the path which is absolute if match and match.group(1)[0] == "/": main_config_path = match.group(1) main_config_file = "standalone.xml" if " -c " in p: main_config_file = p.split(" -c ")[1].split()[0] elif "--server-config" in p: main_config_file = p.split("--server-config=")[1].split()[0] results.append(main_config_path + "/" + main_config_file) return list(set(results))
jboss_standalone_main_config = foreach_collect(jboss_standalone_main_config_files, "%s")