facter 2.0.1.rc1-universal-darwin
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 +43 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +16 -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 +33 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +262 -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 +100 -0
- data/lib/facter/core/execution/base.rb +73 -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 +117 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +37 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +22 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +33 -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 +15 -0
- data/lib/facter/kernelrelease.rb +42 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +18 -0
- data/lib/facter/lsbdistdescription.rb +21 -0
- data/lib/facter/lsbdistid.rb +18 -0
- data/lib/facter/lsbdistrelease.rb +18 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +18 -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 +162 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +121 -0
- data/lib/facter/operatingsystemmajrelease.rb +33 -0
- data/lib/facter/operatingsystemrelease.rb +226 -0
- data/lib/facter/osfamily.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +84 -0
- data/lib/facter/processor.rb +183 -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 +61 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +101 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +38 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +146 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +104 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/monkey_patches.rb +8 -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/parser.rb +158 -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/processor.rb +291 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +152 -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 +80 -0
- data/lib/facter/util/virtual.rb +151 -0
- data/lib/facter/util/vlans.rb +24 -0
- data/lib/facter/util/windows_root.rb +37 -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 +262 -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/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/filesystems/linux +28 -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/netmask/darwin_10_8_5.txt +30 -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/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/loader/nosuchfact.rb +1 -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/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -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/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_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 +119 -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 +37 -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 +96 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2_spec.rb +187 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -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 +17 -0
- data/spec/unit/kernelrelease_spec.rb +53 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +74 -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 +61 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +539 -0
- data/spec/unit/netmask_spec.rb +95 -0
- data/spec/unit/operatingsystem_spec.rb +141 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
- data/spec/unit/operatingsystemrelease_spec.rb +226 -0
- data/spec/unit/physicalprocessorcount_spec.rb +76 -0
- data/spec/unit/processor_spec.rb +393 -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 +84 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +180 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +463 -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 +113 -0
- data/spec/unit/util/manufacturer_spec.rb +179 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/parser_spec.rb +200 -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 +131 -0
- data/spec/unit/util/virtual_spec.rb +294 -0
- data/spec/unit/util/vlans_spec.rb +12 -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 +470 -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 +674 -0
data/lib/facter/ssh.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
# Fact: ssh
|
2
|
+
#
|
3
|
+
# Purpose:
|
4
|
+
#
|
5
|
+
# Resolution:
|
6
|
+
#
|
7
|
+
# Caveats:
|
8
|
+
#
|
9
|
+
|
10
|
+
## ssh.rb
|
11
|
+
## Facts related to SSH
|
12
|
+
##
|
13
|
+
|
14
|
+
{"SSHDSAKey" => { :file => "ssh_host_dsa_key.pub", :sshfprrtype => 2 },
|
15
|
+
"SSHRSAKey" => { :file => "ssh_host_rsa_key.pub", :sshfprrtype => 1 },
|
16
|
+
"SSHECDSAKey" => { :file => "ssh_host_ecdsa_key.pub", :sshfprrtype => 3 },
|
17
|
+
"SSHED25519Key" => { :file => "ssh_host_ed25519_key.pub", :sshfprrtype => 4 } }.each do |name,key|
|
18
|
+
|
19
|
+
Facter.add(name) do
|
20
|
+
setcode do
|
21
|
+
value = nil
|
22
|
+
|
23
|
+
[ "/etc/ssh",
|
24
|
+
"/usr/local/etc/ssh",
|
25
|
+
"/etc",
|
26
|
+
"/usr/local/etc",
|
27
|
+
"/etc/opt/ssh",
|
28
|
+
].each do |dir|
|
29
|
+
|
30
|
+
filepath = File.join(dir,key[:file])
|
31
|
+
|
32
|
+
if FileTest.file?(filepath)
|
33
|
+
begin
|
34
|
+
value = File.read(filepath).chomp.split(/\s+/)[1]
|
35
|
+
break
|
36
|
+
rescue
|
37
|
+
value = nil
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
Facter.add('SSHFP_' + name[3..-4]) do
|
47
|
+
setcode do
|
48
|
+
ssh = Facter.fact(name).value
|
49
|
+
value = nil
|
50
|
+
|
51
|
+
if ssh && key[:sshfprrtype]
|
52
|
+
begin
|
53
|
+
require 'digest/sha1'
|
54
|
+
require 'base64'
|
55
|
+
digest = Base64.decode64(ssh)
|
56
|
+
value = 'SSHFP ' + key[:sshfprrtype].to_s + ' 1 ' + Digest::SHA1.hexdigest(digest)
|
57
|
+
begin
|
58
|
+
require 'digest/sha2'
|
59
|
+
value += "\nSSHFP " + key[:sshfprrtype].to_s + ' 2 ' + Digest::SHA256.hexdigest(digest)
|
60
|
+
rescue
|
61
|
+
end
|
62
|
+
rescue
|
63
|
+
value = nil
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
value
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Fact: uptime
|
2
|
+
#
|
3
|
+
# Purpose: return the system uptime in a human readable format.
|
4
|
+
#
|
5
|
+
# Resolution:
|
6
|
+
# Does basic maths on the "uptime_seconds" fact to return a count of
|
7
|
+
# days, hours and minutes of uptime
|
8
|
+
#
|
9
|
+
# Caveats:
|
10
|
+
#
|
11
|
+
|
12
|
+
require 'facter/util/uptime'
|
13
|
+
|
14
|
+
Facter.add(:uptime) do
|
15
|
+
setcode do
|
16
|
+
seconds = Facter.fact(:uptime_seconds).value
|
17
|
+
|
18
|
+
unless seconds
|
19
|
+
"unknown"
|
20
|
+
else
|
21
|
+
days = seconds / (60 * 60 * 24)
|
22
|
+
hours = seconds / (60 * 60) % 24
|
23
|
+
minutes = seconds / 60 % 60
|
24
|
+
|
25
|
+
case days
|
26
|
+
when 0 then "#{hours}:#{"%02d" % minutes} hours"
|
27
|
+
when 1 then '1 day'
|
28
|
+
else "#{days} days"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
@@ -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,61 @@
|
|
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
|
+
else
|
49
|
+
@external_facts_dirs = [File.expand_path(File.join("~", ".facter", "facts.d"))]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
if Facter::Util::Config.is_windows?
|
54
|
+
require 'win32/dir'
|
55
|
+
require 'facter/util/windows_root'
|
56
|
+
else
|
57
|
+
require 'facter/util/unix_root'
|
58
|
+
end
|
59
|
+
|
60
|
+
setup_default_ext_facts_dirs
|
61
|
+
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
|