facter 2.1.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of facter might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/COMMITTERS.md +194 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +53 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +20 -0
- data/etc/facter.conf +5 -0
- data/ext/build_defaults.yaml +24 -0
- data/ext/debian/changelog.erb +59 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +14 -0
- data/ext/debian/copyright +19 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/lintian-overrides +0 -0
- data/ext/debian/rules +10 -0
- data/ext/debian/source/format +1 -0
- data/ext/facter-diff +74 -0
- data/ext/ips/facter.p5m.erb +10 -0
- data/ext/ips/rules +7 -0
- data/ext/ips/transforms +18 -0
- data/ext/osx/file_mapping.yaml +27 -0
- data/ext/osx/preflight.erb +33 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/project_data.yaml +36 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +261 -0
- data/lib/facter/Cfkey.rb +42 -0
- data/lib/facter/application.rb +204 -0
- data/lib/facter/architecture.rb +50 -0
- data/lib/facter/augeasversion.rb +28 -0
- data/lib/facter/blockdevices.rb +105 -0
- data/lib/facter/core/aggregate.rb +220 -0
- data/lib/facter/core/directed_graph.rb +46 -0
- data/lib/facter/core/execution.rb +123 -0
- data/lib/facter/core/execution/base.rb +81 -0
- data/lib/facter/core/execution/posix.rb +50 -0
- data/lib/facter/core/execution/windows.rb +57 -0
- data/lib/facter/core/logging.rb +169 -0
- data/lib/facter/core/resolvable.rb +94 -0
- data/lib/facter/core/suitable.rb +113 -0
- data/lib/facter/dhcp_servers.rb +39 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +44 -0
- data/lib/facter/ec2/rest.rb +130 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +24 -0
- data/lib/facter/gce.rb +16 -0
- data/lib/facter/gce/metadata.rb +87 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +31 -0
- data/lib/facter/id.rb +21 -0
- data/lib/facter/interfaces.rb +46 -0
- data/lib/facter/ipaddress.rb +171 -0
- data/lib/facter/ipaddress6.rb +82 -0
- data/lib/facter/iphostnumber.rb +29 -0
- data/lib/facter/kernel.rb +22 -0
- data/lib/facter/kernelmajversion.rb +23 -0
- data/lib/facter/kernelrelease.rb +50 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +16 -0
- data/lib/facter/lsbdistdescription.rb +25 -0
- data/lib/facter/lsbdistid.rb +16 -0
- data/lib/facter/lsbdistrelease.rb +16 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +16 -0
- data/lib/facter/macaddress.rb +97 -0
- data/lib/facter/macosx.rb +56 -0
- data/lib/facter/manufacturer.rb +68 -0
- data/lib/facter/memory.rb +168 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +141 -0
- data/lib/facter/operatingsystemmajrelease.rb +47 -0
- data/lib/facter/operatingsystemrelease.rb +250 -0
- data/lib/facter/osfamily.rb +37 -0
- data/lib/facter/partitions.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +91 -0
- data/lib/facter/processor.rb +168 -0
- data/lib/facter/ps.rb +30 -0
- data/lib/facter/puppetversion.rb +20 -0
- data/lib/facter/rubysitedir.rb +12 -0
- data/lib/facter/rubyversion.rb +12 -0
- data/lib/facter/selinux.rb +99 -0
- data/lib/facter/ssh.rb +72 -0
- data/lib/facter/timezone.rb +14 -0
- data/lib/facter/uniqueid.rb +4 -0
- data/lib/facter/uptime.rb +34 -0
- data/lib/facter/uptime_days.rb +15 -0
- data/lib/facter/uptime_hours.rb +15 -0
- data/lib/facter/uptime_seconds.rb +24 -0
- data/lib/facter/util/architecture.rb +19 -0
- data/lib/facter/util/collection.rb +161 -0
- data/lib/facter/util/composite_loader.rb +12 -0
- data/lib/facter/util/config.rb +63 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/dhcp_servers.rb +43 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +106 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +39 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +155 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +99 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/netmask.rb +40 -0
- data/lib/facter/util/normalization.rb +94 -0
- data/lib/facter/util/nothing_loader.rb +12 -0
- data/lib/facter/util/operatingsystem.rb +21 -0
- data/lib/facter/util/parser.rb +158 -0
- data/lib/facter/util/partitions.rb +41 -0
- data/lib/facter/util/partitions/linux.rb +65 -0
- data/lib/facter/util/plist.rb +24 -0
- data/lib/facter/util/plist/generator.rb +228 -0
- data/lib/facter/util/plist/parser.rb +226 -0
- data/lib/facter/util/posix.rb +16 -0
- data/lib/facter/util/processor.rb +289 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +160 -0
- data/lib/facter/util/solaris_zones.rb +158 -0
- data/lib/facter/util/unix_root.rb +5 -0
- data/lib/facter/util/uptime.rb +81 -0
- data/lib/facter/util/values.rb +109 -0
- data/lib/facter/util/virtual.rb +180 -0
- data/lib/facter/util/vlans.rb +21 -0
- data/lib/facter/util/windows_root.rb +7 -0
- data/lib/facter/util/wmi.rb +16 -0
- data/lib/facter/util/xendomains.rb +10 -0
- data/lib/facter/version.rb +86 -0
- data/lib/facter/virtual.rb +311 -0
- data/lib/facter/vlans.rb +17 -0
- data/lib/facter/xendomains.rb +20 -0
- data/lib/facter/zfs_version.rb +10 -0
- data/lib/facter/zonename.rb +6 -0
- data/lib/facter/zones.rb +17 -0
- data/lib/facter/zpool_version.rb +10 -0
- data/spec/fixtures/cpuinfo/amd64dual +57 -0
- data/spec/fixtures/cpuinfo/amd64quad +79 -0
- data/spec/fixtures/cpuinfo/amd64solo +23 -0
- data/spec/fixtures/cpuinfo/amd64tri +86 -0
- data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
- data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
- data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
- data/spec/fixtures/cpuinfo/panda-armel +17 -0
- data/spec/fixtures/cpuinfo/ppc64 +19 -0
- data/spec/fixtures/cpuinfo/sparc +10 -0
- data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
- data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
- data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
- data/spec/fixtures/hpux/sched.models +174 -0
- data/spec/fixtures/hpux/unistd.h +1534 -0
- data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
- data/spec/fixtures/ifconfig/centos_5_5 +17 -0
- data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
- data/spec/fixtures/ifconfig/fedora_10 +36 -0
- data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_13 +18 -0
- data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_8 +38 -0
- data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
- data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
- data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
- data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
- data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
- data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
- data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
- data/spec/fixtures/ldom/ldom_v1 +6 -0
- data/spec/fixtures/netstat/centos_5_5 +5 -0
- data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
- data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
- data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
- data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
- data/spec/fixtures/netstat/fedora_10 +7 -0
- data/spec/fixtures/netstat/open_solaris_10 +16 -0
- data/spec/fixtures/netstat/open_solaris_b132 +17 -0
- data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
- data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
- data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
- data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
- data/spec/fixtures/unit/dhcp_servers/route +3 -0
- data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
- data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
- data/spec/fixtures/unit/filesystems/linux +28 -0
- data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
- data/spec/fixtures/unit/memory/aix-svmon +9 -0
- data/spec/fixtures/unit/memory/aix-swap_l +2 -0
- data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
- data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
- data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
- data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
- data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
- data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
- data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
- data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
- data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
- data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
- data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
- data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
- data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
- data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
- data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
- data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
- data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
- data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
- data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
- data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
- data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
- data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
- data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
- data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
- data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
- data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
- data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
- data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
- data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
- data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
- data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
- data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
- data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
- data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
- data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
- data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
- data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
- data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
- data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
- data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
- data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
- data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
- data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
- data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
- data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
- data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
- data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
- data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
- data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
- data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
- data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
- data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
- data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
- data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
- data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
- data/spec/integration/facter_spec.rb +39 -0
- data/spec/lib/facter_spec/cpuinfo.rb +15 -0
- data/spec/lib/facter_spec/windows_network.rb +64 -0
- data/spec/puppetlabs_spec/files.rb +57 -0
- data/spec/puppetlabs_spec/fixtures.rb +49 -0
- data/spec/puppetlabs_spec/matchers.rb +87 -0
- data/spec/puppetlabs_spec/verbose.rb +9 -0
- data/spec/puppetlabs_spec_helper.rb +26 -0
- data/spec/shared_contexts/platform.rb +55 -0
- data/spec/shared_formats/parses.rb +3 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/unit/application_spec.rb +101 -0
- data/spec/unit/architecture_spec.rb +63 -0
- data/spec/unit/blockdevices_spec.rb +109 -0
- data/spec/unit/core/aggregate_spec.rb +125 -0
- data/spec/unit/core/directed_graph_spec.rb +79 -0
- data/spec/unit/core/execution/base_spec.rb +130 -0
- data/spec/unit/core/execution/posix_spec.rb +86 -0
- data/spec/unit/core/execution/windows_spec.rb +106 -0
- data/spec/unit/core/execution_spec.rb +42 -0
- data/spec/unit/core/logging_spec.rb +104 -0
- data/spec/unit/core/resolvable_spec.rb +81 -0
- data/spec/unit/core/suitable_spec.rb +106 -0
- data/spec/unit/dhcp_servers_spec.rb +152 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2/rest_spec.rb +145 -0
- data/spec/unit/ec2_spec.rb +127 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -0
- data/spec/unit/fqdn_spec.rb +16 -0
- data/spec/unit/gce/metadata_spec.rb +49 -0
- data/spec/unit/gce_spec.rb +34 -0
- data/spec/unit/hardwareisa_spec.rb +41 -0
- data/spec/unit/hardwaremodel_spec.rb +56 -0
- data/spec/unit/hostname_spec.rb +40 -0
- data/spec/unit/id_spec.rb +29 -0
- data/spec/unit/interfaces_spec.rb +57 -0
- data/spec/unit/ipaddress6_spec.rb +161 -0
- data/spec/unit/ipaddress_spec.rb +114 -0
- data/spec/unit/kernel_spec.rb +24 -0
- data/spec/unit/kernelmajversion_spec.rb +22 -0
- data/spec/unit/kernelrelease_spec.rb +69 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +75 -0
- data/spec/unit/lsbdistcodename_spec.rb +25 -0
- data/spec/unit/lsbdistdescription_spec.rb +25 -0
- data/spec/unit/lsbdistid_spec.rb +25 -0
- data/spec/unit/lsbdistrelease_spec.rb +25 -0
- data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
- data/spec/unit/lsbrelease_spec.rb +25 -0
- data/spec/unit/macaddress_spec.rb +73 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +470 -0
- data/spec/unit/netmask_spec.rb +106 -0
- data/spec/unit/operatingsystem_spec.rb +160 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
- data/spec/unit/operatingsystemrelease_spec.rb +236 -0
- data/spec/unit/osfamily_spec.rb +62 -0
- data/spec/unit/partitions_spec.rb +48 -0
- data/spec/unit/physicalprocessorcount_spec.rb +85 -0
- data/spec/unit/processor_spec.rb +401 -0
- data/spec/unit/ps_spec.rb +42 -0
- data/spec/unit/selinux_spec.rb +114 -0
- data/spec/unit/ssh_spec.rb +77 -0
- data/spec/unit/uniqueid_spec.rb +27 -0
- data/spec/unit/uptime_spec.rb +110 -0
- data/spec/unit/util/collection_spec.rb +258 -0
- data/spec/unit/util/config_spec.rb +97 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/dhcp_servers_spec.rb +63 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +184 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/formatter_spec.rb +50 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +467 -0
- data/spec/unit/util/loader_spec.rb +286 -0
- data/spec/unit/util/macaddress_spec.rb +141 -0
- data/spec/unit/util/macosx_spec.rb +114 -0
- data/spec/unit/util/manufacturer_spec.rb +223 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/operatingsystem_spec.rb +92 -0
- data/spec/unit/util/parser_spec.rb +200 -0
- data/spec/unit/util/partitions/partitions_spec.rb +67 -0
- data/spec/unit/util/partitions_spec.rb +19 -0
- data/spec/unit/util/posix_spec.rb +11 -0
- data/spec/unit/util/processor_spec.rb +92 -0
- data/spec/unit/util/registry_spec.rb +76 -0
- data/spec/unit/util/resolution_spec.rb +129 -0
- data/spec/unit/util/solaris_zones_spec.rb +127 -0
- data/spec/unit/util/uptime_spec.rb +126 -0
- data/spec/unit/util/values_spec.rb +171 -0
- data/spec/unit/util/virtual_spec.rb +364 -0
- data/spec/unit/util/vlans_spec.rb +42 -0
- data/spec/unit/util/wmi_spec.rb +19 -0
- data/spec/unit/util/xendomains_spec.rb +21 -0
- data/spec/unit/version_spec.rb +42 -0
- data/spec/unit/virtual_spec.rb +519 -0
- data/spec/unit/zfs_version_spec.rb +75 -0
- data/spec/unit/zonename_spec.rb +14 -0
- data/spec/unit/zones_spec.rb +55 -0
- data/spec/unit/zpool_version_spec.rb +75 -0
- data/spec/watchr.rb +125 -0
- metadata +815 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
# Fact: uptime_days
|
2
|
+
#
|
3
|
+
# Purpose: Return purely number of days of uptime.
|
4
|
+
#
|
5
|
+
# Resolution: Divides uptime_hours fact by 24.
|
6
|
+
#
|
7
|
+
# Caveats:
|
8
|
+
#
|
9
|
+
|
10
|
+
Facter.add(:uptime_days) do
|
11
|
+
setcode do
|
12
|
+
hours = Facter.value(:uptime_hours)
|
13
|
+
hours && hours / 24 # hours in day
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Fact: uptime_hours
|
2
|
+
#
|
3
|
+
# Purpose: Return purely number of hours of uptime.
|
4
|
+
#
|
5
|
+
# Resolution: Divides uptime_seconds fact by 3600.
|
6
|
+
#
|
7
|
+
# Caveats:
|
8
|
+
#
|
9
|
+
|
10
|
+
Facter.add(:uptime_hours) do
|
11
|
+
setcode do
|
12
|
+
seconds = Facter.value(:uptime_seconds)
|
13
|
+
seconds && seconds / (60 * 60) # seconds in hour
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# Fact: uptime_seconds
|
2
|
+
#
|
3
|
+
# Purpose: Return purely number of seconds of uptime.
|
4
|
+
#
|
5
|
+
# Resolution:
|
6
|
+
# Using the 'facter/util/uptime.rb' module, try a verity of methods to acquire
|
7
|
+
# the uptime on Unix.
|
8
|
+
#
|
9
|
+
# On Windows, the module calculates the uptime by the "LastBootupTime" Windows
|
10
|
+
# management value.
|
11
|
+
#
|
12
|
+
# Caveats:
|
13
|
+
#
|
14
|
+
|
15
|
+
require 'facter/util/uptime'
|
16
|
+
|
17
|
+
Facter.add(:uptime_seconds) do
|
18
|
+
setcode { Facter::Util::Uptime.get_uptime_seconds_unix }
|
19
|
+
end
|
20
|
+
|
21
|
+
Facter.add(:uptime_seconds) do
|
22
|
+
confine :kernel => :windows
|
23
|
+
setcode { Facter::Util::Uptime.get_uptime_seconds_win }
|
24
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# A module to help test architecture facts on non-AIX test hardware
|
2
|
+
|
3
|
+
module Facter::Util::Architecture
|
4
|
+
##
|
5
|
+
# lsattr is intended to directly delegate to Facter::Core::Execution.exec in
|
6
|
+
# an effort to make the processorX facts easier to test. See also the
|
7
|
+
# {lsdev} method.
|
8
|
+
def self.lsattr(command="lsattr -El proc0 -a type")
|
9
|
+
Facter::Core::Execution.exec(command)
|
10
|
+
end
|
11
|
+
|
12
|
+
##
|
13
|
+
# kernel_fact_value is intended to directly delegate to Facter.value(:kernel)
|
14
|
+
# to make it easier to stub the kernel fact without affecting the entire
|
15
|
+
# system.
|
16
|
+
def self.kernel_fact_value
|
17
|
+
Facter.value(:kernel)
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,161 @@
|
|
1
|
+
require 'facter'
|
2
|
+
require 'facter/util/fact'
|
3
|
+
require 'facter/util/loader'
|
4
|
+
|
5
|
+
# Manage which facts exist and how we access them. Largely just a wrapper
|
6
|
+
# around a hash of facts.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
class Facter::Util::Collection
|
10
|
+
|
11
|
+
def initialize(internal_loader, external_loader)
|
12
|
+
@facts = Hash.new
|
13
|
+
@internal_loader = internal_loader
|
14
|
+
@external_loader = external_loader
|
15
|
+
end
|
16
|
+
|
17
|
+
# Return a fact object by name.
|
18
|
+
def [](name)
|
19
|
+
value(name)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Define a new fact or extend an existing fact.
|
23
|
+
#
|
24
|
+
# @param name [Symbol] The name of the fact to define
|
25
|
+
# @param options [Hash] A hash of options to set on the fact
|
26
|
+
#
|
27
|
+
# @return [Facter::Util::Fact] The fact that was defined
|
28
|
+
def define_fact(name, options = {}, &block)
|
29
|
+
fact = create_or_return_fact(name, options)
|
30
|
+
|
31
|
+
if block_given?
|
32
|
+
fact.instance_eval(&block)
|
33
|
+
end
|
34
|
+
|
35
|
+
fact
|
36
|
+
rescue => e
|
37
|
+
Facter.log_exception(e, "Unable to add fact #{name}: #{e}")
|
38
|
+
end
|
39
|
+
|
40
|
+
# Add a resolution mechanism for a named fact. This does not distinguish
|
41
|
+
# between adding a new fact and adding a new way to resolve a fact.
|
42
|
+
#
|
43
|
+
# @param name [Symbol] The name of the fact to define
|
44
|
+
# @param options [Hash] A hash of options to set on the fact and resolution
|
45
|
+
#
|
46
|
+
# @return [Facter::Util::Fact] The fact that was defined
|
47
|
+
def add(name, options = {}, &block)
|
48
|
+
fact = create_or_return_fact(name, options)
|
49
|
+
|
50
|
+
fact.add(options, &block)
|
51
|
+
|
52
|
+
return fact
|
53
|
+
end
|
54
|
+
|
55
|
+
include Enumerable
|
56
|
+
|
57
|
+
# Iterate across all of the facts.
|
58
|
+
def each
|
59
|
+
load_all
|
60
|
+
@facts.each do |name, fact|
|
61
|
+
value = fact.value
|
62
|
+
unless value.nil?
|
63
|
+
yield name.to_s, value
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
# Return a fact by name.
|
69
|
+
def fact(name)
|
70
|
+
name = canonicalize(name)
|
71
|
+
|
72
|
+
# Try to load the fact if necessary
|
73
|
+
load(name) unless @facts[name]
|
74
|
+
|
75
|
+
# Try HARDER
|
76
|
+
internal_loader.load_all unless @facts[name]
|
77
|
+
|
78
|
+
if @facts.empty?
|
79
|
+
Facter.warnonce("No facts loaded from #{internal_loader.search_path.join(File::PATH_SEPARATOR)}")
|
80
|
+
end
|
81
|
+
|
82
|
+
@facts[name]
|
83
|
+
end
|
84
|
+
|
85
|
+
# Flush all cached values.
|
86
|
+
def flush
|
87
|
+
@facts.each { |name, fact| fact.flush }
|
88
|
+
@external_facts_loaded = nil
|
89
|
+
end
|
90
|
+
|
91
|
+
# Return a list of all of the facts.
|
92
|
+
def list
|
93
|
+
load_all
|
94
|
+
return @facts.keys
|
95
|
+
end
|
96
|
+
|
97
|
+
def load(name)
|
98
|
+
internal_loader.load(name)
|
99
|
+
load_external_facts
|
100
|
+
end
|
101
|
+
|
102
|
+
# Load all known facts.
|
103
|
+
def load_all
|
104
|
+
internal_loader.load_all
|
105
|
+
load_external_facts
|
106
|
+
end
|
107
|
+
|
108
|
+
def internal_loader
|
109
|
+
@internal_loader
|
110
|
+
end
|
111
|
+
|
112
|
+
def external_loader
|
113
|
+
@external_loader
|
114
|
+
end
|
115
|
+
|
116
|
+
# Return a hash of all of our facts.
|
117
|
+
def to_hash
|
118
|
+
@facts.inject({}) do |h, ary|
|
119
|
+
value = ary[1].value
|
120
|
+
if ! value.nil?
|
121
|
+
# For backwards compatibility, convert the fact name to a string.
|
122
|
+
h[ary[0].to_s] = value
|
123
|
+
end
|
124
|
+
h
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def value(name)
|
129
|
+
if fact = fact(name)
|
130
|
+
fact.value
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
private
|
135
|
+
|
136
|
+
def create_or_return_fact(name, options)
|
137
|
+
name = canonicalize(name)
|
138
|
+
|
139
|
+
fact = @facts[name]
|
140
|
+
|
141
|
+
if fact.nil?
|
142
|
+
fact = Facter::Util::Fact.new(name, options)
|
143
|
+
@facts[name] = fact
|
144
|
+
else
|
145
|
+
fact.extract_ldapname_option!(options)
|
146
|
+
end
|
147
|
+
|
148
|
+
fact
|
149
|
+
end
|
150
|
+
|
151
|
+
def canonicalize(name)
|
152
|
+
name.to_s.downcase.to_sym
|
153
|
+
end
|
154
|
+
|
155
|
+
def load_external_facts
|
156
|
+
if ! @external_facts_loaded
|
157
|
+
@external_facts_loaded = true
|
158
|
+
external_loader.load(self)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# A composite loader that allows for more than one
|
2
|
+
# default directory loader
|
3
|
+
|
4
|
+
class Facter::Util::CompositeLoader
|
5
|
+
def initialize(loaders)
|
6
|
+
@loaders = loaders
|
7
|
+
end
|
8
|
+
|
9
|
+
def load(collection)
|
10
|
+
@loaders.each { |loader| loader.load(collection) }
|
11
|
+
end
|
12
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
require 'rbconfig'
|
2
|
+
|
3
|
+
# A module to return config related data
|
4
|
+
#
|
5
|
+
module Facter::Util::Config
|
6
|
+
|
7
|
+
def self.ext_fact_loader
|
8
|
+
@ext_fact_loader || Facter::Util::DirectoryLoader.default_loader
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.ext_fact_loader=(loader)
|
12
|
+
@ext_fact_loader = loader
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.is_mac?
|
16
|
+
RbConfig::CONFIG['host_os'] =~ /darwin/i
|
17
|
+
end
|
18
|
+
|
19
|
+
# Returns true if OS is windows
|
20
|
+
def self.is_windows?
|
21
|
+
RbConfig::CONFIG['host_os'] =~ /mswin|win32|dos|mingw|cygwin/i
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.windows_data_dir
|
25
|
+
if Dir.const_defined? 'COMMON_APPDATA' then
|
26
|
+
Dir::COMMON_APPDATA
|
27
|
+
else
|
28
|
+
nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.external_facts_dirs=(dir)
|
33
|
+
@external_facts_dirs = dir
|
34
|
+
end
|
35
|
+
|
36
|
+
def self.external_facts_dirs
|
37
|
+
@external_facts_dirs
|
38
|
+
end
|
39
|
+
|
40
|
+
def self.setup_default_ext_facts_dirs
|
41
|
+
if Facter::Util::Root.root?
|
42
|
+
windows_dir = windows_data_dir
|
43
|
+
if windows_dir.nil? then
|
44
|
+
@external_facts_dirs = ["/etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"]
|
45
|
+
else
|
46
|
+
@external_facts_dirs = [File.join(windows_dir, 'PuppetLabs', 'facter', 'facts.d')]
|
47
|
+
end
|
48
|
+
elsif ENV['HOME']
|
49
|
+
@external_facts_dirs = [File.expand_path(File.join(ENV['HOME'], ".facter", "facts.d"))]
|
50
|
+
else
|
51
|
+
@external_facts_dirs = []
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
if Facter::Util::Config.is_windows?
|
56
|
+
require 'win32/dir'
|
57
|
+
require 'facter/util/windows_root'
|
58
|
+
else
|
59
|
+
require 'facter/util/unix_root'
|
60
|
+
end
|
61
|
+
|
62
|
+
setup_default_ext_facts_dirs
|
63
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# A restricting tag for fact resolution mechanisms. The tag must be true
|
2
|
+
# for the resolution mechanism to be suitable.
|
3
|
+
|
4
|
+
require 'facter/util/values'
|
5
|
+
|
6
|
+
class Facter::Util::Confine
|
7
|
+
attr_accessor :fact, :values
|
8
|
+
|
9
|
+
include Facter::Util::Values
|
10
|
+
|
11
|
+
# Add the restriction. Requires the fact name, an operator, and the value
|
12
|
+
# we're comparing to.
|
13
|
+
#
|
14
|
+
# @param fact [Symbol] Name of the fact
|
15
|
+
# @param values [Array] One or more values to match against.
|
16
|
+
# They can be any type that provides a === method.
|
17
|
+
# @param block [Proc] Alternatively a block can be supplied as a check. The fact
|
18
|
+
# value will be passed as the argument to the block. If the block returns
|
19
|
+
# true then the fact will be enabled, otherwise it will be disabled.
|
20
|
+
def initialize(fact = nil, *values, &block)
|
21
|
+
raise ArgumentError, "The fact name must be provided" unless fact or block_given?
|
22
|
+
if values.empty? and not block_given?
|
23
|
+
raise ArgumentError, "One or more values or a block must be provided"
|
24
|
+
end
|
25
|
+
@fact = fact
|
26
|
+
@values = values
|
27
|
+
@block = block
|
28
|
+
end
|
29
|
+
|
30
|
+
def to_s
|
31
|
+
return @block.to_s if @block
|
32
|
+
return "'%s' '%s'" % [@fact, @values.join(",")]
|
33
|
+
end
|
34
|
+
|
35
|
+
# Evaluate the fact, returning true or false.
|
36
|
+
# if we have a block paramter then we only evaluate that instead
|
37
|
+
def true?
|
38
|
+
if @block and not @fact then
|
39
|
+
begin
|
40
|
+
return !! @block.call
|
41
|
+
rescue StandardError => error
|
42
|
+
Facter.debug "Confine raised #{error.class} #{error}"
|
43
|
+
return false
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
unless fact = Facter[@fact]
|
48
|
+
Facter.debug "No fact for %s" % @fact
|
49
|
+
return false
|
50
|
+
end
|
51
|
+
value = convert(fact.value)
|
52
|
+
|
53
|
+
return false if value.nil?
|
54
|
+
|
55
|
+
if @block then
|
56
|
+
begin
|
57
|
+
return !! @block.call(value)
|
58
|
+
rescue StandardError => error
|
59
|
+
Facter.debug "Confine raised #{error.class} #{error}"
|
60
|
+
return false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
return @values.any? do |v| convert(v) === value end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'facter/util/file_read'
|
2
|
+
|
3
|
+
module Facter::Util::DHCPServers
|
4
|
+
def self.gateway_device
|
5
|
+
interface = nil
|
6
|
+
if routes = Facter::Util::FileRead.read('/proc/net/route')
|
7
|
+
routes.each_line do |line|
|
8
|
+
device, destination = line.split(' ')
|
9
|
+
if destination == '00000000'
|
10
|
+
interface = device
|
11
|
+
break
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
interface
|
16
|
+
end
|
17
|
+
|
18
|
+
def self.devices
|
19
|
+
if Facter::Core::Execution.which('nmcli')
|
20
|
+
Facter::Core::Execution.exec("nmcli d").split("\n").select {|d| d =~ /\sconnected/i }.collect{ |line| line.split[0] }
|
21
|
+
else
|
22
|
+
[]
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.device_dhcp_server(device)
|
27
|
+
if Facter::Core::Execution.which('nmcli')
|
28
|
+
version = self.nmcli_version
|
29
|
+
# If the version is >= 0.9.9, use show instead of list
|
30
|
+
if version && version[0] > 0 || version[1] > 9 || (version[1] == 9 && version[2] >= 9)
|
31
|
+
Facter::Core::Execution.exec("nmcli -f all d show #{device}").scan(/dhcp_server_identifier.*?(\d+\.\d+\.\d+\.\d+)$/).flatten.first
|
32
|
+
else
|
33
|
+
Facter::Core::Execution.exec("nmcli -f all d list iface #{device}").scan(/dhcp_server_identifier.*?(\d+\.\d+\.\d+\.\d+)$/).flatten.first
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.nmcli_version
|
39
|
+
if version = Facter::Core::Execution.exec("nmcli --version")
|
40
|
+
version.scan(/version\s(\d+)\.?(\d+)?\.?(\d+)?\.?(\d+)?/).flatten.map(&:to_i)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# A Facter plugin that loads external facts.
|
2
|
+
#
|
3
|
+
# Default Unix Directories:
|
4
|
+
# /etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"
|
5
|
+
#
|
6
|
+
# Default Windows Direcotires:
|
7
|
+
# C:\ProgramData\Puppetlabs\facter\facts.d (2008)
|
8
|
+
# C:\Documents and Settings\All Users\Application Data\Puppetlabs\facter\facts.d (2003)
|
9
|
+
#
|
10
|
+
# Can also load from command-line specified directory
|
11
|
+
#
|
12
|
+
# Facts can be in the form of JSON, YAML or Text files
|
13
|
+
# and any executable that returns key=value pairs.
|
14
|
+
|
15
|
+
require 'facter'
|
16
|
+
require 'facter/util/config'
|
17
|
+
require 'facter/util/composite_loader'
|
18
|
+
require 'facter/util/parser'
|
19
|
+
require 'yaml'
|
20
|
+
|
21
|
+
class Facter::Util::DirectoryLoader
|
22
|
+
|
23
|
+
class NoSuchDirectoryError < Exception
|
24
|
+
end
|
25
|
+
|
26
|
+
# This value makes it highly likely that external facts will take
|
27
|
+
# precedence over all other facts
|
28
|
+
EXTERNAL_FACT_WEIGHT = 10000
|
29
|
+
|
30
|
+
# Directory for fact loading
|
31
|
+
attr_reader :directory
|
32
|
+
|
33
|
+
def initialize(dir)
|
34
|
+
@directory = dir
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.loader_for(dir)
|
38
|
+
if File.directory?(dir)
|
39
|
+
Facter::Util::DirectoryLoader.new(dir)
|
40
|
+
else
|
41
|
+
raise NoSuchDirectoryError
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.default_loader
|
46
|
+
loaders = Facter::Util::Config.external_facts_dirs.collect do |dir|
|
47
|
+
Facter::Util::DirectoryLoader.new(dir)
|
48
|
+
end
|
49
|
+
Facter::Util::CompositeLoader.new(loaders)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Load facts from files in fact directory using the relevant parser classes to
|
53
|
+
# parse them.
|
54
|
+
def load(collection)
|
55
|
+
entries.each do |file|
|
56
|
+
parser = Facter::Util::Parser.parser_for(file)
|
57
|
+
if parser == nil
|
58
|
+
next
|
59
|
+
end
|
60
|
+
|
61
|
+
data = parser.results
|
62
|
+
if data == false
|
63
|
+
Facter.warn "Could not interpret fact file #{file}"
|
64
|
+
elsif data == {} or data == nil
|
65
|
+
Facter.warn "Fact file #{file} was parsed but returned an empty data set"
|
66
|
+
else
|
67
|
+
data.each { |p,v| collection.add(p, :value => v) { has_weight(EXTERNAL_FACT_WEIGHT) } }
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
private
|
73
|
+
|
74
|
+
def entries
|
75
|
+
Dir.entries(directory).find_all { |f| should_parse?(f) }.sort.map { |f| File.join(directory, f) }
|
76
|
+
rescue Errno::ENOENT => detail
|
77
|
+
[]
|
78
|
+
end
|
79
|
+
|
80
|
+
def should_parse?(file)
|
81
|
+
not file =~ /^\./
|
82
|
+
end
|
83
|
+
end
|