ansible/ansible — pull request #589 by sfromm (2012-07-13 18:56:21+00:00)
Title: Update setup module for facts derived from classes

This changes and organizes facts into a base class Facts and several
sub classes that implement the necessary functionality. The classes
are:
- Facts: base class. Implements basic facts that should be common to a
number of platforms. It is also where SSH keys and SELinux facts are
set.
- Hardware: A subclass of Facts that should be further
subclassed per platform for CPU, memory, and related facts.
- LinuxHardware: subclass of Hardware for Linux platforms
- SunOSHardware: subclass of Hardware for SunOS platforms
- FreeBSDHardware: subclass of Hardware for FreeBSD
- Network: A subclass of Facts that that should be further
subclassed per platform for IP, both IPv4 and IPv6, information.
- LinuxNetwork: Currently only implementation for determining network
facts.
- Virtual: A subclass of Facts that that should be further
subclassed per platform to determine virtual environment facts.
- LinuxVirtual: Currently only implementation for determining virtual
facts.

If facts are needed for additional platforms, one of the above classes
(eg Network) can be further subclassed and implement the necessary
functionality.

In addition, it fixes get_network_facts() to work on Fedora17. That
broke due to changes to ifconfig output.

Changes were tested against debian, centos5, centos6, solaris10, and freebsd9.