mirror of https://github.com/ansible/ansible.git
stable-2.17
stable-2.18
devel
stable-2.15
stable-2.16
stable-2.14
milestone
stable-2.12
stable-2.13
stable-2.9
stable-2.11
stable-2.3
stable-2.10
stable-2.8
stable-2.4
stable-2.5
stable-2.6
stable-2.7
temp-2.10-devel
mazer_role_loader
stable-2.2
threading_plus_forking
threading_instead_of_forking
stable-2.1
stable-1.9
stable-2.0
stable-2.0.0.1
stable-2.0-network
release1.8.4
release1.8.3
release1.8.2
release1.8.1
release1.8.0
release1.7.2
release1.7.1
release1.7.0
release1.6.8
release1.6.10
release1.6.9
release1.6.7
release1.6.6
release1.6.5
release1.6.4
release1.6.3
release1.6.2
release1.6.1
release1.6.0
release1.5.5
release1.5.4
release1.5.3
release1.5.2
release1.5.1
release1.5.0
v2.14.3
v2.13.8
v2.14.3rc1
v2.13.8rc1
v2.14.2
v2.14.2rc1
v2.14.1
v2.13.7
v2.13.7rc1
v2.14.1rc1
v2.13.6
v2.14.0
v2.14.0rc2
v2.13.6rc1
v2.14.0rc1
v2.14.0b3
v2.13.5
v2.12.10
v2.14.0b2
v2.13.5rc1
v2.12.10rc1
v2.14.0b1
v2.12.9
v2.13.4
v2.13.4rc1
v2.12.9rc1
v2.13.3
v2.12.8
v2.12.8rc1
v2.13.3rc1
v2.13.2
v2.13.2rc1
v2.12.7
v2.13.1
v2.12.7rc1
v2.13.1rc1
v2.12.6
v2.11.12
v2.12.6rc1
v2.11.12rc1
v2.13.0
v2.13.0rc1
v2.13.0b1
v2.12.5
v2.11.11
v2.12.5rc1
v2.11.11rc1
v2.13.0b0
v2.12.4
v2.11.10
v2.12.4rc1
v2.11.10rc1
v2.11.9
v2.12.3
v2.12.3rc1
v2.11.9rc1
v2.12.2
v2.11.8
v2.10.17
v2.12.2rc1
v2.11.8rc1
v2.10.17rc1
v2.12.1
v2.11.7
v2.10.16
v2.10.16rc1
v2.11.7rc1
v2.12.1rc1
v2.12.0
v2.12.0rc1
v2.12.0b2
v2.11.6
v2.10.15
v2.9.27
v2.9.27rc1
v2.10.15rc1
v2.11.6rc1
v2.12.0b1
v2.11.5
v2.10.14
v2.9.26
v2.11.5rc1
v2.10.14rc1
v2.9.26rc1
v2.11.4
v2.10.13
v2.9.25
v2.9.25rc1
v2.10.13rc1
v2.11.4rc1
v2.11.3
v2.10.12
v2.9.24
v2.11.3rc1
v2.10.12rc1
v2.9.24rc1
v2.9.23
v2.10.11
v2.11.2
v2.11.2rc1
v2.10.11rc1
v2.9.23rc1
v2.11.1
v2.10.10
v2.9.22
v2.9.22rc1
v2.10.10rc1
v2.11.1rc1
v2.10.9
v2.9.21
v2.10.9rc1
v2.9.21rc1
v2.11.0
v2.8.20
v2.9.20
v2.10.8
v2.11.0rc2
v2.8.20rc1
v2.9.20rc1
v2.10.8rc1
v2.11.0rc1
stable-2.11-branchpoint
v2.11.0b4
v2.11.0b3
v2.11.0b2
v2.10.7
v2.9.19
v2.10.7rc1
v2.9.19rc1
v2.11.0b1
v2.8.19
v2.9.18
v2.10.6
v2.8.19rc1
v2.9.18rc1
v2.10.6rc1
v2.9.17
v2.10.5
v2.10.5rc1
v2.9.17rc1
v2.8.18
v2.9.16
v2.10.4
v2.8.18rc1
v2.9.16rc1
v2.10.4rc1
v2.8.17
v2.9.15
v2.10.3
v2.8.17rc1
v2.9.15rc1
v2.10.3rc1
v2.10.2
v2.9.14
v2.8.16
v2.8.16rc1
v2.9.14rc1
v2.10.2rc1
v2.10.1
v2.10.1rc3
v2.10.1rc2
v2.8.15
v2.9.13
v2.10.0
v2.9.12
v2.8.14
v2.10.0rc4
v2.10.0rc3
v2.10.0rc2
v2.10.0rc1
v2.9.11
v2.8.13
v2.9.10
v2.10.0b1
stable-2.10-branchpoint
v2.9.9
v2.7.18
v2.8.12
v2.9.8
v2.9.7
v2.8.11
v2.7.17
pre-ansible-base
v2.8.10
v2.8.9
v2.9.6
v2.9.5
v2.9.4
v2.9.3
v2.8.8
v2.7.16
v2.9.2
v2.9.1
v2.8.7
v2.7.15
v2.9.0
v2.9.0rc5
v2.8.6
v2.7.14
v2.9.0rc4
v2.6.20
v2.9.0rc3
v2.9.0rc2
v2.9.0rc1
v2.8.5
v2.9.0b1
stable-2.9-branchpoint
v2.6.19
v2.7.13
v2.8.4
v2.8.3
v2.6.18
v2.7.12
v2.8.2
v2.8.1
v2.7.11
v2.6.17
v2.8.0
v2.8.0rc3
v2.8.0rc2
v2.8.0rc1
v2.8.0b1
v2.8.0a1
v2.6.16
v2.7.10
v2.6.15
v2.7.9
v2.7.8
v2.6.14
v2.5.15
v2.7.7
v2.6.13
v2.6.12
v2.7.6
v2.5.14
v2.7.5
v2.6.11
v2.6.10
v2.7.4
v2.5.13
v2.7.3
v2.6.9
v2.5.12
v2.6.8
v2.7.2
v2.6.7
v2.5.11
v2.7.1
v2.6.6
v2.7.0
v2.6.5
v2.7.0rc4
v2.5.10
v2.7.0rc3
v2.7.0rc2
v2.5.9
v2.6.4
v2.7.0rc1
v2.7.0b1
v2.7.0.a1
v2.6.3
v2.5.8
v2.6.2
v2.5.7
v2.6.1
v2.5.6
v2.4.6.0-1
v2.6.0
v2.6.0rc5
v2.6.0rc4
v2.4.5.0-1
v2.6.0rc3
v2.5.5
v2.4.5.0-0.1.rc1
v2.6.0rc2
v2.6.0rc1
v2.5.4
v2.6.0a2
v2.6.0a1
v2.5.3
v2.5.2
v2.5.1
v2.4.4.0-1
v2.4.4.0-0.3.rc2
v2.5.0
v2.5.0rc3
v2.5.0rc2
v2.4.4-0.2.rc1
v2.3.4.0-0.1.rc1
v2.5.0rc1
v2.4.4-0.1.beta1
v2.5.0b1
v2.5.0a1
v2.4.3.0-1
v2.4.3.0-0.6.rc3
v2.4.3.0-0.5.rc2
v2.4.3.0-0.4.rc1
v2.4.3-0.3.beta3
v2.4.3.0-0.2.beta2
v2.3.3.0-1
v2.4.3.0-0.1.beta1
v2.4.2.0-1
v2.4.2.0-0.5.rc1
v2.4.2.0-0.4.beta4
v2.3.3.0-0.3.rc3
v2.4.2.0-0.3.beta3
v2.4.2.0-0.2.beta2
v2.4.2.0-0.1.beta1
v2.4.1.0-1
v2.4.1.0-0.4.rc2
v2.3.3.0-0.2.rc2
v2.4.1.0-0.3.rc1
v2.4.1.0-0.2.beta2
v2.3.3.0-0.1.rc1
v2.4.1.0-0.1.beta1
v2.4.0.0-1
v2.4.0.0-0.5.rc5
v2.4.0.0-0.4.rc4
v2.4.0.0-0.3.rc3
v2.4.0.0-0.2.rc2
v2.4.0.0-0.1.rc1
v2.3.2.0-1
v2.3.2.0-0.5.rc5
v2.3.2.0-0.4.rc4
v2.3.2.0-0.3.rc3
v2.3.2.0-0.2.rc2
v2.3.2.0-0.1.rc1
v2.1.6.0-1
v2.3.1.0-1
v2.3.1.0-0.2.rc2
v2.2.3.0-1
v2.1.6.0-0.1.rc1
v2.3.1.0-0.1.rc1
v2.3.0.0-1
v2.3.0.0-0.6.rc6
v2.3.0.0-0.5.rc5
v2.3.0.0-0.4.rc4
v2.2.3.0-0.1.rc1
v2.3.0.0-0.3.rc3
v2.3.0.0-0.2.rc2
v2.2.2.0-1
v2.1.5.0-1
v2.3.0.0-0.1.rc1
v2.1.5.0-0.2.rc2
v2.2.2.0-0.2.rc2
v2.1.5.0-0.1.rc1
v2.2.2.0-0.1.rc1
v2.1.4.0-1
v2.2.1.0-1
v2.1.4.0-0.3.rc3
v2.2.1.0-0.5.rc5
v2.1.4.0-0.2.rc2
v2.2.1.0-0.4.rc4
v2.1.4.0-0.1.rc1
v2.2.1.0-0.3.rc3
v2.2.1.0-0.2.rc2
v2.2.1.0-0.1.rc1
v2.1.3.0-1
v2.2.0.0-1
v2.2.0.0-0.4.rc4
v2.1.3.0-0.3.rc3
v2.1.3.0-0.2.rc2
v2.2.0.0-0.3.rc3
v2.1.3.0-0.1.rc1
v2.2.0.0-0.2.rc2
v2.2.0.0-0.1.rc1
v2.1.2.0-1
v2.1.2.0-0.5.rc5
v2.1.2.0-0.4.rc4
v2.1.2.0-0.3.rc3
v2.1.2.0-0.2.rc2
v2.1.2.0-0.1.rc1
v2.1.1.0-1
v2.1.1.0-0.5.rc5
v2.1.1.0-0.4.rc4
v2.1.1.0-0.3.rc3
v2.1.1.0-0.2.rc2
v2.1.1.0-0.1.rc1
v2.1.0.0-1
v2.1.0.0-0.4.rc4
v2.1.0.0-0.2.rc2
v2.1.0.0-0.3.rc3
v2.1.0.0-0.1.rc1
v2.0.2.0-1
v1.9.6-1
v2.0.2.0-0.4.rc4
v2.0.2.0-0.3.rc3
v1.9.6-0.1.rc1
v2.0.2.0-0.2.rc2
v2.0.2.0-0.1.rc1
v1.9.5-1
v1.9.5-0.1.rc1
v2.0.1.0-1
v2.0.1.0-0.2.rc2
v2.0.1.0-0.1.rc1
v2.0.0.2-1
v2.0.0.1-1
v2.0.0.0-1
v2.0.0-0.9.rc4
v2.0.0-0.8.rc3
v2.0.0-0.7.rc2
v2.0.0-0.6.rc1
v2.0.0-0.5.beta3
v2.0.0-0.4.beta2
v1.9.4-1
v2.0.0-0.3.beta1
v1.9.4-0.3.rc3
v1.9.4-0.2.rc2
v1.9.4-0.1.rc1
v2.0.0-0.2.alpha2
v1.9.3-1
v2.0.0-0.1.alpha1
v1.9.3-0.3.rc3
v1.9.3-0.2.rc2
v1.9.3-0.1.rc1
v1.9.2-1
v1.9.2-0.2.rc2
v1_last
v1.9.2-0.1.rc1
v1.9.1-1
v1.9.1-0.4.rc4
v1.9.1-0.3.rc3
v1.9.1-0.2.rc2
v1.9.1-0.1.rc1
v1.9.0.1-1
v1.9.0-2
v1.9.0-1
v1.9.0-0.2.rc2
v1.9.0-0.1.rc1
v1.8.4
v1.8.3
v1.8.2
v1.8.1
v1.8.0
v1.7.2
v1.7.1
v1.7.0
v1.6.10
v1.6.9
v1.6.8
v1.6.7
v1.6.6
v1.6.5
v1.6.4
v1.6.3
v1.6.2
v1.6.1
v1.6.0
v1.5.5
v1.5.4
v1.5.3
v1.5.2
v1.5.1
v1.5.0
v1.4.5
v1.4.4
v1.4.3
v1.4.2
v1.4.1
v1.4.0
v1.3.4
v1.3.3
v1.3.2
v1.3.1
v1.3.0
v1.2.3
v1.2.2
v1.2.1
v1.2
v1.1
v1.0
0.8
0.7.2
0.7
0.6
0.5
0.4.1
0.4
0.3.1
0.3
0.01
0.0.1
0.0.2
0.7.1
v0.9
v2.13.10
v2.13.10rc1
v2.13.11
v2.13.11rc1
v2.13.12
v2.13.12rc1
v2.13.13
v2.13.13rc1
v2.13.9
v2.13.9rc1
v2.14.10
v2.14.10rc1
v2.14.11
v2.14.11rc1
v2.14.12
v2.14.12rc1
v2.14.13
v2.14.14
v2.14.14rc1
v2.14.15
v2.14.15rc1
v2.14.16
v2.14.16rc1
v2.14.17
v2.14.17rc1
v2.14.18
v2.14.18rc1
v2.14.4
v2.14.4rc1
v2.14.5
v2.14.5rc1
v2.14.6
v2.14.6rc1
v2.14.7
v2.14.7rc1
v2.14.8
v2.14.8rc1
v2.14.9
v2.14.9rc1
v2.15.0
v2.15.0b1
v2.15.0b2
v2.15.0b3
v2.15.0rc1
v2.15.0rc2
v2.15.1
v2.15.10
v2.15.10rc1
v2.15.11
v2.15.11rc1
v2.15.12
v2.15.12rc1
v2.15.13
v2.15.13rc1
v2.15.1rc1
v2.15.2
v2.15.2rc1
v2.15.3
v2.15.3rc1
v2.15.4
v2.15.4rc1
v2.15.5
v2.15.5rc1
v2.15.6
v2.15.6rc1
v2.15.7
v2.15.7rc1
v2.15.8
v2.15.9
v2.15.9rc1
v2.16.0
v2.16.0b1
v2.16.0b2
v2.16.0rc1
v2.16.1
v2.16.10
v2.16.10rc1
v2.16.11
v2.16.11rc1
v2.16.12
v2.16.12rc1
v2.16.13
v2.16.13rc1
v2.16.1rc1
v2.16.2
v2.16.3
v2.16.3rc1
v2.16.4
v2.16.4rc1
v2.16.5
v2.16.5rc1
v2.16.6
v2.16.7
v2.16.7rc1
v2.16.8
v2.16.8rc1
v2.16.9
v2.16.9rc1
v2.17.0
v2.17.0b1
v2.17.0rc1
v2.17.0rc2
v2.17.1
v2.17.1rc1
v2.17.2
v2.17.2rc1
v2.17.2rc2
v2.17.3
v2.17.3rc1
v2.17.4
v2.17.4rc1
v2.17.5
v2.17.5rc1
v2.17.6
v2.17.6rc1
v2.18.0
v2.18.0b1
v2.18.0rc1
v2.18.0rc2
v2.5.0b2
${ noResults }
14 Commits (d03202e4d69552100f02976946a422c50278058b)
Author | SHA1 | Message | Date |
---|---|---|---|
Adrian Likins |
6e585bdf24
|
Fact collector ordering deps (#31362)
Add deps/requires for fact collectors Fact collectors can now set a required_facts class attribute that will be a set of the names of fact collectors they require to be run first. ie, if a collector needs to know the ansible_distribution, it should set it's required_facts to include 'distribution' required_facts = set(['distribution']) If a collector requires another collector, it gets added to the selected collector names. We then topological sort the ordering of the collectors so that deps work out (ie, 'distribution' will run before 'service_mgr') required_facts were added to the collectors for: - network (requires 'distribution', 'platform') - hardware (requires 'platform') - service_mgr (requires 'distribution', 'platform') Fix name references for facts (need 'ansible_' prefix) is service_mgr Fixes #30753 |
7 years ago |
Adrian Likins |
08f92a9f0f
|
Fix fact deps when 'filter=ansible_fact' is used. (#33441)
The accumulated collected_facts was being update with new facts _after_ filtering them. So only facts that pass the filter would ever be passed to other fact collectors. For 'filter=ansible_service_mgr', even though it requires the platform and distribution facts and even collects them, they would get filtered out and never passed to the other collectors that need them (service_mgr for ex). Fix is just to add the unfiltered facts to collected_facts. Adds unit tests for fact filter and collected_facts. Fixes #32286 |
7 years ago |
Matt Clay | e45c763b64 | Fix invalid string escape sequences. | 7 years ago |
Sam Doran | e7902d888c |
Make ansible_selinux facts a consistent type (#31065)
* Make ansible_selinux facts a consistent type Rather than returning a bool if the Python library is missing, return a dict with one key containing a message explaining there is no way to tell the status of SELinux on the system becasue the Python library is not present. * Fix unit test |
7 years ago |
Adrian Likins | 95abc1d82e |
Fix fact failures cause by ordering of collectors (#30777)
* Fix fact failures cause by ordering of collectors Some fact collectors need info collected by other facts. (for ex, service_mgr needs to know 'ansible_system'). This info is passed to the Collector.collect method via the 'collected_facts' info. But, the order the fact collectors were running in is not a set order, so collectors like service_mgr could run before the PlatformFactCollect ('ansible_system', etc), so the 'ansible_system' fact would not exist yet. Depending on the collector and the deps, this can result in incorrect behavior and wrong or missing facts. To make the ordering of the collectors more consistent and predictable, the code that builds that list is now driven by the order of collectors in default_collectors.py, and the rest of the code tries to preserve it. * Flip the loops when building collector names iterate over the ordered default_collectors list selecting them for the final list in order instead of driving it from the unordered collector_names set. This lets the list returned by select_collector_classes to stay in the same order as default_collectors.collectors For collectors that have implicit deps on other fact collectors, the default collectors can be ordered to include those early. * default_collectors.py now uses a handful of sub lists of collectors that can be ordered in default_collectors.collectors. fixes #30753 fixes #30623 |
7 years ago |
Adrian Likins | 12404f470a |
Fix pkg_mgr fact on OpenBSD (#30725)
* Fix pkg_mgr fact on OpenBSD Add a OpenBSDPkgMgrFactCollector that hardcodes pkg_mgr to 'openbsd_pkg'. The ansible collector will choose the OpenBSD collector if the system is OpenBSD and the 'Generic' one otherwise. This removes PkgMgrFactCollectors depenency on the 'system' fact being in collected_facts, which also avoids ordering issues (if the pkg mgr fact is collected before the system fact...) Fixes #30623 |
7 years ago |
Adrian Likins | 27a015f0ad |
add a 'min' type for gather_subset to collect nothing (#27085)
previously gather_subset=['!all'] would still gather the min set of facts, and there was no way to collect no facts. The 'min' specifier in gather_subset is equilivent to exclude the minimal_gather_subset facts as well. gather_subset=['!all', '!min'] will collect no facts This also lets explicitly added gather_subsets override excludes. gather_subset=['pkg_mgr', '!all', '!min'] will collect only the pkg_mgr fact. |
7 years ago |
Adrian Likins | 17ab546c48 |
Add 2.0-2.3 facts api compat (ansible_facts(), get_all_facts()) (#27294)
* Add 2.0-2.3 facts api compat (ansible_facts(), get_all_facts()) These are intended to provide compatibilty for modules that use 'ansible.module_utils.facts.ansible_facts' and 'ansible.module_utils.facts.get_all_facts' from 2.0-2.3 facts API. Fixes #25686 Some related changes/fixes needed to provide the compat api: * rm ansible.constants import from module_utils.facts.compat Just use a hard coded default for gather_subset/gather_timeout instead of trying to load it from non existent config if the module params dont include it. * include 'external' collectors in compat ansible_facts() * Add facter/ohai back to the valid collector classes facter/ohai had gotten removed from the default_collectors class used as the default list for all_collector_classes by setup.py and compat.py That made gather_subset['facter'] fail. |
7 years ago |
Adrian Likins | 0fc0b6f059 |
Mv AnsibleFactCollector back to module_utils (#26150)
It was in lib/ansible/modules/system/setup.py since it was the only thing using it, but move it back to module_utils and add a ansible_collector.get_ansible_collector() to build a facts collector just like the one used by setup.py mv test_setup.py -> test_ansible_collector.py All the code it was testing is now in ansible_collector rm code to create 'ansible_facts' subkey from namespace Just leave it up to the caller to do, and just return a flat dictionary from AnsibleFactCollector.collect() |
7 years ago |
Adrian Likins | 56b7483b85 |
More statvfs info for mount facts rebase 12073 (#25454)
* Add more mount point statvfs info including sizes Based on https://github.com/ansible/ansible/pull/12073 facts.utils.get_mount_size() now returns a dict of most of the posix statvfs data, including block_size and inode counts. Update the facts.hardware classes that use get_mount_size() to use the new info by mount_info.update(mount_statvfs_inof) to merge. * add back unit tests for LinuxHardware mount/fs facts * add test cases for facts.utils.get_mount_size |
8 years ago |
Adrian Likins | dde3dac9f8 |
Support NetBSD 7.1+ style ifconfig -a output (#25442)
* Support NetBSD 7.1+ style ifconfig -a output network facts on NetBSD after 7.1 cvs would fail because of format changes in 'ifconfig -a' output. update code to support new and old format. add unit tests for both based on examples from Bruce V Chiarelli. * wrap use of interfaces.keys() in list() for py3 compat * sort interface ids for stability |
8 years ago |
Adrian Likins | f4128746d3 |
Cmdline fact uefi 23647 (#25446)
* Fix ansible_cmdline initrd fact for UEFI UEFI cmdline paths use \ path sep which would get munged by cmdline fact collection. * Make CmdLineFactCollector easier to test extract the parsing of the /proc/cmdline content to _parse_proc_cmdline() add a wrapper method for get_file_content _get_proc_cmdline() Add unit tests of _parse_proc_cmdline based on examples from issue #23647 Fixes #23647 |
8 years ago |
Adrian Likins | 45a9f96774 |
Facts Refresh (2.4 roadmap) (#23012)
Facts Refresh (2.4 roadmap) This commit implements most of the 2.4 roadmap 'Facts Refresh' - move facts.py to facts/__init__.py - move facts Distribution() to its own class - add a facts/utils.py - move get_file_content and get_uname_version to facts/utils.py - move Facts() class from facts/__init__ to facts/facts.py - mv get_file_lines to facts/utils.py - mv Ohai()/Facter() class to facts/ohai.py and facter.py - Start moving fact Hardware() classes to facts/hardware/*.py - mv HPUX() hardware class to facts/hardware/hpux.py - move SunOSHardware() fact class to facts/hardware/sunos.py - move OpenBSDHardware() class to facts/hardware/openbsd.py - mv FreeBsdHardware() and DragonFlyHardware() to facts/hardware/ - mv NetBSDHardware() to facts/hardware/netbsd.py - mv Darwin() hardware class to facts/hardware/darwin.py - pep8/etc cleanups on facts/hardware/*.py - Mv network facts classes to facts/network/*.py - mv Virtual fact classes to facts/virtual - mv Hardware.get_sysctl to facts/sysctl.py:get_sysctl - Also mv get_uname_version from facts/utils.py -> distribution.py since distribution.py is the only thing using it. - add collector.py with new BaseFactCollector - add a subclass for AnsibleFactCollector - hook up dict key munging FactNamespaces - add some test cases for testing the names of facts - mv timeout stuff to facts.timeout - rm ansible_facts()/get_all_facts() etc - Instead of calling facts.ansible_facts(), fact collection api used by setup.py is now to create an AnsibleFactCollector() and call it's collect method. - replace Facts.get_user_facts with UserFactCollector - add a 'systems' facts package, mv UserFactCollector there - mv get_dns_facts to DnsFactCollector - mv get_env_facts to EnvFactCollector - include the timeout length in exception message - modules and module_utils that use AnsibleFactCollector can now theoretically set the 'valid_subsets' May be useful for network facts module that currently have to reimplement a good chunk of facts.py to get gather_subsets to work. - get_local_facts -> system/LocalFactCollector - get_date_time -> system/date_time.py - get_fips_facts -> system/fips.py - get_caps_facts() -> system/caps.py - get_apparmor_facts -> system/apparmor.py - get_selinux_facts -> system/selinux.py - get_lsb_facts -> system/lsb.py - get_service_mgr_facts -> system/service_mgr.py - Facts.is_systemd_managed -> system/service_mgr.py - get_pkg_mgr_facts -> system/pkg_mgr.py - Facts()._get_mount_size_facts() -> facts.utils.get_mount_size() - add unit test for EnvFactCollector - add a test case for minimal gather_subsets - add test case for collect_ids - Make gather_subset match existing behavior or '!all' If 'gather_subset' is provided as '!all', the existing behavior (in 2.2/2.3) is that means 'dont collect any facts except those from the Facts() class'. So 'skip everything except 'apparmor', 'caps', 'date_time', 'env', 'fips', 'local', 'lsb', 'pkg_mgr', 'python', 'selinux', 'service_mgr', 'user', 'platform', etc. The new facts setup was making '!all' mean no facts at all, since it can add/exclude at a finer granularity. Since that makes more sense for the ansible collector, and the set of minimal facts to collect is really more up to setup.py to decide we do just that. So if setup.py needs to always collect some gather_subset, even on !all, setup.py needs to have the that subset added to the list it passes as minimal_gather_subset. This should fix some intg tests that assume '!all' means that some facts are still collected (user info and env for example). If we want to make setup.py collect a more minimal set, we can do that. - force facts_dicts.keys() to a list so py3 works - split fact collector tests to test_collectors.py - convert Facter(Facts) -> other/facter.py:FacterFactCollector - add FactCollector.collect_with_namespace() regular .collect() will return a dict with the key names using the base names ('ip_address', 'service_mgr' etc) .collect_with_namespace() will return a dict where the key names have been transformed with the collectors namespace, if there is one. For most, this means a namespace that adds 'ansible_' to the start of the key name. For 'FacterFactCollector', the namespace transforms the key to 'facter_*'. - add test cases for collect_with_namespace - move all the concrete 'which facts does setup.py' stuff to setup.py The caller of AnsibleFactCollector.from_gather_subset() needs to pass in the list of collector classes now. - update system/setup.py to import all of the fact classes and pass in that list. - split the Distribution fact class up a bit extracted the 'distro release' file handling (ie, linux boxes with /etc/release, /etc/os-release etc) into its own class. - extract get_cmdline_facts -> cmdline.py - extract get_public_ssh_host_keys -> system/ssh_pub_keys.py - extract get_platform_facts -> system/platform.py platform.py may be a good candidate for further splitting. - rm test for plain Facts() base class - let the base class for Collector unit tests provide collected_facts some Collectors and/or their migrated Facts() subsclasses need to look at facts collected by other modules ('ansible_architecture' the main one...). Collector.collect() has the collected_facts arg for this, so add a class variable to BaseFactsTest so we can specify it. - mv Ohai to other/ohai.py and convert to Collector - update hardware/*.py to return facts (no side effects) - mv AnsibleFactCollector to setup.py - extra collector class gathering to module method in facts/__init__.py (collector_classes_from_gather_subset) - add a CollectorMetaDataCollector collector used to provide the 'gather_setup' fact - add unit test module for 'setup' module (test/units/modules/system/setup.py) - Collector init now doesnt need a module, but collect does An instance of a FactCollector() isnt tied to a AnsibleModule instance, but the collect() method can be, so optionally pass in module to FactCollector.collect() (everywhere) - add a default_collectors for list of default collectors import and use it from setup.py module eventually, would like to replace this with a plugin loader style class finder/loader - unit tests for module_utils/facts/__init__.py - add unit tests for ohai facts collector - remove self.facts side effect on populate() in hardware/sunos.py - convert OpenBSDHardware() to rm side effects on self.facts - try to rm some self.facts side effects in Network() plumb in collected_facts from populate() where it is needed. stop passing collected_facts into Network() [via cached_facts=, where it eventually becomes self.facts] - nothing provides Fact() cached_facts arg now, rm it Facts() should be internal only implementation so nothing should be using it. Of course, now someone will. - add a Collector.name attr to build a map of name->_fact_ids To properly exclude a gather_subset spec like '!hardware', we need to know that 'hardware' also means 'devices', 'dmi', etc. Before, '!hardware' would remove the 'hardware' collector name but not 'devices'. Since both would end up in id_collector_map, we would still end up with the HardwareCollector in the collector list. End result being that '!hardware' wouldn't stop hardware from being collected. So we need to be able to build that map, so add the Collector.name attribute that is the primary name (like 'hardware') and let Collector._fact_ids be the other fact ids that a collector is responsible for. Construct the aliases_map of Collector.name -> set of _fact_ids in fact/__init__.py get_collector_names, and use it when we are populating the exclude set. - refactor of distribution.py make the big OS_FAMILY literal a little easier to read Also keys can now be any string instead of python literals 99% sure the test for 'KDE Neon' was wrong I don't see how/where it should or could get 'Neon' instead of 'KDE Neon' as provided in os-release NAME= Use 'distribution' string for key to OS_MAP ie, we dont need to make it a valid python label anymore so dont. move _has_dist_file to module as _file_exists easier to mock without mucking with os.path mv platform.system() calls to within get_distribution_facts() instead of Distribution() init. - remove _json compat module The code in here was to support: -a 'json' python module that was not the standard one included with python since 2.6. - potentially fallback to simplejson if 'json' was not available. 'json' is available for all supported python versions now so no longer needed. - mv get_collector_names -> facts.collector - mv collector_classes_from_gather_subset -> facts.collector - mv collector tests from test_facts -> test_collector - Use six's reduce() in sunos/netbsd hardware facts - rm extraneous get_uname_version in utils only system/distribution.py uses it - Remove Facts() subclass metaclass usage - using fact_id and a platform id for matching collectors gut most of Facts() subclasses rm Facts() subclasses with weird metaclass only add collectors that match the fact_ids and the platform_info to the list of collectors used. atm, a collectors platform_id will default to 'Generic', and any platform matches 'Generic' goal is to select collector classes including matching the systems platform in collector.py, instead of relying on metaclasses in hardware/*. To finish this, the various Facts() subclasses will need to be replaced entirely with Collector() subclasses. use collector classmethod platform_match() to match the platform This lets the particular class decide if it is compatible with a given platform_info. platform_info is a dict like obj, so it could be expanded in the future. Add a default platform_match to BaseFactCollector that matches platform_info['system'] == cls._platform They were needed previously to trigger a module load on all the collector classes when we import facts/hardare so that the Hardware() and related classes that used __new__ and find_all_subclasses() would work. Now that is done in collectors based on platform matching at runtime we dont need to do it py module import/parse time. So the non empty __init__.pys are no longer needed and their is a more flexible mechanism for selection platform specific stuff. facts/facts.py is no longer used, rm'ed - if we dont find an implement class for gather spec.. just ignore it. Would be useful to add a warn to warn about this case. - Fix SD-UX typo (should be HP-UX) - Port fix for #21893 (0 sockets) to this branch This readds the change from |
8 years ago |
Toshio Kuratomi | d088030fa6 |
Facts Timeout was not settable via ansible.cfg
The timeout for gathering facts needs to be settable from three places
(highest precedence to lowest):
* programmatically
* ansible.cfg (equivalent to the user specifying it explicitly when
calling setup)
* from the default value
The code was changed in
|
8 years ago |