facter 2.1.0-x64-mingw32
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of facter might be problematic. Click here for more details.
- checksums.yaml +7 -0
- data/COMMITTERS.md +194 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +53 -0
- data/LICENSE +15 -0
- data/README.md +33 -0
- data/Rakefile +79 -0
- data/bin/facter +20 -0
- data/etc/facter.conf +5 -0
- data/ext/build_defaults.yaml +24 -0
- data/ext/debian/changelog.erb +59 -0
- data/ext/debian/compat +1 -0
- data/ext/debian/control +14 -0
- data/ext/debian/copyright +19 -0
- data/ext/debian/docs +1 -0
- data/ext/debian/lintian-overrides +0 -0
- data/ext/debian/rules +10 -0
- data/ext/debian/source/format +1 -0
- data/ext/facter-diff +74 -0
- data/ext/ips/facter.p5m.erb +10 -0
- data/ext/ips/rules +7 -0
- data/ext/ips/transforms +18 -0
- data/ext/osx/file_mapping.yaml +27 -0
- data/ext/osx/preflight.erb +33 -0
- data/ext/osx/prototype.plist.erb +38 -0
- data/ext/project_data.yaml +36 -0
- data/ext/redhat/facter.spec.erb +220 -0
- data/ext/solaris/pkginfo +7 -0
- data/install.rb +380 -0
- data/lib/facter.rb +261 -0
- data/lib/facter/Cfkey.rb +42 -0
- data/lib/facter/application.rb +204 -0
- data/lib/facter/architecture.rb +50 -0
- data/lib/facter/augeasversion.rb +28 -0
- data/lib/facter/blockdevices.rb +105 -0
- data/lib/facter/core/aggregate.rb +220 -0
- data/lib/facter/core/directed_graph.rb +46 -0
- data/lib/facter/core/execution.rb +123 -0
- data/lib/facter/core/execution/base.rb +81 -0
- data/lib/facter/core/execution/posix.rb +50 -0
- data/lib/facter/core/execution/windows.rb +57 -0
- data/lib/facter/core/logging.rb +169 -0
- data/lib/facter/core/resolvable.rb +94 -0
- data/lib/facter/core/suitable.rb +113 -0
- data/lib/facter/dhcp_servers.rb +39 -0
- data/lib/facter/domain.rb +99 -0
- data/lib/facter/ec2.rb +44 -0
- data/lib/facter/ec2/rest.rb +130 -0
- data/lib/facter/facterversion.rb +15 -0
- data/lib/facter/filesystems.rb +38 -0
- data/lib/facter/fqdn.rb +24 -0
- data/lib/facter/gce.rb +16 -0
- data/lib/facter/gce/metadata.rb +87 -0
- data/lib/facter/hardwareisa.rb +20 -0
- data/lib/facter/hardwaremodel.rb +67 -0
- data/lib/facter/hostname.rb +31 -0
- data/lib/facter/id.rb +21 -0
- data/lib/facter/interfaces.rb +46 -0
- data/lib/facter/ipaddress.rb +171 -0
- data/lib/facter/ipaddress6.rb +82 -0
- data/lib/facter/iphostnumber.rb +29 -0
- data/lib/facter/kernel.rb +22 -0
- data/lib/facter/kernelmajversion.rb +23 -0
- data/lib/facter/kernelrelease.rb +50 -0
- data/lib/facter/kernelversion.rb +22 -0
- data/lib/facter/ldom.rb +47 -0
- data/lib/facter/lsbdistcodename.rb +16 -0
- data/lib/facter/lsbdistdescription.rb +25 -0
- data/lib/facter/lsbdistid.rb +16 -0
- data/lib/facter/lsbdistrelease.rb +16 -0
- data/lib/facter/lsbmajdistrelease.rb +27 -0
- data/lib/facter/lsbrelease.rb +16 -0
- data/lib/facter/macaddress.rb +97 -0
- data/lib/facter/macosx.rb +56 -0
- data/lib/facter/manufacturer.rb +68 -0
- data/lib/facter/memory.rb +168 -0
- data/lib/facter/netmask.rb +42 -0
- data/lib/facter/network.rb +20 -0
- data/lib/facter/operatingsystem.rb +141 -0
- data/lib/facter/operatingsystemmajrelease.rb +47 -0
- data/lib/facter/operatingsystemrelease.rb +250 -0
- data/lib/facter/osfamily.rb +37 -0
- data/lib/facter/partitions.rb +35 -0
- data/lib/facter/path.rb +14 -0
- data/lib/facter/physicalprocessorcount.rb +91 -0
- data/lib/facter/processor.rb +168 -0
- data/lib/facter/ps.rb +30 -0
- data/lib/facter/puppetversion.rb +20 -0
- data/lib/facter/rubysitedir.rb +12 -0
- data/lib/facter/rubyversion.rb +12 -0
- data/lib/facter/selinux.rb +99 -0
- data/lib/facter/ssh.rb +72 -0
- data/lib/facter/timezone.rb +14 -0
- data/lib/facter/uniqueid.rb +4 -0
- data/lib/facter/uptime.rb +34 -0
- data/lib/facter/uptime_days.rb +15 -0
- data/lib/facter/uptime_hours.rb +15 -0
- data/lib/facter/uptime_seconds.rb +24 -0
- data/lib/facter/util/architecture.rb +19 -0
- data/lib/facter/util/collection.rb +161 -0
- data/lib/facter/util/composite_loader.rb +12 -0
- data/lib/facter/util/config.rb +63 -0
- data/lib/facter/util/confine.rb +66 -0
- data/lib/facter/util/dhcp_servers.rb +43 -0
- data/lib/facter/util/directory_loader.rb +83 -0
- data/lib/facter/util/ec2.rb +106 -0
- data/lib/facter/util/fact.rb +204 -0
- data/lib/facter/util/file_read.rb +37 -0
- data/lib/facter/util/formatter.rb +39 -0
- data/lib/facter/util/ip.rb +285 -0
- data/lib/facter/util/ip/windows.rb +215 -0
- data/lib/facter/util/loader.rb +155 -0
- data/lib/facter/util/macaddress.rb +43 -0
- data/lib/facter/util/macosx.rb +73 -0
- data/lib/facter/util/manufacturer.rb +99 -0
- data/lib/facter/util/memory.rb +228 -0
- data/lib/facter/util/netmask.rb +40 -0
- data/lib/facter/util/normalization.rb +94 -0
- data/lib/facter/util/nothing_loader.rb +12 -0
- data/lib/facter/util/operatingsystem.rb +21 -0
- data/lib/facter/util/parser.rb +158 -0
- data/lib/facter/util/partitions.rb +41 -0
- data/lib/facter/util/partitions/linux.rb +65 -0
- data/lib/facter/util/plist.rb +24 -0
- data/lib/facter/util/plist/generator.rb +228 -0
- data/lib/facter/util/plist/parser.rb +226 -0
- data/lib/facter/util/posix.rb +16 -0
- data/lib/facter/util/processor.rb +289 -0
- data/lib/facter/util/registry.rb +11 -0
- data/lib/facter/util/resolution.rb +160 -0
- data/lib/facter/util/solaris_zones.rb +158 -0
- data/lib/facter/util/unix_root.rb +5 -0
- data/lib/facter/util/uptime.rb +81 -0
- data/lib/facter/util/values.rb +109 -0
- data/lib/facter/util/virtual.rb +180 -0
- data/lib/facter/util/vlans.rb +21 -0
- data/lib/facter/util/windows_root.rb +7 -0
- data/lib/facter/util/wmi.rb +16 -0
- data/lib/facter/util/xendomains.rb +10 -0
- data/lib/facter/version.rb +86 -0
- data/lib/facter/virtual.rb +311 -0
- data/lib/facter/vlans.rb +17 -0
- data/lib/facter/xendomains.rb +20 -0
- data/lib/facter/zfs_version.rb +10 -0
- data/lib/facter/zonename.rb +6 -0
- data/lib/facter/zones.rb +17 -0
- data/lib/facter/zpool_version.rb +10 -0
- data/spec/fixtures/cpuinfo/amd64dual +57 -0
- data/spec/fixtures/cpuinfo/amd64quad +79 -0
- data/spec/fixtures/cpuinfo/amd64solo +23 -0
- data/spec/fixtures/cpuinfo/amd64tri +86 -0
- data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
- data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
- data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
- data/spec/fixtures/cpuinfo/panda-armel +17 -0
- data/spec/fixtures/cpuinfo/ppc64 +19 -0
- data/spec/fixtures/cpuinfo/sparc +10 -0
- data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
- data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
- data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
- data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
- data/spec/fixtures/hpux/sched.models +174 -0
- data/spec/fixtures/hpux/unistd.h +1534 -0
- data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
- data/spec/fixtures/ifconfig/centos_5_5 +17 -0
- data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
- data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
- data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
- data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
- data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
- data/spec/fixtures/ifconfig/fedora_10 +36 -0
- data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_13 +18 -0
- data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
- data/spec/fixtures/ifconfig/fedora_8 +38 -0
- data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
- data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
- data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
- data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
- data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
- data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
- data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
- data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
- data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
- data/spec/fixtures/ldom/ldom_v1 +6 -0
- data/spec/fixtures/netstat/centos_5_5 +5 -0
- data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
- data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
- data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
- data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
- data/spec/fixtures/netstat/fedora_10 +7 -0
- data/spec/fixtures/netstat/open_solaris_10 +16 -0
- data/spec/fixtures/netstat/open_solaris_b132 +17 -0
- data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
- data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
- data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
- data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
- data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
- data/spec/fixtures/unit/dhcp_servers/route +3 -0
- data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
- data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
- data/spec/fixtures/unit/filesystems/linux +28 -0
- data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
- data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
- data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
- data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
- data/spec/fixtures/unit/memory/aix-svmon +9 -0
- data/spec/fixtures/unit/memory/aix-swap_l +2 -0
- data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
- data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
- data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
- data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
- data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
- data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
- data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
- data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
- data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
- data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
- data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
- data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
- data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
- data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
- data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
- data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
- data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
- data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
- data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
- data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
- data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
- data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
- data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
- data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
- data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
- data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
- data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
- data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
- data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
- data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
- data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
- data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
- data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
- data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
- data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
- data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
- data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
- data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
- data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
- data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
- data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
- data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
- data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
- data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
- data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
- data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
- data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
- data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
- data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
- data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
- data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
- data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
- data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
- data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
- data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
- data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
- data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
- data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
- data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
- data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
- data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
- data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
- data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
- data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
- data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
- data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
- data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
- data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
- data/spec/integration/facter_spec.rb +39 -0
- data/spec/lib/facter_spec/cpuinfo.rb +15 -0
- data/spec/lib/facter_spec/windows_network.rb +64 -0
- data/spec/puppetlabs_spec/files.rb +57 -0
- data/spec/puppetlabs_spec/fixtures.rb +49 -0
- data/spec/puppetlabs_spec/matchers.rb +87 -0
- data/spec/puppetlabs_spec/verbose.rb +9 -0
- data/spec/puppetlabs_spec_helper.rb +26 -0
- data/spec/shared_contexts/platform.rb +55 -0
- data/spec/shared_formats/parses.rb +3 -0
- data/spec/spec_helper.rb +75 -0
- data/spec/unit/application_spec.rb +101 -0
- data/spec/unit/architecture_spec.rb +63 -0
- data/spec/unit/blockdevices_spec.rb +109 -0
- data/spec/unit/core/aggregate_spec.rb +125 -0
- data/spec/unit/core/directed_graph_spec.rb +79 -0
- data/spec/unit/core/execution/base_spec.rb +130 -0
- data/spec/unit/core/execution/posix_spec.rb +86 -0
- data/spec/unit/core/execution/windows_spec.rb +106 -0
- data/spec/unit/core/execution_spec.rb +42 -0
- data/spec/unit/core/logging_spec.rb +104 -0
- data/spec/unit/core/resolvable_spec.rb +81 -0
- data/spec/unit/core/suitable_spec.rb +106 -0
- data/spec/unit/dhcp_servers_spec.rb +152 -0
- data/spec/unit/domain_spec.rb +310 -0
- data/spec/unit/ec2/rest_spec.rb +145 -0
- data/spec/unit/ec2_spec.rb +127 -0
- data/spec/unit/facter_spec.rb +108 -0
- data/spec/unit/filesystems_spec.rb +50 -0
- data/spec/unit/fqdn_spec.rb +16 -0
- data/spec/unit/gce/metadata_spec.rb +49 -0
- data/spec/unit/gce_spec.rb +34 -0
- data/spec/unit/hardwareisa_spec.rb +41 -0
- data/spec/unit/hardwaremodel_spec.rb +56 -0
- data/spec/unit/hostname_spec.rb +40 -0
- data/spec/unit/id_spec.rb +29 -0
- data/spec/unit/interfaces_spec.rb +57 -0
- data/spec/unit/ipaddress6_spec.rb +161 -0
- data/spec/unit/ipaddress_spec.rb +114 -0
- data/spec/unit/kernel_spec.rb +24 -0
- data/spec/unit/kernelmajversion_spec.rb +22 -0
- data/spec/unit/kernelrelease_spec.rb +69 -0
- data/spec/unit/kernelversion_spec.rb +32 -0
- data/spec/unit/ldom_spec.rb +75 -0
- data/spec/unit/lsbdistcodename_spec.rb +25 -0
- data/spec/unit/lsbdistdescription_spec.rb +25 -0
- data/spec/unit/lsbdistid_spec.rb +25 -0
- data/spec/unit/lsbdistrelease_spec.rb +25 -0
- data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
- data/spec/unit/lsbrelease_spec.rb +25 -0
- data/spec/unit/macaddress_spec.rb +73 -0
- data/spec/unit/manufacturer_spec.rb +115 -0
- data/spec/unit/memory_spec.rb +470 -0
- data/spec/unit/netmask_spec.rb +106 -0
- data/spec/unit/operatingsystem_spec.rb +160 -0
- data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
- data/spec/unit/operatingsystemrelease_spec.rb +236 -0
- data/spec/unit/osfamily_spec.rb +62 -0
- data/spec/unit/partitions_spec.rb +48 -0
- data/spec/unit/physicalprocessorcount_spec.rb +85 -0
- data/spec/unit/processor_spec.rb +401 -0
- data/spec/unit/ps_spec.rb +42 -0
- data/spec/unit/selinux_spec.rb +114 -0
- data/spec/unit/ssh_spec.rb +77 -0
- data/spec/unit/uniqueid_spec.rb +27 -0
- data/spec/unit/uptime_spec.rb +110 -0
- data/spec/unit/util/collection_spec.rb +258 -0
- data/spec/unit/util/config_spec.rb +97 -0
- data/spec/unit/util/confine_spec.rb +148 -0
- data/spec/unit/util/dhcp_servers_spec.rb +63 -0
- data/spec/unit/util/directory_loader_spec.rb +88 -0
- data/spec/unit/util/ec2_spec.rb +184 -0
- data/spec/unit/util/fact_spec.rb +142 -0
- data/spec/unit/util/file_read_spec.rb +29 -0
- data/spec/unit/util/formatter_spec.rb +50 -0
- data/spec/unit/util/ip/windows_spec.rb +80 -0
- data/spec/unit/util/ip_spec.rb +467 -0
- data/spec/unit/util/loader_spec.rb +286 -0
- data/spec/unit/util/macaddress_spec.rb +141 -0
- data/spec/unit/util/macosx_spec.rb +114 -0
- data/spec/unit/util/manufacturer_spec.rb +223 -0
- data/spec/unit/util/normalization_spec.rb +113 -0
- data/spec/unit/util/operatingsystem_spec.rb +92 -0
- data/spec/unit/util/parser_spec.rb +200 -0
- data/spec/unit/util/partitions/partitions_spec.rb +67 -0
- data/spec/unit/util/partitions_spec.rb +19 -0
- data/spec/unit/util/posix_spec.rb +11 -0
- data/spec/unit/util/processor_spec.rb +92 -0
- data/spec/unit/util/registry_spec.rb +76 -0
- data/spec/unit/util/resolution_spec.rb +129 -0
- data/spec/unit/util/solaris_zones_spec.rb +127 -0
- data/spec/unit/util/uptime_spec.rb +126 -0
- data/spec/unit/util/values_spec.rb +171 -0
- data/spec/unit/util/virtual_spec.rb +364 -0
- data/spec/unit/util/vlans_spec.rb +42 -0
- data/spec/unit/util/wmi_spec.rb +19 -0
- data/spec/unit/util/xendomains_spec.rb +21 -0
- data/spec/unit/version_spec.rb +42 -0
- data/spec/unit/virtual_spec.rb +519 -0
- data/spec/unit/zfs_version_spec.rb +75 -0
- data/spec/unit/zonename_spec.rb +14 -0
- data/spec/unit/zones_spec.rb +55 -0
- data/spec/unit/zpool_version_spec.rb +75 -0
- data/spec/watchr.rb +125 -0
- metadata +815 -0
@@ -0,0 +1,215 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
require 'facter/util/wmi'
|
4
|
+
require 'facter/util/ip'
|
5
|
+
|
6
|
+
class Facter::Util::IP::Windows
|
7
|
+
# The WMI query used to return ip information
|
8
|
+
#
|
9
|
+
# @return [String]
|
10
|
+
#
|
11
|
+
# @api private
|
12
|
+
WMI_IP_INFO_QUERY = 'SELECT Description, ServiceName, IPAddress, IPConnectionMetric, InterfaceIndex, Index, IPSubnet, MACAddress, MTU, SettingID FROM Win32_NetworkAdapterConfiguration WHERE IPConnectionMetric IS NOT NULL AND IPEnabled = TRUE'
|
13
|
+
|
14
|
+
# Mapping fact names to WMI properties of the Win32_NetworkAdapterConfiguration
|
15
|
+
#
|
16
|
+
# @api private
|
17
|
+
WINDOWS_LABEL_WMI_MAP = {
|
18
|
+
:ipaddress => 'IPAddress',
|
19
|
+
:ipaddress6 => 'IPAddress',
|
20
|
+
:macaddress => 'MACAddress',
|
21
|
+
:netmask => 'IPSubnet'
|
22
|
+
}
|
23
|
+
|
24
|
+
def self.to_s
|
25
|
+
'windows'
|
26
|
+
end
|
27
|
+
|
28
|
+
# Windows doesn't display netmask in hex.
|
29
|
+
#
|
30
|
+
# @return [Boolean] false by default
|
31
|
+
#
|
32
|
+
# @api private
|
33
|
+
def self.convert_netmask_from_hex?
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
# Retrieves a list of unique interfaces names.
|
38
|
+
#
|
39
|
+
# @return [Array<String>]
|
40
|
+
#
|
41
|
+
# @api private
|
42
|
+
def self.interfaces
|
43
|
+
interface_names = []
|
44
|
+
|
45
|
+
network_adapter_configurations.map do |nic|
|
46
|
+
Facter::Util::WMI.execquery("SELECT * FROM Win32_NetworkAdapter WHERE Index = #{nic.Index} AND NetEnabled = TRUE").each do |nic|
|
47
|
+
interface_names << nic.NetConnectionId unless nic.NetConnectionId.nil? or nic.NetConnectionId.empty?
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
interface_names.uniq
|
52
|
+
end
|
53
|
+
|
54
|
+
# Get the value of an interface and label. For example, you may want to find
|
55
|
+
# the MTU for eth0.
|
56
|
+
#
|
57
|
+
# @param [String] interface the name of the interface returned by the {#interfaces} method.
|
58
|
+
# @param [String] label the type of value to return, e.g. ipaddress
|
59
|
+
# @return [String] the value, or nil if not defined
|
60
|
+
#
|
61
|
+
# @api private
|
62
|
+
def self.value_for_interface_and_label(interface, label)
|
63
|
+
wmi_value = WINDOWS_LABEL_WMI_MAP[label.downcase.to_sym]
|
64
|
+
label_value = nil
|
65
|
+
Facter::Util::WMI.execquery("SELECT Index FROM Win32_NetworkAdapter WHERE NetConnectionID = '#{interface}'").each do |nic|
|
66
|
+
Facter::Util::WMI.execquery("SELECT #{wmi_value} FROM Win32_NetworkAdapterConfiguration WHERE Index = #{nic.Index}").each do |nic_config|
|
67
|
+
case label.downcase.to_sym
|
68
|
+
when :ipaddress
|
69
|
+
nic_config.IPAddress.any? do |addr|
|
70
|
+
label_value = addr if valid_ipv4_address?(addr)
|
71
|
+
label_value
|
72
|
+
end
|
73
|
+
when :ipaddress6
|
74
|
+
nic_config.IPAddress.any? do |addr|
|
75
|
+
label_value = addr if Facter::Util::IP::Windows.valid_ipv6_address?(addr)
|
76
|
+
label_value
|
77
|
+
end
|
78
|
+
when :netmask
|
79
|
+
nic_config.IPSubnet.any? do |addr|
|
80
|
+
label_value = addr if Facter::Util::IP::Windows.valid_ipv4_address?(addr)
|
81
|
+
label_value
|
82
|
+
end
|
83
|
+
when :macaddress
|
84
|
+
label_value = nic_config.MACAddress
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
label_value
|
90
|
+
end
|
91
|
+
|
92
|
+
# Returns an array of partial Win32_NetworkAdapterConfiguration objects.
|
93
|
+
#
|
94
|
+
# @return [Array<WIN32OLE>] objects
|
95
|
+
#
|
96
|
+
# @api private
|
97
|
+
def self.network_adapter_configurations
|
98
|
+
nics = []
|
99
|
+
# WIN32OLE doesn't implement Enumerable
|
100
|
+
Facter::Util::WMI.execquery(WMI_IP_INFO_QUERY).each do |nic|
|
101
|
+
nics << nic
|
102
|
+
end
|
103
|
+
nics
|
104
|
+
end
|
105
|
+
|
106
|
+
# Gets a list of active IPv4 network adapter configurations sorted by the
|
107
|
+
# lowest IP connection metric. If two configurations have the same metric,
|
108
|
+
# then the IPv4 specific binding order as specified in the registry will
|
109
|
+
# be used.
|
110
|
+
#
|
111
|
+
# @return [Array<WIN32OLE>]
|
112
|
+
#
|
113
|
+
# @api private
|
114
|
+
def self.get_preferred_ipv4_adapters
|
115
|
+
get_preferred_network_adapters(Bindings4.new)
|
116
|
+
end
|
117
|
+
|
118
|
+
# Gets a list of active IPv6 network adapter configurations sorted by the
|
119
|
+
# lowest IP connection metric. If two configurations have the same metric,
|
120
|
+
# then the IPv6 specific binding order as specified in the registry will
|
121
|
+
# be used.
|
122
|
+
#
|
123
|
+
# @return [Array<WIN32OLE>]
|
124
|
+
#
|
125
|
+
# @api private
|
126
|
+
def self.get_preferred_ipv6_adapters
|
127
|
+
get_preferred_network_adapters(Bindings6.new)
|
128
|
+
end
|
129
|
+
|
130
|
+
# Gets a list of active network adapter configurations sorted by the lowest
|
131
|
+
# IP connection metric. If two configurations have the same metric, then
|
132
|
+
# the adapter binding order as specified in the registry will be used.
|
133
|
+
# Note the order may different for IPv4 vs IPv6 addresses.
|
134
|
+
#
|
135
|
+
# @see http://support.microsoft.com/kb/894564
|
136
|
+
# @return [Array<WIN32OLE>]
|
137
|
+
#
|
138
|
+
# @api private
|
139
|
+
def self.get_preferred_network_adapters(bindings)
|
140
|
+
network_adapter_configurations.select do |nic|
|
141
|
+
bindings.bindings.include?(nic.SettingID)
|
142
|
+
end.sort do |nic_left,nic_right|
|
143
|
+
cmp = nic_left.IPConnectionMetric <=> nic_right.IPConnectionMetric
|
144
|
+
if cmp == 0
|
145
|
+
bindings.bindings[nic_left.SettingID] <=> bindings.bindings[nic_right.SettingID]
|
146
|
+
else
|
147
|
+
cmp
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
class Bindings4
|
153
|
+
def initialize
|
154
|
+
@key = 'SYSTEM\CurrentControlSet\Services\Tcpip\Linkage'
|
155
|
+
end
|
156
|
+
|
157
|
+
def bindings
|
158
|
+
require 'facter/util/registry'
|
159
|
+
bindings = {}
|
160
|
+
|
161
|
+
Facter::Util::Registry.hklm_read(@key, 'Bind').each_with_index do |entry, index|
|
162
|
+
match_data = entry.match(/\\Device\\(\{.*\})/)
|
163
|
+
unless match_data.nil?
|
164
|
+
bindings[match_data[1]] = index
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
bindings
|
169
|
+
rescue
|
170
|
+
{}
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
class Bindings6 < Bindings4
|
175
|
+
def initialize
|
176
|
+
@key = 'SYSTEM\CurrentControlSet\Services\Tcpip6\Linkage'
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
180
|
+
# Determines if the value passed in is a valid ipv4 address.
|
181
|
+
#
|
182
|
+
# @param [String] ip_address the IPv4 address to validate
|
183
|
+
# @return [Boolean]
|
184
|
+
#
|
185
|
+
# @api private
|
186
|
+
def self.valid_ipv4_address?(ip_address)
|
187
|
+
String(ip_address).scan(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/).each do |match|
|
188
|
+
# excluding 169.254.x.x in Windows - this is the DHCP APIPA
|
189
|
+
# meaning that if the node cannot get an ip address from the dhcp server,
|
190
|
+
# it auto-assigns a private ip address
|
191
|
+
unless match == "127.0.0.1" or match =~ /^169.254.*/
|
192
|
+
return !!match
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
false
|
197
|
+
end
|
198
|
+
|
199
|
+
# Determines if the value passed in is a valid ipv6 address.
|
200
|
+
#
|
201
|
+
# @param [String] ip_address the IPv6 address to validate
|
202
|
+
# @return [Boolean]
|
203
|
+
#
|
204
|
+
# @api private
|
205
|
+
def self.valid_ipv6_address?(ip_address)
|
206
|
+
String(ip_address).scan(/(?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4}/).each do |match|
|
207
|
+
unless match =~ /fe80.*/ or match == "::1"
|
208
|
+
return !!match
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
false
|
213
|
+
end
|
214
|
+
|
215
|
+
end
|
@@ -0,0 +1,155 @@
|
|
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 and execute the Ruby program specified in the file. This exists
|
125
|
+
# for testing purposes.
|
126
|
+
#
|
127
|
+
# @api private
|
128
|
+
# @return [Boolean]
|
129
|
+
def kernel_load(file)
|
130
|
+
Kernel.load(file)
|
131
|
+
end
|
132
|
+
|
133
|
+
# Load facts from the environment. If no name is provided,
|
134
|
+
# all will be loaded.
|
135
|
+
def load_env(fact = nil)
|
136
|
+
# Load from the environment, if possible
|
137
|
+
@environment_vars.each do |name, value|
|
138
|
+
# Skip anything that doesn't match our regex.
|
139
|
+
next unless name =~ /^facter_?(\w+)$/i
|
140
|
+
env_name = $1
|
141
|
+
|
142
|
+
# If a fact name was specified, skip anything that doesn't
|
143
|
+
# match it.
|
144
|
+
next if fact and env_name != fact
|
145
|
+
|
146
|
+
Facter.add($1) do
|
147
|
+
has_weight 1_000_000
|
148
|
+
setcode { value }
|
149
|
+
end
|
150
|
+
|
151
|
+
# Short-cut, if we are only looking for one value.
|
152
|
+
break if fact
|
153
|
+
end
|
154
|
+
end
|
155
|
+
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
|