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.

Files changed (440) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +53 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +20 -0
  9. data/etc/facter.conf +5 -0
  10. data/ext/build_defaults.yaml +24 -0
  11. data/ext/debian/changelog.erb +59 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +14 -0
  14. data/ext/debian/copyright +19 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/lintian-overrides +0 -0
  17. data/ext/debian/rules +10 -0
  18. data/ext/debian/source/format +1 -0
  19. data/ext/facter-diff +74 -0
  20. data/ext/ips/facter.p5m.erb +10 -0
  21. data/ext/ips/rules +7 -0
  22. data/ext/ips/transforms +18 -0
  23. data/ext/osx/file_mapping.yaml +27 -0
  24. data/ext/osx/preflight.erb +33 -0
  25. data/ext/osx/prototype.plist.erb +38 -0
  26. data/ext/project_data.yaml +36 -0
  27. data/ext/redhat/facter.spec.erb +220 -0
  28. data/ext/solaris/pkginfo +7 -0
  29. data/install.rb +380 -0
  30. data/lib/facter.rb +261 -0
  31. data/lib/facter/Cfkey.rb +42 -0
  32. data/lib/facter/application.rb +204 -0
  33. data/lib/facter/architecture.rb +50 -0
  34. data/lib/facter/augeasversion.rb +28 -0
  35. data/lib/facter/blockdevices.rb +105 -0
  36. data/lib/facter/core/aggregate.rb +220 -0
  37. data/lib/facter/core/directed_graph.rb +46 -0
  38. data/lib/facter/core/execution.rb +123 -0
  39. data/lib/facter/core/execution/base.rb +81 -0
  40. data/lib/facter/core/execution/posix.rb +50 -0
  41. data/lib/facter/core/execution/windows.rb +57 -0
  42. data/lib/facter/core/logging.rb +169 -0
  43. data/lib/facter/core/resolvable.rb +94 -0
  44. data/lib/facter/core/suitable.rb +113 -0
  45. data/lib/facter/dhcp_servers.rb +39 -0
  46. data/lib/facter/domain.rb +99 -0
  47. data/lib/facter/ec2.rb +44 -0
  48. data/lib/facter/ec2/rest.rb +130 -0
  49. data/lib/facter/facterversion.rb +15 -0
  50. data/lib/facter/filesystems.rb +38 -0
  51. data/lib/facter/fqdn.rb +24 -0
  52. data/lib/facter/gce.rb +16 -0
  53. data/lib/facter/gce/metadata.rb +87 -0
  54. data/lib/facter/hardwareisa.rb +20 -0
  55. data/lib/facter/hardwaremodel.rb +67 -0
  56. data/lib/facter/hostname.rb +31 -0
  57. data/lib/facter/id.rb +21 -0
  58. data/lib/facter/interfaces.rb +46 -0
  59. data/lib/facter/ipaddress.rb +171 -0
  60. data/lib/facter/ipaddress6.rb +82 -0
  61. data/lib/facter/iphostnumber.rb +29 -0
  62. data/lib/facter/kernel.rb +22 -0
  63. data/lib/facter/kernelmajversion.rb +23 -0
  64. data/lib/facter/kernelrelease.rb +50 -0
  65. data/lib/facter/kernelversion.rb +22 -0
  66. data/lib/facter/ldom.rb +47 -0
  67. data/lib/facter/lsbdistcodename.rb +16 -0
  68. data/lib/facter/lsbdistdescription.rb +25 -0
  69. data/lib/facter/lsbdistid.rb +16 -0
  70. data/lib/facter/lsbdistrelease.rb +16 -0
  71. data/lib/facter/lsbmajdistrelease.rb +27 -0
  72. data/lib/facter/lsbrelease.rb +16 -0
  73. data/lib/facter/macaddress.rb +97 -0
  74. data/lib/facter/macosx.rb +56 -0
  75. data/lib/facter/manufacturer.rb +68 -0
  76. data/lib/facter/memory.rb +168 -0
  77. data/lib/facter/netmask.rb +42 -0
  78. data/lib/facter/network.rb +20 -0
  79. data/lib/facter/operatingsystem.rb +141 -0
  80. data/lib/facter/operatingsystemmajrelease.rb +47 -0
  81. data/lib/facter/operatingsystemrelease.rb +250 -0
  82. data/lib/facter/osfamily.rb +37 -0
  83. data/lib/facter/partitions.rb +35 -0
  84. data/lib/facter/path.rb +14 -0
  85. data/lib/facter/physicalprocessorcount.rb +91 -0
  86. data/lib/facter/processor.rb +168 -0
  87. data/lib/facter/ps.rb +30 -0
  88. data/lib/facter/puppetversion.rb +20 -0
  89. data/lib/facter/rubysitedir.rb +12 -0
  90. data/lib/facter/rubyversion.rb +12 -0
  91. data/lib/facter/selinux.rb +99 -0
  92. data/lib/facter/ssh.rb +72 -0
  93. data/lib/facter/timezone.rb +14 -0
  94. data/lib/facter/uniqueid.rb +4 -0
  95. data/lib/facter/uptime.rb +34 -0
  96. data/lib/facter/uptime_days.rb +15 -0
  97. data/lib/facter/uptime_hours.rb +15 -0
  98. data/lib/facter/uptime_seconds.rb +24 -0
  99. data/lib/facter/util/architecture.rb +19 -0
  100. data/lib/facter/util/collection.rb +161 -0
  101. data/lib/facter/util/composite_loader.rb +12 -0
  102. data/lib/facter/util/config.rb +63 -0
  103. data/lib/facter/util/confine.rb +66 -0
  104. data/lib/facter/util/dhcp_servers.rb +43 -0
  105. data/lib/facter/util/directory_loader.rb +83 -0
  106. data/lib/facter/util/ec2.rb +106 -0
  107. data/lib/facter/util/fact.rb +204 -0
  108. data/lib/facter/util/file_read.rb +37 -0
  109. data/lib/facter/util/formatter.rb +39 -0
  110. data/lib/facter/util/ip.rb +285 -0
  111. data/lib/facter/util/ip/windows.rb +215 -0
  112. data/lib/facter/util/loader.rb +155 -0
  113. data/lib/facter/util/macaddress.rb +43 -0
  114. data/lib/facter/util/macosx.rb +73 -0
  115. data/lib/facter/util/manufacturer.rb +99 -0
  116. data/lib/facter/util/memory.rb +228 -0
  117. data/lib/facter/util/netmask.rb +40 -0
  118. data/lib/facter/util/normalization.rb +94 -0
  119. data/lib/facter/util/nothing_loader.rb +12 -0
  120. data/lib/facter/util/operatingsystem.rb +21 -0
  121. data/lib/facter/util/parser.rb +158 -0
  122. data/lib/facter/util/partitions.rb +41 -0
  123. data/lib/facter/util/partitions/linux.rb +65 -0
  124. data/lib/facter/util/plist.rb +24 -0
  125. data/lib/facter/util/plist/generator.rb +228 -0
  126. data/lib/facter/util/plist/parser.rb +226 -0
  127. data/lib/facter/util/posix.rb +16 -0
  128. data/lib/facter/util/processor.rb +289 -0
  129. data/lib/facter/util/registry.rb +11 -0
  130. data/lib/facter/util/resolution.rb +160 -0
  131. data/lib/facter/util/solaris_zones.rb +158 -0
  132. data/lib/facter/util/unix_root.rb +5 -0
  133. data/lib/facter/util/uptime.rb +81 -0
  134. data/lib/facter/util/values.rb +109 -0
  135. data/lib/facter/util/virtual.rb +180 -0
  136. data/lib/facter/util/vlans.rb +21 -0
  137. data/lib/facter/util/windows_root.rb +7 -0
  138. data/lib/facter/util/wmi.rb +16 -0
  139. data/lib/facter/util/xendomains.rb +10 -0
  140. data/lib/facter/version.rb +86 -0
  141. data/lib/facter/virtual.rb +311 -0
  142. data/lib/facter/vlans.rb +17 -0
  143. data/lib/facter/xendomains.rb +20 -0
  144. data/lib/facter/zfs_version.rb +10 -0
  145. data/lib/facter/zonename.rb +6 -0
  146. data/lib/facter/zones.rb +17 -0
  147. data/lib/facter/zpool_version.rb +10 -0
  148. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  149. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  150. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  151. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  152. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  153. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  154. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  155. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  156. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  157. data/spec/fixtures/cpuinfo/sparc +10 -0
  158. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  159. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  160. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  161. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  162. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  163. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  164. data/spec/fixtures/hpux/sched.models +174 -0
  165. data/spec/fixtures/hpux/unistd.h +1534 -0
  166. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  167. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  168. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  169. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  170. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  171. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  172. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  173. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  174. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  175. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  176. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  177. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  178. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  179. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  180. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  181. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  182. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  183. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  184. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  185. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  186. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  187. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  188. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  189. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  190. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  191. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  192. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  193. data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
  194. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  195. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  196. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  197. data/spec/fixtures/ldom/ldom_v1 +6 -0
  198. data/spec/fixtures/netstat/centos_5_5 +5 -0
  199. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  200. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  201. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  202. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  203. data/spec/fixtures/netstat/fedora_10 +7 -0
  204. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  205. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  206. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  207. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  208. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  209. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  210. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
  211. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
  212. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
  213. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
  214. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
  215. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
  216. data/spec/fixtures/unit/dhcp_servers/route +3 -0
  217. data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
  218. data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
  219. data/spec/fixtures/unit/filesystems/linux +28 -0
  220. data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
  221. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  222. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  223. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  224. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  225. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  226. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  227. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  228. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
  229. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
  230. data/spec/fixtures/unit/memory/aix-svmon +9 -0
  231. data/spec/fixtures/unit/memory/aix-swap_l +2 -0
  232. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
  233. data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
  234. data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
  235. data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
  236. data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
  237. data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
  238. data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
  239. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
  240. data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
  241. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
  242. data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
  243. data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
  244. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  245. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
  246. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  247. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  248. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  249. data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
  250. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
  251. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  252. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  253. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  254. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  255. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  256. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  257. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  258. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  259. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  260. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  261. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  262. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  263. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  264. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  265. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  266. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  267. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  268. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  269. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  270. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  271. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  272. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  273. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  274. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  275. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  276. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  277. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  278. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  279. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  280. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  281. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  282. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  283. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  284. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  285. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  286. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  287. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  288. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  289. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  290. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  291. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  292. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  293. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  294. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  295. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  296. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  297. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  298. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
  299. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  300. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  301. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
  302. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
  303. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
  304. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
  305. data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
  306. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  307. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  308. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  309. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  310. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  311. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  312. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  313. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  314. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  315. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
  316. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  317. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  318. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  319. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  320. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  321. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  322. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  323. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  324. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  325. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  326. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  327. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  328. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  329. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
  330. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
  331. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
  332. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  333. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  334. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  335. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  336. data/spec/integration/facter_spec.rb +39 -0
  337. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  338. data/spec/lib/facter_spec/windows_network.rb +64 -0
  339. data/spec/puppetlabs_spec/files.rb +57 -0
  340. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  341. data/spec/puppetlabs_spec/matchers.rb +87 -0
  342. data/spec/puppetlabs_spec/verbose.rb +9 -0
  343. data/spec/puppetlabs_spec_helper.rb +26 -0
  344. data/spec/shared_contexts/platform.rb +55 -0
  345. data/spec/shared_formats/parses.rb +3 -0
  346. data/spec/spec_helper.rb +75 -0
  347. data/spec/unit/application_spec.rb +101 -0
  348. data/spec/unit/architecture_spec.rb +63 -0
  349. data/spec/unit/blockdevices_spec.rb +109 -0
  350. data/spec/unit/core/aggregate_spec.rb +125 -0
  351. data/spec/unit/core/directed_graph_spec.rb +79 -0
  352. data/spec/unit/core/execution/base_spec.rb +130 -0
  353. data/spec/unit/core/execution/posix_spec.rb +86 -0
  354. data/spec/unit/core/execution/windows_spec.rb +106 -0
  355. data/spec/unit/core/execution_spec.rb +42 -0
  356. data/spec/unit/core/logging_spec.rb +104 -0
  357. data/spec/unit/core/resolvable_spec.rb +81 -0
  358. data/spec/unit/core/suitable_spec.rb +106 -0
  359. data/spec/unit/dhcp_servers_spec.rb +152 -0
  360. data/spec/unit/domain_spec.rb +310 -0
  361. data/spec/unit/ec2/rest_spec.rb +145 -0
  362. data/spec/unit/ec2_spec.rb +127 -0
  363. data/spec/unit/facter_spec.rb +108 -0
  364. data/spec/unit/filesystems_spec.rb +50 -0
  365. data/spec/unit/fqdn_spec.rb +16 -0
  366. data/spec/unit/gce/metadata_spec.rb +49 -0
  367. data/spec/unit/gce_spec.rb +34 -0
  368. data/spec/unit/hardwareisa_spec.rb +41 -0
  369. data/spec/unit/hardwaremodel_spec.rb +56 -0
  370. data/spec/unit/hostname_spec.rb +40 -0
  371. data/spec/unit/id_spec.rb +29 -0
  372. data/spec/unit/interfaces_spec.rb +57 -0
  373. data/spec/unit/ipaddress6_spec.rb +161 -0
  374. data/spec/unit/ipaddress_spec.rb +114 -0
  375. data/spec/unit/kernel_spec.rb +24 -0
  376. data/spec/unit/kernelmajversion_spec.rb +22 -0
  377. data/spec/unit/kernelrelease_spec.rb +69 -0
  378. data/spec/unit/kernelversion_spec.rb +32 -0
  379. data/spec/unit/ldom_spec.rb +75 -0
  380. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  381. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  382. data/spec/unit/lsbdistid_spec.rb +25 -0
  383. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  384. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  385. data/spec/unit/lsbrelease_spec.rb +25 -0
  386. data/spec/unit/macaddress_spec.rb +73 -0
  387. data/spec/unit/manufacturer_spec.rb +115 -0
  388. data/spec/unit/memory_spec.rb +470 -0
  389. data/spec/unit/netmask_spec.rb +106 -0
  390. data/spec/unit/operatingsystem_spec.rb +160 -0
  391. data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
  392. data/spec/unit/operatingsystemrelease_spec.rb +236 -0
  393. data/spec/unit/osfamily_spec.rb +62 -0
  394. data/spec/unit/partitions_spec.rb +48 -0
  395. data/spec/unit/physicalprocessorcount_spec.rb +85 -0
  396. data/spec/unit/processor_spec.rb +401 -0
  397. data/spec/unit/ps_spec.rb +42 -0
  398. data/spec/unit/selinux_spec.rb +114 -0
  399. data/spec/unit/ssh_spec.rb +77 -0
  400. data/spec/unit/uniqueid_spec.rb +27 -0
  401. data/spec/unit/uptime_spec.rb +110 -0
  402. data/spec/unit/util/collection_spec.rb +258 -0
  403. data/spec/unit/util/config_spec.rb +97 -0
  404. data/spec/unit/util/confine_spec.rb +148 -0
  405. data/spec/unit/util/dhcp_servers_spec.rb +63 -0
  406. data/spec/unit/util/directory_loader_spec.rb +88 -0
  407. data/spec/unit/util/ec2_spec.rb +184 -0
  408. data/spec/unit/util/fact_spec.rb +142 -0
  409. data/spec/unit/util/file_read_spec.rb +29 -0
  410. data/spec/unit/util/formatter_spec.rb +50 -0
  411. data/spec/unit/util/ip/windows_spec.rb +80 -0
  412. data/spec/unit/util/ip_spec.rb +467 -0
  413. data/spec/unit/util/loader_spec.rb +286 -0
  414. data/spec/unit/util/macaddress_spec.rb +141 -0
  415. data/spec/unit/util/macosx_spec.rb +114 -0
  416. data/spec/unit/util/manufacturer_spec.rb +223 -0
  417. data/spec/unit/util/normalization_spec.rb +113 -0
  418. data/spec/unit/util/operatingsystem_spec.rb +92 -0
  419. data/spec/unit/util/parser_spec.rb +200 -0
  420. data/spec/unit/util/partitions/partitions_spec.rb +67 -0
  421. data/spec/unit/util/partitions_spec.rb +19 -0
  422. data/spec/unit/util/posix_spec.rb +11 -0
  423. data/spec/unit/util/processor_spec.rb +92 -0
  424. data/spec/unit/util/registry_spec.rb +76 -0
  425. data/spec/unit/util/resolution_spec.rb +129 -0
  426. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  427. data/spec/unit/util/uptime_spec.rb +126 -0
  428. data/spec/unit/util/values_spec.rb +171 -0
  429. data/spec/unit/util/virtual_spec.rb +364 -0
  430. data/spec/unit/util/vlans_spec.rb +42 -0
  431. data/spec/unit/util/wmi_spec.rb +19 -0
  432. data/spec/unit/util/xendomains_spec.rb +21 -0
  433. data/spec/unit/version_spec.rb +42 -0
  434. data/spec/unit/virtual_spec.rb +519 -0
  435. data/spec/unit/zfs_version_spec.rb +75 -0
  436. data/spec/unit/zonename_spec.rb +14 -0
  437. data/spec/unit/zones_spec.rb +55 -0
  438. data/spec/unit/zpool_version_spec.rb +75 -0
  439. data/spec/watchr.rb +125 -0
  440. 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