facter 2.0.1.rc1-x86-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 +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 +758 -0
@@ -0,0 +1,146 @@
|
|
1
|
+
require 'facter'
|
2
|
+
require 'pathname'
|
3
|
+
require 'facter/util/directory_loader'
|
4
|
+
|
5
|
+
# Load facts on demand.
|
6
|
+
class Facter::Util::Loader
|
7
|
+
|
8
|
+
def initialize(environment_vars = ENV)
|
9
|
+
@loaded = []
|
10
|
+
@environment_vars = environment_vars
|
11
|
+
end
|
12
|
+
|
13
|
+
# Load all resolutions for a single fact.
|
14
|
+
#
|
15
|
+
# @api public
|
16
|
+
# @param name [Symbol]
|
17
|
+
def load(fact)
|
18
|
+
# Now load from the search path
|
19
|
+
shortname = fact.to_s.downcase
|
20
|
+
load_env(shortname)
|
21
|
+
|
22
|
+
filename = shortname + ".rb"
|
23
|
+
|
24
|
+
paths = search_path
|
25
|
+
unless paths.nil?
|
26
|
+
paths.each do |dir|
|
27
|
+
# Load individual files
|
28
|
+
file = File.join(dir, filename)
|
29
|
+
|
30
|
+
load_file(file) if File.file?(file)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
# Load all facts from all directories.
|
36
|
+
#
|
37
|
+
# @api public
|
38
|
+
def load_all
|
39
|
+
return if defined?(@loaded_all)
|
40
|
+
|
41
|
+
load_env
|
42
|
+
|
43
|
+
paths = search_path
|
44
|
+
unless paths.nil?
|
45
|
+
paths.each do |dir|
|
46
|
+
# dir is already an absolute path
|
47
|
+
Dir.glob(File.join(dir, '*.rb')).each do |path|
|
48
|
+
# exclude dirs that end with .rb
|
49
|
+
load_file(path) if File.file?(path)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
@loaded_all = true
|
55
|
+
end
|
56
|
+
|
57
|
+
# List directories to search for fact files.
|
58
|
+
#
|
59
|
+
# Search paths are gathered from the following sources:
|
60
|
+
#
|
61
|
+
# 1. $LOAD_PATH entries are expanded to absolute paths
|
62
|
+
# 2. ENV['FACTERLIB'] is split and used verbatim
|
63
|
+
# 3. Entries from Facter.search_path are used verbatim
|
64
|
+
#
|
65
|
+
# A warning will be generated for paths in Facter.search_path that are not
|
66
|
+
# absolute directories.
|
67
|
+
#
|
68
|
+
# @api public
|
69
|
+
# @return [Array<String>]
|
70
|
+
def search_path
|
71
|
+
search_paths = []
|
72
|
+
search_paths += $LOAD_PATH.map { |path| File.expand_path('facter', path) }
|
73
|
+
|
74
|
+
if @environment_vars.include?("FACTERLIB")
|
75
|
+
search_paths += @environment_vars["FACTERLIB"].split(File::PATH_SEPARATOR)
|
76
|
+
end
|
77
|
+
|
78
|
+
search_paths.delete_if { |path| ! valid_search_path?(path) }
|
79
|
+
|
80
|
+
Facter.search_path.each do |path|
|
81
|
+
if valid_search_path?(path)
|
82
|
+
search_paths << path
|
83
|
+
else
|
84
|
+
Facter.warn "Excluding #{path} from search path. Fact file paths must be an absolute directory"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
search_paths.delete_if { |path| ! File.directory?(path) }
|
89
|
+
|
90
|
+
search_paths.uniq
|
91
|
+
end
|
92
|
+
|
93
|
+
private
|
94
|
+
|
95
|
+
# Validate that the given path is valid, ie it is an absolute path.
|
96
|
+
#
|
97
|
+
# @api private
|
98
|
+
# @param path [String]
|
99
|
+
# @return [Boolean]
|
100
|
+
def valid_search_path?(path)
|
101
|
+
Pathname.new(path).absolute?
|
102
|
+
end
|
103
|
+
|
104
|
+
# Load a file and record is paths to prevent duplicate loads.
|
105
|
+
#
|
106
|
+
# @api private
|
107
|
+
# @params file [String] The *absolute path* to the file to load
|
108
|
+
def load_file(file)
|
109
|
+
return if @loaded.include? file
|
110
|
+
|
111
|
+
# We have to specify Kernel.load, because we have a load method.
|
112
|
+
begin
|
113
|
+
# Store the file path so we don't try to reload it
|
114
|
+
@loaded << file
|
115
|
+
Kernel.load(file)
|
116
|
+
rescue ScriptError => detail
|
117
|
+
# Don't store the path if the file can't be loaded
|
118
|
+
# in case it's loadable later on.
|
119
|
+
@loaded.delete(file)
|
120
|
+
Facter.log_exception(detail, "Error loading fact #{file}: #{detail.message}")
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
# Load facts from the environment. If no name is provided,
|
125
|
+
# all will be loaded.
|
126
|
+
def load_env(fact = nil)
|
127
|
+
# Load from the environment, if possible
|
128
|
+
@environment_vars.each do |name, value|
|
129
|
+
# Skip anything that doesn't match our regex.
|
130
|
+
next unless name =~ /^facter_?(\w+)$/i
|
131
|
+
env_name = $1
|
132
|
+
|
133
|
+
# If a fact name was specified, skip anything that doesn't
|
134
|
+
# match it.
|
135
|
+
next if fact and env_name != fact
|
136
|
+
|
137
|
+
Facter.add($1) do
|
138
|
+
has_weight 1_000_000
|
139
|
+
setcode { value }
|
140
|
+
end
|
141
|
+
|
142
|
+
# Short-cut, if we are only looking for one value.
|
143
|
+
break if fact
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# A module to gather macaddress facts
|
2
|
+
#
|
3
|
+
module Facter::Util::Macaddress
|
4
|
+
|
5
|
+
def self.standardize(macaddress)
|
6
|
+
return nil unless macaddress
|
7
|
+
macaddress.split(":").map{|x| "0#{x}"[-2..-1]}.join(":")
|
8
|
+
end
|
9
|
+
|
10
|
+
module Darwin
|
11
|
+
def self.macaddress
|
12
|
+
iface = default_interface
|
13
|
+
Facter.warn "Could not find a default route. Using first non-loopback interface" if iface.empty?
|
14
|
+
|
15
|
+
macaddress = `#{ifconfig_command} #{iface} | /usr/bin/awk '/ether/{print $2;exit}'`.chomp
|
16
|
+
macaddress.empty? ? nil : macaddress
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.default_interface
|
20
|
+
`#{netstat_command} | /usr/bin/awk '/^default/{print $6;exit}'`.chomp
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
|
25
|
+
def self.netstat_command
|
26
|
+
'/usr/sbin/netstat -rn'
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.ifconfig_command
|
30
|
+
'/sbin/ifconfig'
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
module Windows
|
35
|
+
def macaddress
|
36
|
+
require 'facter/util/ip/windows'
|
37
|
+
|
38
|
+
adapter = Facter::Util::IP::Windows.get_preferred_ipv4_adapters.first
|
39
|
+
adapter ? adapter.MACAddress : nil
|
40
|
+
end
|
41
|
+
module_function :macaddress
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
## macosx.rb
|
2
|
+
## Support methods for Apple OSX facts
|
3
|
+
##
|
4
|
+
## Copyright (C) 2007 Jeff McCune
|
5
|
+
## Author: Jeff McCune <jeff.mccune@northstarlabs.net>
|
6
|
+
##
|
7
|
+
|
8
|
+
module Facter::Util::Macosx
|
9
|
+
require 'cfpropertylist'
|
10
|
+
require 'facter/util/resolution'
|
11
|
+
|
12
|
+
Plist_Xml_Doctype = '<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">'
|
13
|
+
|
14
|
+
# JJM I'd really like to dynamically generate these methods
|
15
|
+
# by looking at the _name key of the _items dict for each _dataType
|
16
|
+
|
17
|
+
def self.profiler_xml(data_field)
|
18
|
+
Facter::Core::Execution.exec("/usr/sbin/system_profiler -xml #{data_field}")
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.intern_xml(xml)
|
22
|
+
return nil unless xml
|
23
|
+
bad_xml_doctype = /^.*<!DOCTYPE plist PUBLIC -\/\/Apple Computer.*$/
|
24
|
+
if xml =~ bad_xml_doctype
|
25
|
+
xml.gsub!( bad_xml_doctype, Plist_Xml_Doctype )
|
26
|
+
Facter.debug("Had to fix plist with incorrect DOCTYPE declaration")
|
27
|
+
end
|
28
|
+
plist = CFPropertyList::List.new
|
29
|
+
begin
|
30
|
+
plist.load_str(xml)
|
31
|
+
rescue CFFormatError => e
|
32
|
+
raise RuntimeError, "A plist file could not be properly read by CFPropertyList: #{e.message}", e.backtrace
|
33
|
+
end
|
34
|
+
CFPropertyList.native_types(plist.value)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Return an xml result, modified as we need it.
|
38
|
+
def self.profiler_data(data_field)
|
39
|
+
begin
|
40
|
+
return nil unless parsed_xml = intern_xml(profiler_xml(data_field))
|
41
|
+
return nil unless data = parsed_xml[0]['_items'][0]
|
42
|
+
data.delete '_name'
|
43
|
+
data
|
44
|
+
rescue
|
45
|
+
return nil
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
def self.hardware_overview
|
50
|
+
profiler_data("SPHardwareDataType")
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.os_overview
|
54
|
+
profiler_data("SPSoftwareDataType")
|
55
|
+
end
|
56
|
+
|
57
|
+
def self.sw_vers
|
58
|
+
ver = Hash.new
|
59
|
+
[ "productName", "productVersion", "buildVersion" ].each do |option|
|
60
|
+
ver["macosx_#{option}"] = Facter::Core::Execution.exec("/usr/bin/sw_vers -#{option}").strip
|
61
|
+
end
|
62
|
+
productversion = ver["macosx_productVersion"]
|
63
|
+
if not productversion.nil?
|
64
|
+
versions = productversion.scan(/(\d+)\.(\d+)\.*(\d*)/)[0]
|
65
|
+
ver["macosx_productversion_major"] = "#{versions[0]}.#{versions[1]}"
|
66
|
+
if versions[2].empty? # 10.x should be treated as 10.x.0
|
67
|
+
versions[2] = "0"
|
68
|
+
end
|
69
|
+
ver["macosx_productversion_minor"] = versions[2]
|
70
|
+
end
|
71
|
+
ver
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,104 @@
|
|
1
|
+
# mamufacturer.rb
|
2
|
+
# Support methods for manufacturer specific facts
|
3
|
+
|
4
|
+
module Facter::Manufacturer
|
5
|
+
|
6
|
+
def self.get_dmi_table()
|
7
|
+
case Facter.value(:kernel)
|
8
|
+
when 'Linux', 'GNU/kFreeBSD'
|
9
|
+
return nil unless FileTest.exists?("/usr/sbin/dmidecode")
|
10
|
+
|
11
|
+
output=%x{/usr/sbin/dmidecode 2>/dev/null}
|
12
|
+
when 'FreeBSD'
|
13
|
+
return nil unless FileTest.exists?("/usr/local/sbin/dmidecode")
|
14
|
+
|
15
|
+
output=%x{/usr/local/sbin/dmidecode 2>/dev/null}
|
16
|
+
when 'NetBSD', 'DragonFly'
|
17
|
+
return nil unless FileTest.exists?("/usr/pkg/sbin/dmidecode")
|
18
|
+
|
19
|
+
output=%x{/usr/pkg/sbin/dmidecode 2>/dev/null}
|
20
|
+
when 'SunOS'
|
21
|
+
return nil unless FileTest.exists?("/usr/sbin/smbios")
|
22
|
+
|
23
|
+
output=%x{/usr/sbin/smbios 2>/dev/null}
|
24
|
+
else
|
25
|
+
output=nil
|
26
|
+
end
|
27
|
+
return output
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.dmi_find_system_info(name)
|
31
|
+
splitstr= Facter.value(:kernel) == 'SunOS' ? "ID SIZE TYPE" : /^Handle/
|
32
|
+
output = self.get_dmi_table()
|
33
|
+
return if output.nil?
|
34
|
+
name.each_pair do |key,v|
|
35
|
+
v.each do |v2|
|
36
|
+
v2.each_pair do |value,facterkey|
|
37
|
+
output.split(splitstr).each do |line|
|
38
|
+
if line =~ /#{key}/ and line =~ /\n\s+#{value} (.+)\n/
|
39
|
+
result = $1.strip
|
40
|
+
Facter.add(facterkey) do
|
41
|
+
confine :kernel => [ :linux, :freebsd, :netbsd, :sunos, :"gnu/kfreebsd", :dragonfly ]
|
42
|
+
setcode do
|
43
|
+
result
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.sysctl_find_system_info(name)
|
54
|
+
name.each do |sysctlkey,facterkey|
|
55
|
+
Facter.add(facterkey) do
|
56
|
+
confine :kernel => [:openbsd, :darwin]
|
57
|
+
setcode do
|
58
|
+
Facter::Core::Execution.exec("sysctl -n #{sysctlkey} 2>/dev/null")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def self.prtdiag_sparc_find_system_info()
|
65
|
+
# Parses prtdiag for a SPARC architecture string, won't work with Solaris x86
|
66
|
+
output = Facter::Core::Execution.exec('/usr/sbin/prtdiag 2>/dev/null')
|
67
|
+
|
68
|
+
# System Configuration: Sun Microsystems sun4u Sun SPARC Enterprise M3000 Server
|
69
|
+
if output and output =~ /^System Configuration:\s+(.+?)\s+(sun\d+\S+)\s+(.+)/
|
70
|
+
Facter.add('manufacturer') do
|
71
|
+
setcode do
|
72
|
+
$1
|
73
|
+
end
|
74
|
+
end
|
75
|
+
Facter.add('productname') do
|
76
|
+
setcode do
|
77
|
+
$3
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
Facter.add('serialnumber') do
|
83
|
+
setcode do
|
84
|
+
Facter::Core::Execution.exec("/usr/sbin/sneep")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def self.win32_find_system_info(name)
|
90
|
+
require 'facter/util/wmi'
|
91
|
+
value = ""
|
92
|
+
wmi = Facter::Util::WMI.connect()
|
93
|
+
name.each do |facterkey, win32key|
|
94
|
+
query = wmi.ExecQuery("select * from Win32_#{win32key.last}")
|
95
|
+
Facter.add(facterkey) do
|
96
|
+
confine :kernel => :windows
|
97
|
+
setcode do
|
98
|
+
query.each { |x| value = x.__send__( (win32key.first).to_sym) }
|
99
|
+
value
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
@@ -0,0 +1,228 @@
|
|
1
|
+
## memory.rb
|
2
|
+
## Support module for memory related facts
|
3
|
+
##
|
4
|
+
|
5
|
+
module Facter::Memory
|
6
|
+
def self.meminfo_number(tag)
|
7
|
+
memsize = ""
|
8
|
+
size = [0]
|
9
|
+
File.readlines("/proc/meminfo").each do |l|
|
10
|
+
size = $1.to_f if l =~ /^#{tag}:\s+(\d+)\s+\S+/
|
11
|
+
if tag == "MemFree" &&
|
12
|
+
l =~ /^(?:Buffers|Cached):\s+(\d+)\s+\S+/
|
13
|
+
size += $1.to_f
|
14
|
+
end
|
15
|
+
end
|
16
|
+
size / 1024.0
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.scale_number(size, multiplier)
|
20
|
+
suffixes = ['', 'kB', 'MB', 'GB', 'TB']
|
21
|
+
|
22
|
+
s = suffixes.shift
|
23
|
+
while s != multiplier
|
24
|
+
s = suffixes.shift
|
25
|
+
end
|
26
|
+
|
27
|
+
while size > 1024.0
|
28
|
+
size /= 1024.0
|
29
|
+
s = suffixes.shift
|
30
|
+
end
|
31
|
+
|
32
|
+
"%.2f %s" % [size, s]
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.vmstat_find_free_memory(args = [])
|
36
|
+
cmd = 'vmstat'
|
37
|
+
cmd += (' ' + args.join(' ')) unless args.empty?
|
38
|
+
row = Facter::Core::Execution.exec(cmd).split("\n")[-1]
|
39
|
+
if row =~ /^\s*\d+\s*\d+\s*\d+\s*\d+\s*(\d+)/
|
40
|
+
memfree = $1
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
# Darwin had to be different. It's generally opaque with how much RAM it is
|
45
|
+
# using, and this figure could be improved upon too I fear.
|
46
|
+
# Parses the output of "vm_stat", takes the pages free & pages speculative
|
47
|
+
# and multiples that by the page size (also given in output). Ties in with
|
48
|
+
# what activity monitor outputs for free memory.
|
49
|
+
def self.vmstat_darwin_find_free_memory()
|
50
|
+
|
51
|
+
memfree = 0
|
52
|
+
pagesize = 0
|
53
|
+
memspecfree = 0
|
54
|
+
|
55
|
+
vmstats = Facter::Core::Execution.exec('vm_stat')
|
56
|
+
vmstats.each_line do |vmline|
|
57
|
+
case
|
58
|
+
when vmline =~ /page\ssize\sof\s(\d+)\sbytes/
|
59
|
+
pagesize = $1.to_i
|
60
|
+
when vmline =~ /^Pages\sfree:\s+(\d+)\./
|
61
|
+
memfree = $1.to_i
|
62
|
+
when vmline =~ /^Pages\sspeculative:\s+(\d+)\./
|
63
|
+
memspecfree = $1.to_i
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
freemem = ( memfree + memspecfree ) * pagesize
|
68
|
+
end
|
69
|
+
|
70
|
+
# on AIX use svmon to get the free memory:
|
71
|
+
# it's the third value on the line starting with memory
|
72
|
+
# svmon can be run by non root users
|
73
|
+
def self.svmon_aix_find_free_memory()
|
74
|
+
Facter::Core::Execution.exec("/usr/bin/svmon -O unit=KB") =~ /^memory\s+\d+\s+\d+\s+(\d+)\s+/
|
75
|
+
$1
|
76
|
+
end
|
77
|
+
|
78
|
+
def self.mem_free(kernel = Facter.value(:kernel))
|
79
|
+
output = mem_free_info(kernel)
|
80
|
+
scale_mem_free_value output, kernel
|
81
|
+
end
|
82
|
+
|
83
|
+
def self.mem_free_info(kernel = Facter.value(:kernel))
|
84
|
+
case kernel
|
85
|
+
when /OpenBSD/i, /SunOS/i, /Dragonfly/i
|
86
|
+
vmstat_find_free_memory()
|
87
|
+
when /FreeBSD/i
|
88
|
+
vmstat_find_free_memory(["-H"])
|
89
|
+
when /Darwin/i
|
90
|
+
vmstat_darwin_find_free_memory()
|
91
|
+
when /AIX/i
|
92
|
+
svmon_aix_find_free_memory()
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def self.scale_mem_free_value (value, kernel)
|
97
|
+
case kernel
|
98
|
+
when /OpenBSD/i, /FreeBSD/i, /SunOS/i, /Dragonfly/i, /AIX/i
|
99
|
+
value.to_f / 1024.0
|
100
|
+
when /Darwin/i
|
101
|
+
value.to_f / 1024.0 / 1024.0
|
102
|
+
else
|
103
|
+
value.to_f
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
def self.mem_size(kernel = Facter.value(:kernel))
|
108
|
+
output = mem_size_info(kernel)
|
109
|
+
scale_mem_size_value output, kernel
|
110
|
+
end
|
111
|
+
|
112
|
+
def self.mem_size_info(kernel = Facter.value(:kernel))
|
113
|
+
case kernel
|
114
|
+
when /OpenBSD/i
|
115
|
+
Facter::Core::Execution.exec("sysctl hw.physmem | cut -d'=' -f2")
|
116
|
+
when /FreeBSD/i
|
117
|
+
Facter::Core::Execution.exec("sysctl -n hw.physmem")
|
118
|
+
when /Darwin/i
|
119
|
+
Facter::Core::Execution.exec("sysctl -n hw.memsize")
|
120
|
+
when /Dragonfly/i
|
121
|
+
Facter::Core::Execution.exec("sysctl -n hw.physmem")
|
122
|
+
when /AIX/i
|
123
|
+
if Facter::Core::Execution.exec("/usr/bin/svmon -O unit=KB") =~ /^memory\s+(\d+)\s+/
|
124
|
+
$1
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.scale_mem_size_value(value, kernel)
|
130
|
+
case kernel
|
131
|
+
when /OpenBSD/i, /FreeBSD/i, /Darwin/i, /Dragonfly/i
|
132
|
+
value.to_f / 1024.0 / 1024.0
|
133
|
+
when /AIX/i
|
134
|
+
value.to_f / 1024.0
|
135
|
+
else
|
136
|
+
value.to_f
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def self.swap_size(kernel = Facter.value(:kernel))
|
141
|
+
output = swap_info(kernel)
|
142
|
+
parse_swap output, kernel, :size if output
|
143
|
+
end
|
144
|
+
|
145
|
+
def self.swap_free(kernel = Facter.value(:kernel))
|
146
|
+
output = swap_info(kernel)
|
147
|
+
parse_swap output, kernel, :free if output
|
148
|
+
end
|
149
|
+
|
150
|
+
def self.swap_info(kernel = Facter.value(:kernel))
|
151
|
+
case kernel
|
152
|
+
when /AIX/i
|
153
|
+
(Facter.value(:id) == "root") ? Facter::Core::Execution.exec('swap -l 2>/dev/null') : nil
|
154
|
+
when /OpenBSD/i
|
155
|
+
Facter::Core::Execution.exec('swapctl -s')
|
156
|
+
when /FreeBSD/i
|
157
|
+
Facter::Core::Execution.exec('swapinfo -k')
|
158
|
+
when /Darwin/i
|
159
|
+
Facter::Core::Execution.exec('sysctl vm.swapusage')
|
160
|
+
when /SunOS/i
|
161
|
+
Facter::Core::Execution.exec('/usr/sbin/swap -l 2>/dev/null')
|
162
|
+
end
|
163
|
+
end
|
164
|
+
|
165
|
+
def self.parse_swap (output, kernel = Facter.value(:kernel), size_or_free = :size)
|
166
|
+
value_in_mb = 0.0
|
167
|
+
value = 0
|
168
|
+
is_size = size_or_free == :size
|
169
|
+
unless output.nil?
|
170
|
+
output.each_line do |line|
|
171
|
+
value += parse_swap_line(line, kernel, is_size)
|
172
|
+
end
|
173
|
+
end
|
174
|
+
value_in_mb = scale_swap_value(value, kernel)
|
175
|
+
end
|
176
|
+
|
177
|
+
# There is a lot of duplication here because of concern over being able to add
|
178
|
+
# new platforms in a reasonable manner. For all of these platforms the first
|
179
|
+
# regex corresponds to the swap size value and the second corresponds to the swap
|
180
|
+
# free value, but this may not always be the case. In Ruby 1.9.3 it is possible
|
181
|
+
# to give these names, but sadly 1.8.7 does not support this.
|
182
|
+
|
183
|
+
def self.parse_swap_line(line, kernel, is_size)
|
184
|
+
case kernel
|
185
|
+
when /AIX/i
|
186
|
+
if line =~ /^\/\S+\s.*\s+(\S+)MB\s+(\S+)MB/
|
187
|
+
(is_size) ? $1.to_i : $2.to_i
|
188
|
+
else
|
189
|
+
0
|
190
|
+
end
|
191
|
+
when /OpenBSD/i
|
192
|
+
if line =~ /^total: (\d+)k bytes allocated = \d+k used, (\d+)k available$/
|
193
|
+
(is_size) ? $1.to_i : $2.to_i
|
194
|
+
else
|
195
|
+
0
|
196
|
+
end
|
197
|
+
when /FreeBSD/i
|
198
|
+
if line =~ /\S+\s+(\d+)\s+\d+\s+(\d+)\s+\d+%$/
|
199
|
+
(is_size) ? $1.to_i : $2.to_i
|
200
|
+
else
|
201
|
+
0
|
202
|
+
end
|
203
|
+
when /Darwin/i
|
204
|
+
if line =~ /total\s=\s(\S+)M\s+used\s=\s\S+M\s+free\s=\s(\S+)M\s/
|
205
|
+
(is_size) ? $1.to_i : $2.to_i
|
206
|
+
else
|
207
|
+
0
|
208
|
+
end
|
209
|
+
when /SunOS/i
|
210
|
+
if line =~ /^\/\S+\s.*\s+(\d+)\s+(\d+)$/
|
211
|
+
(is_size) ? $1.to_i : $2.to_i
|
212
|
+
else
|
213
|
+
0
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def self.scale_swap_value(value, kernel)
|
219
|
+
case kernel
|
220
|
+
when /OpenBSD/i, /FreeBSD/i
|
221
|
+
value.to_f / 1024.0
|
222
|
+
when /SunOS/i
|
223
|
+
value.to_f / 2 / 1024.0
|
224
|
+
else
|
225
|
+
value.to_f
|
226
|
+
end
|
227
|
+
end
|
228
|
+
end
|