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
@@ -0,0 +1,226 @@
|
|
1
|
+
#--###########################################################
|
2
|
+
# Copyright 2006, Ben Bleything <ben@bleything.net> and #
|
3
|
+
# Patrick May <patrick@hexane.org> #
|
4
|
+
# #
|
5
|
+
# Distributed under the MIT license. #
|
6
|
+
##############################################################
|
7
|
+
#++
|
8
|
+
# Plist parses Mac OS X xml property list files into ruby data structures.
|
9
|
+
#
|
10
|
+
# === Load a plist file
|
11
|
+
# This is the main point of the library:
|
12
|
+
#
|
13
|
+
# r = Plist::parse_xml( filename_or_xml )
|
14
|
+
module Plist
|
15
|
+
# Note that I don't use these two elements much:
|
16
|
+
#
|
17
|
+
# + Date elements are returned as DateTime objects.
|
18
|
+
# + Data elements are implemented as Tempfiles
|
19
|
+
#
|
20
|
+
# Plist::parse_xml will blow up if it encounters a data element.
|
21
|
+
# If you encounter such an error, or if you have a Date element which
|
22
|
+
# can't be parsed into a Time object, please send your plist file to
|
23
|
+
# plist@hexane.org so that I can implement the proper support.
|
24
|
+
def Plist::parse_xml( filename_or_xml )
|
25
|
+
listener = Listener.new
|
26
|
+
#parser = REXML::Parsers::StreamParser.new(File.new(filename), listener)
|
27
|
+
parser = StreamParser.new(filename_or_xml, listener)
|
28
|
+
parser.parse
|
29
|
+
listener.result
|
30
|
+
end
|
31
|
+
|
32
|
+
class Listener
|
33
|
+
#include REXML::StreamListener
|
34
|
+
|
35
|
+
attr_accessor :result, :open
|
36
|
+
|
37
|
+
def initialize
|
38
|
+
@result = nil
|
39
|
+
@open = Array.new
|
40
|
+
end
|
41
|
+
|
42
|
+
|
43
|
+
def tag_start(name, attributes)
|
44
|
+
@open.push PTag::mappings[name].new
|
45
|
+
end
|
46
|
+
|
47
|
+
def text( contents )
|
48
|
+
@open.last.text = contents if @open.last
|
49
|
+
end
|
50
|
+
|
51
|
+
def tag_end(name)
|
52
|
+
last = @open.pop
|
53
|
+
if @open.empty?
|
54
|
+
@result = last.to_ruby
|
55
|
+
else
|
56
|
+
@open.last.children.push last
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
class StreamParser
|
62
|
+
def initialize( filename_or_xml, listener )
|
63
|
+
@filename_or_xml = filename_or_xml
|
64
|
+
@listener = listener
|
65
|
+
end
|
66
|
+
|
67
|
+
TEXT = /([^<]+)/
|
68
|
+
XMLDECL_PATTERN = /<\?xml\s+(.*?)\?>*/um
|
69
|
+
DOCTYPE_PATTERN = /\s*<!DOCTYPE\s+(.*?)(\[|>)/um
|
70
|
+
COMMENT_START = /\A<!--/u
|
71
|
+
COMMENT_END = /.*?-->/um
|
72
|
+
|
73
|
+
def parse
|
74
|
+
plist_tags = PTag::mappings.keys.join('|')
|
75
|
+
start_tag = /<(#{plist_tags})([^>]*)>/i
|
76
|
+
end_tag = /<\/(#{plist_tags})[^>]*>/i
|
77
|
+
|
78
|
+
require 'strscan'
|
79
|
+
|
80
|
+
contents = (
|
81
|
+
if (File.exists? @filename_or_xml)
|
82
|
+
File.open(@filename_or_xml) {|f| f.read}
|
83
|
+
else
|
84
|
+
@filename_or_xml
|
85
|
+
end
|
86
|
+
)
|
87
|
+
|
88
|
+
@scanner = StringScanner.new( contents )
|
89
|
+
until @scanner.eos?
|
90
|
+
if @scanner.scan(COMMENT_START)
|
91
|
+
@scanner.scan(COMMENT_END)
|
92
|
+
elsif @scanner.scan(XMLDECL_PATTERN)
|
93
|
+
elsif @scanner.scan(DOCTYPE_PATTERN)
|
94
|
+
elsif @scanner.scan(start_tag)
|
95
|
+
@listener.tag_start(@scanner[1], nil)
|
96
|
+
if (@scanner[2] =~ /\/$/)
|
97
|
+
@listener.tag_end(@scanner[1])
|
98
|
+
end
|
99
|
+
elsif @scanner.scan(TEXT)
|
100
|
+
@listener.text(@scanner[1])
|
101
|
+
elsif @scanner.scan(end_tag)
|
102
|
+
@listener.tag_end(@scanner[1])
|
103
|
+
else
|
104
|
+
raise "Unimplemented element"
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
class PTag
|
111
|
+
@@mappings = { }
|
112
|
+
def PTag::mappings
|
113
|
+
@@mappings
|
114
|
+
end
|
115
|
+
|
116
|
+
def PTag::inherited( sub_class )
|
117
|
+
key = sub_class.to_s.downcase
|
118
|
+
key.gsub!(/^plist::/, '' )
|
119
|
+
key.gsub!(/^p/, '') unless key == "plist"
|
120
|
+
|
121
|
+
@@mappings[key] = sub_class
|
122
|
+
end
|
123
|
+
|
124
|
+
attr_accessor :text, :children
|
125
|
+
def initialize
|
126
|
+
@children = Array.new
|
127
|
+
end
|
128
|
+
|
129
|
+
def to_ruby
|
130
|
+
raise "Unimplemented: " + self.class.to_s + "#to_ruby on #{self.inspect}"
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
class PList < PTag
|
135
|
+
def to_ruby
|
136
|
+
children.first.to_ruby if children.first
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
class PDict < PTag
|
141
|
+
def to_ruby
|
142
|
+
dict = Hash.new
|
143
|
+
key = nil
|
144
|
+
|
145
|
+
children.each do |c|
|
146
|
+
if key.nil?
|
147
|
+
key = c.to_ruby
|
148
|
+
else
|
149
|
+
dict[key] = c.to_ruby
|
150
|
+
key = nil
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
dict
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
class PKey < PTag
|
159
|
+
def to_ruby
|
160
|
+
CGI::unescapeHTML(text || '')
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
class PString < PTag
|
165
|
+
def to_ruby
|
166
|
+
CGI::unescapeHTML(text || '')
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
class PArray < PTag
|
171
|
+
def to_ruby
|
172
|
+
children.collect do |c|
|
173
|
+
c.to_ruby
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
class PInteger < PTag
|
179
|
+
def to_ruby
|
180
|
+
text.to_i
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
class PTrue < PTag
|
185
|
+
def to_ruby
|
186
|
+
true
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
class PFalse < PTag
|
191
|
+
def to_ruby
|
192
|
+
false
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
class PReal < PTag
|
197
|
+
def to_ruby
|
198
|
+
text.to_f
|
199
|
+
end
|
200
|
+
end
|
201
|
+
|
202
|
+
require 'date'
|
203
|
+
class PDate < PTag
|
204
|
+
def to_ruby
|
205
|
+
DateTime.parse(text)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
require 'base64'
|
210
|
+
class PData < PTag
|
211
|
+
def to_ruby
|
212
|
+
data = Base64.decode64(text.gsub(/\s+/, ''))
|
213
|
+
|
214
|
+
begin
|
215
|
+
return Marshal.load(data)
|
216
|
+
rescue Exception => e
|
217
|
+
io = StringIO.new
|
218
|
+
io.write data
|
219
|
+
io.rewind
|
220
|
+
return io
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
225
|
+
|
226
|
+
# $Id: parser.rb 1781 2006-10-16 01:01:35Z luke $
|
@@ -0,0 +1,291 @@
|
|
1
|
+
module Facter
|
2
|
+
module Util
|
3
|
+
module Processor
|
4
|
+
##
|
5
|
+
# aix_processor_list is intended to generate a list of values for the
|
6
|
+
# processorX facts. The behavior is as follows from
|
7
|
+
# [#11609](http://projects.puppetlabs.com/issues/11609)
|
8
|
+
#
|
9
|
+
# 1. Take a list of all the processor identifiers for the platform,
|
10
|
+
# represented as system-native identifiers in strings.
|
11
|
+
# 2. Sort the list
|
12
|
+
# 3. Assign an incrementing from 0 integer index to each identifier.
|
13
|
+
# 4. Store the value of the system identifier in the processorX fact where X
|
14
|
+
# is the incrementing index.
|
15
|
+
#
|
16
|
+
# Returns an Array, sorted, containing the values for the facts.
|
17
|
+
def self.aix_processor_list
|
18
|
+
return_value = []
|
19
|
+
aix_proc_id_list = []
|
20
|
+
|
21
|
+
if output = lsdev then
|
22
|
+
output.split("\n").each do |line|
|
23
|
+
if match = line.match(/proc\d+/)
|
24
|
+
aix_proc_id_list << match[0]
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Generalized alphanumeric sort to put "proc12" behind "proc4"
|
30
|
+
padding = 8
|
31
|
+
aix_proc_id_list = aix_proc_id_list.sort do |a,b|
|
32
|
+
a,b = [a,b].map do |s|
|
33
|
+
s.gsub(/\d+/) { |m| "0"*(padding - m.size) + m }
|
34
|
+
end
|
35
|
+
a<=>b
|
36
|
+
end
|
37
|
+
|
38
|
+
aix_proc_id_list.each do |proc_id|
|
39
|
+
if output = lsattr("lsattr -El #{proc_id} -a type")
|
40
|
+
if match = output.match(/type\s+([^\s]+)\s+Processor/i)
|
41
|
+
return_value << match[1]
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
return_value
|
47
|
+
end
|
48
|
+
|
49
|
+
##
|
50
|
+
# lsdev is intended to directly delegate to Facter::Core::Execution.exec in an
|
51
|
+
# effort to make the processorX facts easier to test by stubbing only the
|
52
|
+
# behaviors we need to stub to get the output of the system command.
|
53
|
+
def self.lsdev(command="lsdev -Cc processor")
|
54
|
+
Facter::Core::Execution.exec(command)
|
55
|
+
end
|
56
|
+
|
57
|
+
##
|
58
|
+
# lsattr is intended to directly delegate to Facter::Core::Execution.exec in
|
59
|
+
# an effort to make the processorX facts easier to test. See also the
|
60
|
+
# {lsdev} method.
|
61
|
+
def self.lsattr(command="lsattr -El proc0 -a type")
|
62
|
+
Facter::Core::Execution.exec(command)
|
63
|
+
end
|
64
|
+
|
65
|
+
##
|
66
|
+
# kernel_fact_value is intended to directly delegate to Facter.value(:kernel)
|
67
|
+
# to make it easier to stub the kernel fact without affecting the entire
|
68
|
+
# system.
|
69
|
+
def self.kernel_fact_value
|
70
|
+
Facter.value(:kernel)
|
71
|
+
end
|
72
|
+
|
73
|
+
##
|
74
|
+
# hpux_processor_list is intended to generate a list of values for the
|
75
|
+
# processorX facts.
|
76
|
+
def self.hpux_processor_list
|
77
|
+
return_value = []
|
78
|
+
hpux_proc_id_list = []
|
79
|
+
cpu = ""
|
80
|
+
|
81
|
+
##
|
82
|
+
# first, try parsing machinfo output.
|
83
|
+
if output = machinfo then
|
84
|
+
output.split("\n").each do |line|
|
85
|
+
if line.match(/processor model:\s+\d+\s+(.*)/) then
|
86
|
+
cpu = $1.to_s
|
87
|
+
elsif line.match(/\d+\s+((?:PA-RISC|Intel).*processors.*)/) then
|
88
|
+
cpu = $1.to_s
|
89
|
+
cpu.sub!(/processors/, "processor")
|
90
|
+
elsif line.match(/\s+(Intel.*Processor.*)/) then
|
91
|
+
cpu = $1.to_s
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
##
|
97
|
+
# if that fails, try looking using model command and cross referencing against
|
98
|
+
# sched.models, which could be in three places. This file only catered for
|
99
|
+
# PA-RISC. Unfortunately, the file is not up to date sometimes.
|
100
|
+
if cpu.empty? then
|
101
|
+
m = model
|
102
|
+
m.sub!(/\s+$/, "")
|
103
|
+
m.sub!(/.*\//, "")
|
104
|
+
m.sub!(/.*\s+/, "")
|
105
|
+
|
106
|
+
if sched_models_lines = read_sched_models
|
107
|
+
sched_models_lines.each do |l|
|
108
|
+
if l.match(m) and l.match(/^\S+\s+\d+\.\d+\s+(\S+)/) then
|
109
|
+
cpu = "PA-RISC " + $1.to_s.sub!(/^PA/, "") + " processor"
|
110
|
+
break # we assume first match is the only match.
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
end
|
115
|
+
|
116
|
+
##
|
117
|
+
# if that also fails, report the CPU version based on unistd.h and chip type based on getconf.
|
118
|
+
if cpu.empty? then
|
119
|
+
cpu_version = getconf_cpu_version
|
120
|
+
cpu_chip_type = getconf_cpu_chip_type
|
121
|
+
cpu_string = ""
|
122
|
+
|
123
|
+
if lines = read_unistd_h("/usr/include/sys/unistd.h") then
|
124
|
+
lines.each do |l|
|
125
|
+
if l.match(/define.*0x#{cpu_version.to_i.to_s(16)}.*\/\*\s+(.*)\s+\*\//) then
|
126
|
+
cpu_string = $1.to_s
|
127
|
+
break
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
if cpu_string.empty? then
|
133
|
+
cpu_string = "CPU v" + cpu_version
|
134
|
+
end
|
135
|
+
|
136
|
+
cpu = cpu_string + " CHIP TYPE #" + cpu_chip_type
|
137
|
+
end
|
138
|
+
|
139
|
+
##
|
140
|
+
# now count (logical) CPUs using ioscan. We set processorX for X in 0..processorcount
|
141
|
+
# to cpu as worked out above. HP-UX does not support more than one installed CPU
|
142
|
+
# model.
|
143
|
+
if output = ioscan then
|
144
|
+
output.split("\n").each do |line|
|
145
|
+
if line.match(/processor/) then
|
146
|
+
hpux_proc_id_list << cpu
|
147
|
+
end
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
hpux_proc_id_list
|
152
|
+
end
|
153
|
+
|
154
|
+
##
|
155
|
+
# read_sched_models is intended to be stubbed instead of File.readlines
|
156
|
+
# @return [Array] of strings containing the lines of the file or nil if the
|
157
|
+
# sched.models file could not be located.
|
158
|
+
def self.read_sched_models
|
159
|
+
path = if File.exists?("/usr/lib/sched.models")
|
160
|
+
"/usr/lib/sched.models"
|
161
|
+
elsif File.exists?("/usr/sam/lib/mo/sched.models")
|
162
|
+
"/usr/sam/lib/mo/sched.models"
|
163
|
+
elsif File.exists?("/opt/langtools/lib/sched.models")
|
164
|
+
"/opt/langtools/lib/sched.models"
|
165
|
+
end
|
166
|
+
|
167
|
+
if path
|
168
|
+
File.readlines(path)
|
169
|
+
end
|
170
|
+
end
|
171
|
+
private_class_method :read_sched_models
|
172
|
+
|
173
|
+
##
|
174
|
+
# read_unistd_h is intended to be stubbed instead of File.readlines
|
175
|
+
# @return [Array] of Strings or nil if the file does not exist.
|
176
|
+
def self.read_unistd_h(path)
|
177
|
+
if File.exists?(path) then
|
178
|
+
File.readlines(path)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
private_class_method :read_unistd_h
|
182
|
+
|
183
|
+
##
|
184
|
+
# machinfo delegates directly to Facter::Core::Execution.exec, as with lsdev
|
185
|
+
# above.
|
186
|
+
def self.machinfo(command="/usr/contrib/bin/machinfo")
|
187
|
+
Facter::Core::Execution.exec(command)
|
188
|
+
end
|
189
|
+
|
190
|
+
##
|
191
|
+
# model delegates directly to Facter::Core::Execution.exec.
|
192
|
+
def self.model(command="model")
|
193
|
+
Facter::Core::Execution.exec(command)
|
194
|
+
end
|
195
|
+
|
196
|
+
##
|
197
|
+
# ioscan delegates directly to Facter::Core::Execution.exec.
|
198
|
+
def self.ioscan(command="ioscan -fknCprocessor")
|
199
|
+
Facter::Core::Execution.exec(command)
|
200
|
+
end
|
201
|
+
|
202
|
+
##
|
203
|
+
# getconf_cpu_version delegates directly to Facter::Core::Execution.exec.
|
204
|
+
def self.getconf_cpu_version(command="getconf CPU_VERSION")
|
205
|
+
Facter::Core::Execution.exec(command)
|
206
|
+
end
|
207
|
+
|
208
|
+
##
|
209
|
+
# getconf_cpu_chip_type delegates directly to Facter::Core::Execution.exec.
|
210
|
+
def self.getconf_cpu_chip_type(command="getconf CPU_CHIP_TYPE")
|
211
|
+
Facter::Core::Execution.exec(command)
|
212
|
+
end
|
213
|
+
|
214
|
+
def self.enum_cpuinfo
|
215
|
+
processor_num = -1
|
216
|
+
processor_list = []
|
217
|
+
cpuinfo = "/proc/cpuinfo"
|
218
|
+
|
219
|
+
if File.exists?(cpuinfo)
|
220
|
+
model = Facter.value(:architecture)
|
221
|
+
case model
|
222
|
+
when "x86_64", "amd64", "i386", "x86", /parisc/, "hppa", "ia64"
|
223
|
+
File.readlines(cpuinfo).each do |l|
|
224
|
+
if l =~ /processor\s+:\s+(\d+)/
|
225
|
+
processor_num = $1.to_i
|
226
|
+
elsif l =~ /model name\s+:\s+(.*)\s*$/
|
227
|
+
processor_list[processor_num] = $1 unless processor_num == -1
|
228
|
+
processor_num = -1
|
229
|
+
elsif l =~ /processor\s+(\d+):\s+(.*)/
|
230
|
+
processor_num = $1.to_i
|
231
|
+
processor_list[processor_num] = $2 unless processor_num == -1
|
232
|
+
end
|
233
|
+
end
|
234
|
+
|
235
|
+
when "ppc64"
|
236
|
+
File.readlines(cpuinfo).each do |l|
|
237
|
+
if l =~ /processor\s+:\s+(\d+)/
|
238
|
+
processor_num = $1.to_i
|
239
|
+
elsif l =~ /cpu\s+:\s+(.*)\s*$/
|
240
|
+
processor_list[processor_num] = $1 unless processor_num == -1
|
241
|
+
processor_num = -1
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
when /arm/
|
246
|
+
File.readlines(cpuinfo).each do |l|
|
247
|
+
if l =~ /Processor\s+:\s+(.+)/
|
248
|
+
processor_num += 1
|
249
|
+
processor_list[processor_num] = $1.chomp
|
250
|
+
elsif l =~ /processor\s+:\s+(\d+)\s*$/
|
251
|
+
proc_num = $1.to_i
|
252
|
+
if proc_num != 0
|
253
|
+
processor_num += 1
|
254
|
+
processor_list[processor_num] = processor_list[processor_num-1]
|
255
|
+
end
|
256
|
+
end
|
257
|
+
end
|
258
|
+
|
259
|
+
when /sparc/
|
260
|
+
File.readlines(cpuinfo).each do |l|
|
261
|
+
if l =~ /cpu\s+:\s+(.*)\s*$/
|
262
|
+
processor_num += 1
|
263
|
+
processor_list[processor_num] = $1
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
processor_list
|
269
|
+
end
|
270
|
+
|
271
|
+
def self.enum_kstat
|
272
|
+
processor_num = -1
|
273
|
+
processor_list = []
|
274
|
+
Thread::exclusive do
|
275
|
+
kstat = Facter::Core::Execution.exec('/usr/bin/kstat cpu_info')
|
276
|
+
if kstat
|
277
|
+
kstat.each_line do |l|
|
278
|
+
if l =~ /cpu_info(\d+)/
|
279
|
+
processor_num = $1.to_i
|
280
|
+
elsif l =~ /brand\s+(.*)\s*$/
|
281
|
+
processor_list[processor_num] = $1 unless processor_num == -1
|
282
|
+
processor_num = -1
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
end
|
287
|
+
processor_list
|
288
|
+
end
|
289
|
+
end
|
290
|
+
end
|
291
|
+
end
|