1# This code is part of Ansible, but is an independent component. 2# This particular file snippet, and this file snippet only, is BSD licensed. 3# Modules you write using this snippet, which is embedded dynamically by Ansible 4# still belong to the author of the module, and may assign their own license 5# to the complete work. 6# 7# (c) 2017 Red Hat Inc. 8# 9# Redistribution and use in source and binary forms, with or without modification, 10# are permitted provided that the following conditions are met: 11# 12# * Redistributions of source code must retain the above copyright 13# notice, this list of conditions and the following disclaimer. 14# * Redistributions in binary form must reproduce the above copyright notice, 15# this list of conditions and the following disclaimer in the documentation 16# and/or other materials provided with the distribution. 17# 18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND 19# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 20# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 21# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 22# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 23# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 24# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 25# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE 26# USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27# 28from __future__ import (absolute_import, division, print_function) 29__metaclass__ = type 30 31 32from ansible.module_utils.facts.other.facter import FacterFactCollector 33from ansible.module_utils.facts.other.ohai import OhaiFactCollector 34 35from ansible.module_utils.facts.system.apparmor import ApparmorFactCollector 36from ansible.module_utils.facts.system.caps import SystemCapabilitiesFactCollector 37from ansible.module_utils.facts.system.chroot import ChrootFactCollector 38from ansible.module_utils.facts.system.cmdline import CmdLineFactCollector 39from ansible.module_utils.facts.system.distribution import DistributionFactCollector 40from ansible.module_utils.facts.system.date_time import DateTimeFactCollector 41from ansible.module_utils.facts.system.env import EnvFactCollector 42from ansible.module_utils.facts.system.dns import DnsFactCollector 43from ansible.module_utils.facts.system.fips import FipsFactCollector 44from ansible.module_utils.facts.system.local import LocalFactCollector 45from ansible.module_utils.facts.system.lsb import LSBFactCollector 46from ansible.module_utils.facts.system.pkg_mgr import PkgMgrFactCollector 47from ansible.module_utils.facts.system.pkg_mgr import OpenBSDPkgMgrFactCollector 48from ansible.module_utils.facts.system.platform import PlatformFactCollector 49from ansible.module_utils.facts.system.python import PythonFactCollector 50from ansible.module_utils.facts.system.selinux import SelinuxFactCollector 51from ansible.module_utils.facts.system.service_mgr import ServiceMgrFactCollector 52from ansible.module_utils.facts.system.ssh_pub_keys import SshPubKeyFactCollector 53from ansible.module_utils.facts.system.user import UserFactCollector 54 55from ansible.module_utils.facts.hardware.base import HardwareCollector 56from ansible.module_utils.facts.hardware.aix import AIXHardwareCollector 57from ansible.module_utils.facts.hardware.darwin import DarwinHardwareCollector 58from ansible.module_utils.facts.hardware.dragonfly import DragonFlyHardwareCollector 59from ansible.module_utils.facts.hardware.freebsd import FreeBSDHardwareCollector 60from ansible.module_utils.facts.hardware.hpux import HPUXHardwareCollector 61from ansible.module_utils.facts.hardware.hurd import HurdHardwareCollector 62from ansible.module_utils.facts.hardware.linux import LinuxHardwareCollector 63from ansible.module_utils.facts.hardware.netbsd import NetBSDHardwareCollector 64from ansible.module_utils.facts.hardware.openbsd import OpenBSDHardwareCollector 65from ansible.module_utils.facts.hardware.sunos import SunOSHardwareCollector 66 67from ansible.module_utils.facts.network.base import NetworkCollector 68from ansible.module_utils.facts.network.aix import AIXNetworkCollector 69from ansible.module_utils.facts.network.darwin import DarwinNetworkCollector 70from ansible.module_utils.facts.network.dragonfly import DragonFlyNetworkCollector 71from ansible.module_utils.facts.network.fc_wwn import FcWwnInitiatorFactCollector 72from ansible.module_utils.facts.network.freebsd import FreeBSDNetworkCollector 73from ansible.module_utils.facts.network.hpux import HPUXNetworkCollector 74from ansible.module_utils.facts.network.hurd import HurdNetworkCollector 75from ansible.module_utils.facts.network.linux import LinuxNetworkCollector 76from ansible.module_utils.facts.network.iscsi import IscsiInitiatorNetworkCollector 77from ansible.module_utils.facts.network.nvme import NvmeInitiatorNetworkCollector 78from ansible.module_utils.facts.network.netbsd import NetBSDNetworkCollector 79from ansible.module_utils.facts.network.openbsd import OpenBSDNetworkCollector 80from ansible.module_utils.facts.network.sunos import SunOSNetworkCollector 81 82from ansible.module_utils.facts.virtual.base import VirtualCollector 83from ansible.module_utils.facts.virtual.dragonfly import DragonFlyVirtualCollector 84from ansible.module_utils.facts.virtual.freebsd import FreeBSDVirtualCollector 85from ansible.module_utils.facts.virtual.hpux import HPUXVirtualCollector 86from ansible.module_utils.facts.virtual.linux import LinuxVirtualCollector 87from ansible.module_utils.facts.virtual.netbsd import NetBSDVirtualCollector 88from ansible.module_utils.facts.virtual.openbsd import OpenBSDVirtualCollector 89from ansible.module_utils.facts.virtual.sunos import SunOSVirtualCollector 90 91# these should always be first due to most other facts depending on them 92_base = [ 93 PlatformFactCollector, 94 DistributionFactCollector, 95 LSBFactCollector 96] 97 98# These restrict what is possible in others 99_restrictive = [ 100 SelinuxFactCollector, 101 ApparmorFactCollector, 102 ChrootFactCollector, 103 FipsFactCollector 104] 105 106# general info, not required but probably useful for other facts 107_general = [ 108 PythonFactCollector, 109 SystemCapabilitiesFactCollector, 110 PkgMgrFactCollector, 111 OpenBSDPkgMgrFactCollector, 112 ServiceMgrFactCollector, 113 CmdLineFactCollector, 114 DateTimeFactCollector, 115 EnvFactCollector, 116 SshPubKeyFactCollector, 117 UserFactCollector 118] 119 120# virtual, this might also limit hardware/networking 121_virtual = [ 122 VirtualCollector, 123 DragonFlyVirtualCollector, 124 FreeBSDVirtualCollector, 125 LinuxVirtualCollector, 126 OpenBSDVirtualCollector, 127 NetBSDVirtualCollector, 128 SunOSVirtualCollector, 129 HPUXVirtualCollector 130] 131 132_hardware = [ 133 HardwareCollector, 134 AIXHardwareCollector, 135 DarwinHardwareCollector, 136 DragonFlyHardwareCollector, 137 FreeBSDHardwareCollector, 138 HPUXHardwareCollector, 139 HurdHardwareCollector, 140 LinuxHardwareCollector, 141 NetBSDHardwareCollector, 142 OpenBSDHardwareCollector, 143 SunOSHardwareCollector 144] 145 146_network = [ 147 DnsFactCollector, 148 FcWwnInitiatorFactCollector, 149 NetworkCollector, 150 AIXNetworkCollector, 151 DarwinNetworkCollector, 152 DragonFlyNetworkCollector, 153 FreeBSDNetworkCollector, 154 HPUXNetworkCollector, 155 HurdNetworkCollector, 156 IscsiInitiatorNetworkCollector, 157 NvmeInitiatorNetworkCollector, 158 LinuxNetworkCollector, 159 NetBSDNetworkCollector, 160 OpenBSDNetworkCollector, 161 SunOSNetworkCollector 162] 163 164# other fact sources 165_extra_facts = [ 166 LocalFactCollector, 167 FacterFactCollector, 168 OhaiFactCollector 169] 170 171# TODO: make config driven 172collectors = _base + _restrictive + _general + _virtual + _hardware + _network + _extra_facts 173