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/ext/solaris/pkginfo
ADDED
data/install.rb
ADDED
@@ -0,0 +1,380 @@
|
|
1
|
+
#! /usr/bin/env ruby
|
2
|
+
#--
|
3
|
+
# Copyright 2004 Austin Ziegler <ruby-install@halostatue.ca>
|
4
|
+
# Install utility. Based on the original installation script for rdoc by the
|
5
|
+
# Pragmatic Programmers.
|
6
|
+
#
|
7
|
+
# This program is free software. It may be redistributed and/or modified under
|
8
|
+
# the terms of the GPL version 2 (or later) or the Ruby licence.
|
9
|
+
#
|
10
|
+
# Usage
|
11
|
+
# -----
|
12
|
+
# In most cases, if you have a typical project layout, you will need to do
|
13
|
+
# absolutely nothing to make this work for you. This layout is:
|
14
|
+
#
|
15
|
+
# bin/ # executable files -- "commands"
|
16
|
+
# lib/ # the source of the library
|
17
|
+
#
|
18
|
+
# The default behaviour:
|
19
|
+
# 1) Build Rdoc documentation from all files in bin/ (excluding .bat and .cmd),
|
20
|
+
# all .rb files in lib/, ./README, ./ChangeLog, and ./Install.
|
21
|
+
# 2) Build ri documentation from all files in bin/ (excluding .bat and .cmd),
|
22
|
+
# and all .rb files in lib/. This is disabled by default on Win32.
|
23
|
+
# 3) Install commands from bin/ into the Ruby bin directory. On Windows, if a
|
24
|
+
# if a corresponding batch file (.bat or .cmd) exists in the bin directory,
|
25
|
+
# it will be copied over as well. Otherwise, a batch file (always .bat) will
|
26
|
+
# be created to run the specified command.
|
27
|
+
# 4) Install all library files ending in .rb from lib/ into Ruby's
|
28
|
+
# site_lib/version directory.
|
29
|
+
#
|
30
|
+
#++
|
31
|
+
|
32
|
+
require 'rbconfig'
|
33
|
+
require 'find'
|
34
|
+
require 'fileutils'
|
35
|
+
require 'optparse'
|
36
|
+
require 'ostruct'
|
37
|
+
require 'tempfile'
|
38
|
+
|
39
|
+
begin
|
40
|
+
require 'rdoc/rdoc'
|
41
|
+
$haverdoc = true
|
42
|
+
rescue LoadError
|
43
|
+
puts "Missing rdoc; skipping documentation"
|
44
|
+
$haverdoc = false
|
45
|
+
end
|
46
|
+
|
47
|
+
begin
|
48
|
+
if $haverdoc
|
49
|
+
rst2man = %x{which rst2man.py}
|
50
|
+
$haveman = true
|
51
|
+
else
|
52
|
+
$haveman = false
|
53
|
+
end
|
54
|
+
rescue
|
55
|
+
puts "Missing rst2man; skipping man page creation"
|
56
|
+
$haveman = false
|
57
|
+
end
|
58
|
+
|
59
|
+
$LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), 'lib')))
|
60
|
+
require 'facter'
|
61
|
+
@operatingsystem = Facter[:operatingsystem].value
|
62
|
+
|
63
|
+
PREREQS = %w{cgi}
|
64
|
+
|
65
|
+
InstallOptions = OpenStruct.new
|
66
|
+
|
67
|
+
def glob(list)
|
68
|
+
g = list.map { |i| Dir.glob(i) }
|
69
|
+
g.flatten!
|
70
|
+
g.compact!
|
71
|
+
g
|
72
|
+
end
|
73
|
+
|
74
|
+
def do_bins(bins, target, strip = 's?bin/')
|
75
|
+
bins.each do |bf|
|
76
|
+
obf = bf.gsub(/#{strip}/, '')
|
77
|
+
install_binfile(bf, obf, target)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def do_libs(libs, strip = 'lib/')
|
82
|
+
libs.each do |lf|
|
83
|
+
olf = File.join(InstallOptions.site_dir, lf.gsub(/^#{strip}/, ''))
|
84
|
+
op = File.dirname(olf)
|
85
|
+
FileUtils.makedirs(op, {:mode => 0755, :verbose => true})
|
86
|
+
FileUtils.chmod(0755, op)
|
87
|
+
FileUtils.install(lf, olf, {:mode => 0644, :preserve => true, :verbose => true})
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def do_man(man, strip = 'man/')
|
92
|
+
if (InstallOptions.man == true)
|
93
|
+
man.each do |mf|
|
94
|
+
omf = File.join(InstallOptions.man_dir, mf.gsub(/#{strip}/, ''))
|
95
|
+
om = File.dirname(omf)
|
96
|
+
FileUtils.makedirs(om, {:mode => 0755, :verbose => true})
|
97
|
+
FileUtils.chmod(0755, om)
|
98
|
+
FileUtils.install(mf, omf, {:mode => 0644, :preserve => true, :verbose => true})
|
99
|
+
gzip = %x{which gzip}
|
100
|
+
gzip.chomp!
|
101
|
+
%x{#{gzip} -f #{omf}}
|
102
|
+
end
|
103
|
+
else
|
104
|
+
puts "Skipping Man Page Generation"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# Verify that all of the prereqs are installed
|
109
|
+
def check_prereqs
|
110
|
+
PREREQS.each { |pre|
|
111
|
+
begin
|
112
|
+
require pre
|
113
|
+
rescue LoadError
|
114
|
+
puts "Could not load #{pre} Ruby library; cannot install"
|
115
|
+
exit -1
|
116
|
+
end
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
def is_windows?
|
121
|
+
@operatingsystem == 'windows'
|
122
|
+
end
|
123
|
+
|
124
|
+
##
|
125
|
+
# Prepare the file installation.
|
126
|
+
#
|
127
|
+
def prepare_installation
|
128
|
+
# Only try to do docs if we're sure they have rdoc
|
129
|
+
if $haverdoc
|
130
|
+
InstallOptions.rdoc = true
|
131
|
+
if is_windows?
|
132
|
+
InstallOptions.ri = false
|
133
|
+
else
|
134
|
+
InstallOptions.ri = true
|
135
|
+
end
|
136
|
+
else
|
137
|
+
InstallOptions.rdoc = false
|
138
|
+
InstallOptions.ri = false
|
139
|
+
end
|
140
|
+
|
141
|
+
|
142
|
+
if $haveman
|
143
|
+
InstallOptions.man = true
|
144
|
+
if is_windows?
|
145
|
+
InstallOptions.man = false
|
146
|
+
end
|
147
|
+
else
|
148
|
+
InstallOptions.man = false
|
149
|
+
end
|
150
|
+
|
151
|
+
ARGV.options do |opts|
|
152
|
+
opts.banner = "Usage: #{File.basename($0)} [options]"
|
153
|
+
opts.separator ""
|
154
|
+
opts.on('--[no-]rdoc', 'Prevents the creation of RDoc output.', 'Default on.') do |onrdoc|
|
155
|
+
InstallOptions.rdoc = onrdoc
|
156
|
+
end
|
157
|
+
opts.on('--[no-]ri', 'Prevents the creation of RI output.', 'Default off on mswin32.') do |onri|
|
158
|
+
InstallOptions.ri = onri
|
159
|
+
end
|
160
|
+
opts.on('--[no-]man', 'Presents the creation of man pages.', 'Default on.') do |onman|
|
161
|
+
InstallOptions.man = onman
|
162
|
+
end
|
163
|
+
opts.on('--destdir[=OPTIONAL]', 'Installation prefix for all targets', 'Default essentially /') do |destdir|
|
164
|
+
InstallOptions.destdir = destdir
|
165
|
+
end
|
166
|
+
opts.on('--bindir[=OPTIONAL]', 'Installation directory for binaries', 'overrides RbConfig::CONFIG["bindir"]') do |bindir|
|
167
|
+
InstallOptions.bindir = bindir
|
168
|
+
end
|
169
|
+
opts.on('--ruby[=OPTIONAL]', 'Ruby interpreter to use with installation', 'overrides ruby used to call install.rb') do |ruby|
|
170
|
+
InstallOptions.ruby = ruby
|
171
|
+
end
|
172
|
+
opts.on('--sitelibdir[=OPTIONAL]', 'Installation directory for libraries', 'overrides RbConfig::CONFIG["sitelibdir"]') do |sitelibdir|
|
173
|
+
InstallOptions.sitelibdir = sitelibdir
|
174
|
+
end
|
175
|
+
opts.on('--mandir[=OPTIONAL]', 'Installation directory for man pages', 'overrides RbConfig::CONFIG["mandir"]') do |mandir|
|
176
|
+
InstallOptions.mandir = mandir
|
177
|
+
end
|
178
|
+
opts.on('--quick', 'Performs a quick installation. Only the', 'installation is done.') do |quick|
|
179
|
+
InstallOptions.rdoc = false
|
180
|
+
InstallOptions.ri = false
|
181
|
+
end
|
182
|
+
opts.on('--full', 'Performs a full installation. All', 'optional installation steps are run.') do |full|
|
183
|
+
InstallOptions.rdoc = true
|
184
|
+
InstallOptions.ri = true
|
185
|
+
end
|
186
|
+
opts.separator("")
|
187
|
+
opts.on_tail('--help', "Shows this help text.") do
|
188
|
+
$stderr.puts opts
|
189
|
+
exit
|
190
|
+
end
|
191
|
+
|
192
|
+
opts.parse!
|
193
|
+
end
|
194
|
+
|
195
|
+
version = [RbConfig::CONFIG["MAJOR"], RbConfig::CONFIG["MINOR"]].join(".")
|
196
|
+
libdir = File.join(RbConfig::CONFIG["libdir"], "ruby", version)
|
197
|
+
|
198
|
+
# Mac OS X 10.5 and higher declare bindir
|
199
|
+
# /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin
|
200
|
+
# which is not generally where people expect executables to be installed
|
201
|
+
# These settings are appropriate defaults for all OS X versions.
|
202
|
+
if RUBY_PLATFORM =~ /^universal-darwin[\d\.]+$/
|
203
|
+
RbConfig::CONFIG['bindir'] = "/usr/bin"
|
204
|
+
end
|
205
|
+
|
206
|
+
if not InstallOptions.bindir.nil?
|
207
|
+
bindir = InstallOptions.bindir
|
208
|
+
else
|
209
|
+
bindir = RbConfig::CONFIG['bindir']
|
210
|
+
end
|
211
|
+
|
212
|
+
if not InstallOptions.sitelibdir.nil?
|
213
|
+
sitelibdir = InstallOptions.sitelibdir
|
214
|
+
else
|
215
|
+
sitelibdir = RbConfig::CONFIG["sitelibdir"]
|
216
|
+
if sitelibdir.nil?
|
217
|
+
sitelibdir = $:.find { |x| x =~ /site_ruby/ }
|
218
|
+
if sitelibdir.nil?
|
219
|
+
sitelibdir = File.join(libdir, "site_ruby")
|
220
|
+
elsif sitelibdir !~ Regexp.quote(version)
|
221
|
+
sitelibdir = File.join(sitelibdir, version)
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
if not InstallOptions.mandir.nil?
|
227
|
+
mandir = InstallOptions.mandir
|
228
|
+
else
|
229
|
+
mandir = RbConfig::CONFIG['mandir']
|
230
|
+
end
|
231
|
+
|
232
|
+
if (destdir = InstallOptions.destdir)
|
233
|
+
bindir = join(destdir, bindir)
|
234
|
+
mandir = join(destdir, mandir)
|
235
|
+
sitelibdir = join(destdir, sitelibdir)
|
236
|
+
|
237
|
+
FileUtils.makedirs(bindir)
|
238
|
+
FileUtils.makedirs(mandir)
|
239
|
+
FileUtils.makedirs(sitelibdir)
|
240
|
+
end
|
241
|
+
|
242
|
+
InstallOptions.site_dir = sitelibdir
|
243
|
+
InstallOptions.bin_dir = bindir
|
244
|
+
InstallOptions.lib_dir = libdir
|
245
|
+
InstallOptions.man_dir = mandir
|
246
|
+
end
|
247
|
+
|
248
|
+
##
|
249
|
+
# Join two paths. On Windows, dir must be converted to a relative path,
|
250
|
+
# by stripping the drive letter, but only if the basedir is not empty.
|
251
|
+
#
|
252
|
+
def join(basedir, dir)
|
253
|
+
return "#{basedir}#{dir[2..-1]}" if is_windows? and basedir.length > 0 and dir.length > 2
|
254
|
+
|
255
|
+
"#{basedir}#{dir}"
|
256
|
+
end
|
257
|
+
|
258
|
+
##
|
259
|
+
# Build the rdoc documentation. Also, try to build the RI documentation.
|
260
|
+
#
|
261
|
+
def build_rdoc(files)
|
262
|
+
return unless $haverdoc
|
263
|
+
begin
|
264
|
+
r = RDoc::RDoc.new
|
265
|
+
r.document(["--main", "README", "--title",
|
266
|
+
"Puppet -- Site Configuration Management", "--line-numbers"] + files)
|
267
|
+
rescue RDoc::RDocError => e
|
268
|
+
$stderr.puts e.message
|
269
|
+
rescue Exception => e
|
270
|
+
$stderr.puts "Couldn't build RDoc documentation\n#{e.message}"
|
271
|
+
end
|
272
|
+
end
|
273
|
+
|
274
|
+
def build_ri(files)
|
275
|
+
return unless $haverdoc
|
276
|
+
begin
|
277
|
+
ri = RDoc::RDoc.new
|
278
|
+
#ri.document(["--ri-site", "--merge"] + files)
|
279
|
+
ri.document(["--ri-site"] + files)
|
280
|
+
rescue RDoc::RDocError => e
|
281
|
+
$stderr.puts e.message
|
282
|
+
rescue Exception => e
|
283
|
+
$stderr.puts "Couldn't build Ri documentation\n#{e.message}"
|
284
|
+
$stderr.puts "Continuing with install..."
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
def build_man(bins)
|
289
|
+
return unless $haveman
|
290
|
+
begin
|
291
|
+
# Locate rst2man
|
292
|
+
rst2man = %x{which rst2man.py}
|
293
|
+
rst2man.chomp!
|
294
|
+
bins.each do |bin|
|
295
|
+
b = bin.gsub( "bin/", "")
|
296
|
+
%x{#{bin} --help > ./#{b}.rst}
|
297
|
+
%x{#{rst2man} ./#{b}.rst ./man/man8/#{b}.8}
|
298
|
+
File.unlink("./#{b}.rst")
|
299
|
+
end
|
300
|
+
rescue SystemCallError
|
301
|
+
$stderr.puts "Couldn't build man pages: " + $!
|
302
|
+
$stderr.puts "Continuing with install..."
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
##
|
307
|
+
# Install file(s) from ./bin to RbConfig::CONFIG['bindir']. Patch it on the way
|
308
|
+
# to insert a #! line; on a Unix install, the command is named as expected
|
309
|
+
# (e.g., bin/rdoc becomes rdoc); the shebang line handles running it. Under
|
310
|
+
# windows, we add an '.rb' extension and let file associations do their stuff.
|
311
|
+
def install_binfile(from, op_file, target)
|
312
|
+
tmp_file = Tempfile.new('facter-binfile')
|
313
|
+
|
314
|
+
if not InstallOptions.ruby.nil?
|
315
|
+
ruby = InstallOptions.ruby
|
316
|
+
else
|
317
|
+
ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
|
318
|
+
end
|
319
|
+
|
320
|
+
File.open(from) do |ip|
|
321
|
+
File.open(tmp_file.path, "w") do |op|
|
322
|
+
op.puts "#!#{ruby}"
|
323
|
+
contents = ip.readlines
|
324
|
+
contents.shift if contents[0] =~ /^#!/
|
325
|
+
op.write contents.join
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
if is_windows?
|
330
|
+
installed_wrapper = false
|
331
|
+
|
332
|
+
if File.exists?("#{from}.bat")
|
333
|
+
FileUtils.install("#{from}.bat", File.join(target, "#{op_file}.bat"), :mode => 0755, :preserve => true, :verbose => true)
|
334
|
+
installed_wrapper = true
|
335
|
+
end
|
336
|
+
|
337
|
+
if File.exists?("#{from}.cmd")
|
338
|
+
FileUtils.install("#{from}.cmd", File.join(target, "#{op_file}.cmd"), :mode => 0755, :preserve => true, :verbose => true)
|
339
|
+
installed_wrapper = true
|
340
|
+
end
|
341
|
+
|
342
|
+
if not installed_wrapper
|
343
|
+
tmp_file2 = Tempfile.new('facter-wrapper')
|
344
|
+
cwv = <<-EOS
|
345
|
+
@echo off
|
346
|
+
setlocal
|
347
|
+
set RUBY_BIN=%~dp0
|
348
|
+
set RUBY_BIN=%RUBY_BIN:\\=/%
|
349
|
+
"%RUBY_BIN%ruby.exe" -x "%RUBY_BIN%facter" %*
|
350
|
+
EOS
|
351
|
+
File.open(tmp_file2.path, "w") { |cw| cw.puts cwv }
|
352
|
+
FileUtils.install(tmp_file2.path, File.join(target, "#{op_file}.bat"), :mode => 0755, :preserve => true, :verbose => true)
|
353
|
+
|
354
|
+
tmp_file2.unlink
|
355
|
+
installed_wrapper = true
|
356
|
+
end
|
357
|
+
end
|
358
|
+
FileUtils.install(tmp_file.path, File.join(target, op_file), :mode => 0755, :preserve => true, :verbose => true)
|
359
|
+
tmp_file.unlink
|
360
|
+
end
|
361
|
+
|
362
|
+
# Change directory into the facter root so we don't get the wrong files for install.
|
363
|
+
FileUtils.cd File.dirname(__FILE__) do
|
364
|
+
# Set these values to what you want installed.
|
365
|
+
bins = glob(%w{bin/*})
|
366
|
+
rdoc = glob(%w{bin/* lib/**/*.rb README* }).reject { |e| e=~ /\.(bat|cmd)$/ }
|
367
|
+
ri = glob(%w(bin/*.rb lib/**/*.rb)).reject { |e| e=~ /\.(bat|cmd)$/ }
|
368
|
+
man = glob(%w{man/man8/*})
|
369
|
+
libs = glob(%w{lib/**/*.rb lib/**/*.py lib/**/LICENSE})
|
370
|
+
|
371
|
+
check_prereqs
|
372
|
+
prepare_installation
|
373
|
+
|
374
|
+
#build_rdoc(rdoc) if InstallOptions.rdoc
|
375
|
+
#build_ri(ri) if InstallOptions.ri
|
376
|
+
#build_man(bins) if InstallOptions.man
|
377
|
+
do_bins(bins, InstallOptions.bin_dir)
|
378
|
+
do_libs(libs)
|
379
|
+
do_man(man)
|
380
|
+
end
|
data/lib/facter.rb
ADDED
@@ -0,0 +1,262 @@
|
|
1
|
+
# Facter - Host Fact Detection and Reporting
|
2
|
+
#
|
3
|
+
# Copyright 2011 Puppet Labs Inc
|
4
|
+
#
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
6
|
+
# you may not use this file except in compliance with the License.
|
7
|
+
# You may obtain a copy of the License at
|
8
|
+
#
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
10
|
+
#
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
14
|
+
# See the License for the specific language governing permissions and
|
15
|
+
# limitations under the License.
|
16
|
+
|
17
|
+
require 'facter/version'
|
18
|
+
|
19
|
+
# Functions as a hash of 'facts' about your system system, such as MAC
|
20
|
+
# address, IP address, architecture, etc.
|
21
|
+
#
|
22
|
+
# @example Retrieve a fact
|
23
|
+
# puts Facter['operatingsystem'].value
|
24
|
+
#
|
25
|
+
# @example Retrieve all facts
|
26
|
+
# Facter.to_hash
|
27
|
+
# => { "kernel"=>"Linux", "uptime_days"=>0, "ipaddress"=>"10.0.0.1" }
|
28
|
+
#
|
29
|
+
# @api public
|
30
|
+
module Facter
|
31
|
+
# Most core functionality of facter is implemented in `Facter::Util`.
|
32
|
+
# @api public
|
33
|
+
module Util; end
|
34
|
+
|
35
|
+
require 'facter/util/fact'
|
36
|
+
require 'facter/util/collection'
|
37
|
+
require 'facter/util/monkey_patches'
|
38
|
+
|
39
|
+
include Comparable
|
40
|
+
include Enumerable
|
41
|
+
|
42
|
+
require 'facter/core/logging'
|
43
|
+
extend Facter::Core::Logging
|
44
|
+
|
45
|
+
# module methods
|
46
|
+
|
47
|
+
# Accessor for the collection object which holds all the facts
|
48
|
+
# @return [Facter::Util::Collection] the collection of facts
|
49
|
+
#
|
50
|
+
# @api private
|
51
|
+
def self.collection
|
52
|
+
unless defined?(@collection) and @collection
|
53
|
+
@collection = Facter::Util::Collection.new(
|
54
|
+
Facter::Util::Loader.new,
|
55
|
+
Facter::Util::Config.ext_fact_loader)
|
56
|
+
end
|
57
|
+
@collection
|
58
|
+
end
|
59
|
+
|
60
|
+
# Returns whether the JSON "feature" is available.
|
61
|
+
#
|
62
|
+
# @api private
|
63
|
+
def self.json?
|
64
|
+
begin
|
65
|
+
require 'json'
|
66
|
+
true
|
67
|
+
rescue LoadError
|
68
|
+
false
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns a fact object by name. If you use this, you still have to
|
73
|
+
# call {Facter::Util::Fact#value `value`} on it to retrieve the actual
|
74
|
+
# value.
|
75
|
+
#
|
76
|
+
# @param name [String] the name of the fact
|
77
|
+
#
|
78
|
+
# @return [Facter::Util::Fact, nil] The fact object, or nil if no fact
|
79
|
+
# is found.
|
80
|
+
#
|
81
|
+
# @api public
|
82
|
+
def self.[](name)
|
83
|
+
collection.fact(name)
|
84
|
+
end
|
85
|
+
|
86
|
+
# (see [])
|
87
|
+
def self.fact(name)
|
88
|
+
collection.fact(name)
|
89
|
+
end
|
90
|
+
|
91
|
+
# Flushes cached values for all facts. This does not cause code to be
|
92
|
+
# reloaded; it only clears the cached results.
|
93
|
+
#
|
94
|
+
# @return [void]
|
95
|
+
#
|
96
|
+
# @api public
|
97
|
+
def self.flush
|
98
|
+
collection.flush
|
99
|
+
end
|
100
|
+
|
101
|
+
# Lists all fact names
|
102
|
+
#
|
103
|
+
# @return [Array<String>] array of fact names
|
104
|
+
#
|
105
|
+
# @api public
|
106
|
+
def self.list
|
107
|
+
collection.list
|
108
|
+
end
|
109
|
+
|
110
|
+
# Gets the value for a fact. Returns `nil` if no such fact exists.
|
111
|
+
#
|
112
|
+
# @param name [String] the fact name
|
113
|
+
# @return [Object, nil] the value of the fact, or nil if no fact is
|
114
|
+
# found
|
115
|
+
#
|
116
|
+
# @api public
|
117
|
+
def self.value(name)
|
118
|
+
collection.value(name)
|
119
|
+
end
|
120
|
+
|
121
|
+
# Gets a hash mapping fact names to their values
|
122
|
+
#
|
123
|
+
# @return [Hash{String => Object}] the hash of fact names and values
|
124
|
+
#
|
125
|
+
# @api public
|
126
|
+
def self.to_hash
|
127
|
+
collection.load_all
|
128
|
+
collection.to_hash
|
129
|
+
end
|
130
|
+
|
131
|
+
# Define a new fact or extend an existing fact.
|
132
|
+
#
|
133
|
+
# @param name [Symbol] The name of the fact to define
|
134
|
+
# @param options [Hash] A hash of options to set on the fact
|
135
|
+
#
|
136
|
+
# @return [Facter::Util::Fact] The fact that was defined
|
137
|
+
#
|
138
|
+
# @api public
|
139
|
+
# @see {Facter::Util::Collection#define_fact}
|
140
|
+
def self.define_fact(name, options = {}, &block)
|
141
|
+
collection.define_fact(name, options, &block)
|
142
|
+
end
|
143
|
+
|
144
|
+
# Adds a {Facter::Util::Resolution resolution} mechanism for a named
|
145
|
+
# fact. This does not distinguish between adding a new fact and adding
|
146
|
+
# a new way to resolve a fact.
|
147
|
+
#
|
148
|
+
# @overload add(name, options = {}, { || ... })
|
149
|
+
# @param name [String] the fact name
|
150
|
+
# @param options [Hash] optional parameters for the fact - attributes
|
151
|
+
# of {Facter::Util::Fact} and {Facter::Util::Resolution} can be
|
152
|
+
# supplied here
|
153
|
+
# @option options [Integer] :timeout set the
|
154
|
+
# {Facter::Util::Resolution#timeout timeout} for this resolution
|
155
|
+
# @param block [Proc] a block defining a fact resolution
|
156
|
+
#
|
157
|
+
# @return [Facter::Util::Fact] the fact object, which includes any previously
|
158
|
+
# defined resolutions
|
159
|
+
#
|
160
|
+
# @api public
|
161
|
+
def self.add(name, options = {}, &block)
|
162
|
+
collection.add(name, options, &block)
|
163
|
+
end
|
164
|
+
|
165
|
+
# Iterates over fact names and values
|
166
|
+
#
|
167
|
+
# @yieldparam [String] name the fact name
|
168
|
+
# @yieldparam [String] value the current value of the fact
|
169
|
+
#
|
170
|
+
# @return [void]
|
171
|
+
#
|
172
|
+
# @api public
|
173
|
+
def self.each
|
174
|
+
# Make sure all facts are loaded.
|
175
|
+
collection.load_all
|
176
|
+
|
177
|
+
collection.each do |*args|
|
178
|
+
yield(*args)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
# Clears all cached values and removes all facts from memory.
|
183
|
+
#
|
184
|
+
# @return [void]
|
185
|
+
#
|
186
|
+
# @api public
|
187
|
+
def self.clear
|
188
|
+
Facter.flush
|
189
|
+
Facter.reset
|
190
|
+
end
|
191
|
+
|
192
|
+
# Removes all facts from memory. Use this when the fact code has
|
193
|
+
# changed on disk and needs to be reloaded.
|
194
|
+
#
|
195
|
+
# @return [void]
|
196
|
+
#
|
197
|
+
# @api public
|
198
|
+
def self.reset
|
199
|
+
@collection = nil
|
200
|
+
reset_search_path!
|
201
|
+
end
|
202
|
+
|
203
|
+
# Loads all facts.
|
204
|
+
#
|
205
|
+
# @return [void]
|
206
|
+
#
|
207
|
+
# @api public
|
208
|
+
def self.loadfacts
|
209
|
+
collection.load_all
|
210
|
+
end
|
211
|
+
|
212
|
+
# Register directories to be searched for facts. The registered directories
|
213
|
+
# must be absolute paths or they will be ignored.
|
214
|
+
#
|
215
|
+
# @param dirs [String] directories to search
|
216
|
+
#
|
217
|
+
# @return [void]
|
218
|
+
#
|
219
|
+
# @api public
|
220
|
+
def self.search(*dirs)
|
221
|
+
@search_path += dirs
|
222
|
+
end
|
223
|
+
|
224
|
+
# Returns the registered search directories.
|
225
|
+
#
|
226
|
+
# @return [Array<String>] An array of the directories searched
|
227
|
+
#
|
228
|
+
# @api public
|
229
|
+
def self.search_path
|
230
|
+
@search_path.dup
|
231
|
+
end
|
232
|
+
|
233
|
+
# Reset the Facter search directories.
|
234
|
+
#
|
235
|
+
# @api private
|
236
|
+
# @return [void]
|
237
|
+
def self.reset_search_path!
|
238
|
+
@search_path = []
|
239
|
+
end
|
240
|
+
|
241
|
+
reset_search_path!
|
242
|
+
|
243
|
+
# Registers directories to be searched for external facts.
|
244
|
+
#
|
245
|
+
# @param dirs [Array<String>] directories to search
|
246
|
+
#
|
247
|
+
# @return [void]
|
248
|
+
#
|
249
|
+
# @api public
|
250
|
+
def self.search_external(dirs)
|
251
|
+
Facter::Util::Config.external_facts_dirs += dirs
|
252
|
+
end
|
253
|
+
|
254
|
+
# Returns the registered search directories.
|
255
|
+
#
|
256
|
+
# @return [Array<String>] An array of the directories searched
|
257
|
+
#
|
258
|
+
# @api public
|
259
|
+
def self.search_external_path
|
260
|
+
Facter::Util::Config.external_facts_dirs.dup
|
261
|
+
end
|
262
|
+
end
|