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.

Files changed (379) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +43 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +16 -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 +33 -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 +262 -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 +100 -0
  39. data/lib/facter/core/execution/base.rb +73 -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 +117 -0
  45. data/lib/facter/domain.rb +99 -0
  46. data/lib/facter/ec2.rb +37 -0
  47. data/lib/facter/facterversion.rb +15 -0
  48. data/lib/facter/filesystems.rb +38 -0
  49. data/lib/facter/fqdn.rb +22 -0
  50. data/lib/facter/hardwareisa.rb +20 -0
  51. data/lib/facter/hardwaremodel.rb +67 -0
  52. data/lib/facter/hostname.rb +33 -0
  53. data/lib/facter/id.rb +21 -0
  54. data/lib/facter/interfaces.rb +46 -0
  55. data/lib/facter/ipaddress.rb +171 -0
  56. data/lib/facter/ipaddress6.rb +82 -0
  57. data/lib/facter/iphostnumber.rb +29 -0
  58. data/lib/facter/kernel.rb +22 -0
  59. data/lib/facter/kernelmajversion.rb +15 -0
  60. data/lib/facter/kernelrelease.rb +42 -0
  61. data/lib/facter/kernelversion.rb +22 -0
  62. data/lib/facter/ldom.rb +47 -0
  63. data/lib/facter/lsbdistcodename.rb +18 -0
  64. data/lib/facter/lsbdistdescription.rb +21 -0
  65. data/lib/facter/lsbdistid.rb +18 -0
  66. data/lib/facter/lsbdistrelease.rb +18 -0
  67. data/lib/facter/lsbmajdistrelease.rb +27 -0
  68. data/lib/facter/lsbrelease.rb +18 -0
  69. data/lib/facter/macaddress.rb +97 -0
  70. data/lib/facter/macosx.rb +56 -0
  71. data/lib/facter/manufacturer.rb +68 -0
  72. data/lib/facter/memory.rb +162 -0
  73. data/lib/facter/netmask.rb +42 -0
  74. data/lib/facter/network.rb +20 -0
  75. data/lib/facter/operatingsystem.rb +121 -0
  76. data/lib/facter/operatingsystemmajrelease.rb +33 -0
  77. data/lib/facter/operatingsystemrelease.rb +226 -0
  78. data/lib/facter/osfamily.rb +35 -0
  79. data/lib/facter/path.rb +14 -0
  80. data/lib/facter/physicalprocessorcount.rb +84 -0
  81. data/lib/facter/processor.rb +183 -0
  82. data/lib/facter/ps.rb +30 -0
  83. data/lib/facter/puppetversion.rb +20 -0
  84. data/lib/facter/rubysitedir.rb +12 -0
  85. data/lib/facter/rubyversion.rb +12 -0
  86. data/lib/facter/selinux.rb +99 -0
  87. data/lib/facter/ssh.rb +72 -0
  88. data/lib/facter/timezone.rb +14 -0
  89. data/lib/facter/uniqueid.rb +4 -0
  90. data/lib/facter/uptime.rb +34 -0
  91. data/lib/facter/uptime_days.rb +15 -0
  92. data/lib/facter/uptime_hours.rb +15 -0
  93. data/lib/facter/uptime_seconds.rb +24 -0
  94. data/lib/facter/util/architecture.rb +19 -0
  95. data/lib/facter/util/collection.rb +161 -0
  96. data/lib/facter/util/composite_loader.rb +12 -0
  97. data/lib/facter/util/config.rb +61 -0
  98. data/lib/facter/util/confine.rb +66 -0
  99. data/lib/facter/util/directory_loader.rb +83 -0
  100. data/lib/facter/util/ec2.rb +101 -0
  101. data/lib/facter/util/fact.rb +204 -0
  102. data/lib/facter/util/file_read.rb +37 -0
  103. data/lib/facter/util/formatter.rb +38 -0
  104. data/lib/facter/util/ip.rb +285 -0
  105. data/lib/facter/util/ip/windows.rb +215 -0
  106. data/lib/facter/util/loader.rb +146 -0
  107. data/lib/facter/util/macaddress.rb +43 -0
  108. data/lib/facter/util/macosx.rb +73 -0
  109. data/lib/facter/util/manufacturer.rb +104 -0
  110. data/lib/facter/util/memory.rb +228 -0
  111. data/lib/facter/util/monkey_patches.rb +8 -0
  112. data/lib/facter/util/netmask.rb +40 -0
  113. data/lib/facter/util/normalization.rb +94 -0
  114. data/lib/facter/util/nothing_loader.rb +12 -0
  115. data/lib/facter/util/parser.rb +158 -0
  116. data/lib/facter/util/plist.rb +24 -0
  117. data/lib/facter/util/plist/generator.rb +228 -0
  118. data/lib/facter/util/plist/parser.rb +226 -0
  119. data/lib/facter/util/processor.rb +291 -0
  120. data/lib/facter/util/registry.rb +11 -0
  121. data/lib/facter/util/resolution.rb +152 -0
  122. data/lib/facter/util/solaris_zones.rb +158 -0
  123. data/lib/facter/util/unix_root.rb +5 -0
  124. data/lib/facter/util/uptime.rb +81 -0
  125. data/lib/facter/util/values.rb +80 -0
  126. data/lib/facter/util/virtual.rb +151 -0
  127. data/lib/facter/util/vlans.rb +24 -0
  128. data/lib/facter/util/windows_root.rb +37 -0
  129. data/lib/facter/util/wmi.rb +16 -0
  130. data/lib/facter/util/xendomains.rb +10 -0
  131. data/lib/facter/version.rb +86 -0
  132. data/lib/facter/virtual.rb +262 -0
  133. data/lib/facter/vlans.rb +17 -0
  134. data/lib/facter/xendomains.rb +20 -0
  135. data/lib/facter/zfs_version.rb +10 -0
  136. data/lib/facter/zonename.rb +6 -0
  137. data/lib/facter/zones.rb +17 -0
  138. data/lib/facter/zpool_version.rb +10 -0
  139. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  140. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  141. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  142. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  143. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  144. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  145. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  146. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  147. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  148. data/spec/fixtures/cpuinfo/sparc +10 -0
  149. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  150. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  151. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  152. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  153. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  154. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  155. data/spec/fixtures/hpux/sched.models +174 -0
  156. data/spec/fixtures/hpux/unistd.h +1534 -0
  157. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  158. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  159. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  160. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  161. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  162. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  163. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  164. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  165. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  166. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  167. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  168. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  169. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  170. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  171. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  172. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  173. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  174. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  175. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  176. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  177. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  178. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  179. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  180. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  181. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  182. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  183. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  184. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  185. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  186. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  187. data/spec/fixtures/ldom/ldom_v1 +6 -0
  188. data/spec/fixtures/netstat/centos_5_5 +5 -0
  189. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  190. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  191. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  192. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  193. data/spec/fixtures/netstat/fedora_10 +7 -0
  194. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  195. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  196. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  197. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  198. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  199. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  200. data/spec/fixtures/unit/filesystems/linux +28 -0
  201. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  202. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  203. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  204. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  205. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  206. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  207. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  208. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  209. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  210. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  211. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  212. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  213. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  214. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  215. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  216. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  217. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  218. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  219. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  220. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  221. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  222. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  223. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  224. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  225. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  226. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  227. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  228. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  229. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  230. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  231. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  232. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  233. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  234. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  235. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  236. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  237. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  238. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  239. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  240. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  241. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  242. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  243. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  244. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  245. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  246. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  247. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  248. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  249. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  250. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  251. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  252. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  253. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  254. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  255. data/spec/fixtures/unit/util/loader/nosuchfact.rb +1 -0
  256. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  257. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  258. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  259. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  260. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  261. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  262. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  263. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  264. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  265. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  266. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  267. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  268. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  269. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  270. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  271. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  272. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  273. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  274. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  275. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  276. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  277. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  278. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  279. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  280. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  281. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  282. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  283. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  284. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  285. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  286. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  287. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  288. data/spec/integration/facter_spec.rb +39 -0
  289. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  290. data/spec/lib/facter_spec/windows_network.rb +64 -0
  291. data/spec/puppetlabs_spec/files.rb +57 -0
  292. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  293. data/spec/puppetlabs_spec/matchers.rb +87 -0
  294. data/spec/puppetlabs_spec/verbose.rb +9 -0
  295. data/spec/puppetlabs_spec_helper.rb +26 -0
  296. data/spec/shared_contexts/platform.rb +55 -0
  297. data/spec/shared_formats/parses.rb +3 -0
  298. data/spec/spec_helper.rb +75 -0
  299. data/spec/unit/application_spec.rb +101 -0
  300. data/spec/unit/architecture_spec.rb +63 -0
  301. data/spec/unit/blockdevices_spec.rb +109 -0
  302. data/spec/unit/core/aggregate_spec.rb +125 -0
  303. data/spec/unit/core/directed_graph_spec.rb +79 -0
  304. data/spec/unit/core/execution/base_spec.rb +119 -0
  305. data/spec/unit/core/execution/posix_spec.rb +86 -0
  306. data/spec/unit/core/execution/windows_spec.rb +106 -0
  307. data/spec/unit/core/execution_spec.rb +37 -0
  308. data/spec/unit/core/logging_spec.rb +104 -0
  309. data/spec/unit/core/resolvable_spec.rb +81 -0
  310. data/spec/unit/core/suitable_spec.rb +96 -0
  311. data/spec/unit/domain_spec.rb +310 -0
  312. data/spec/unit/ec2_spec.rb +187 -0
  313. data/spec/unit/facter_spec.rb +108 -0
  314. data/spec/unit/filesystems_spec.rb +50 -0
  315. data/spec/unit/hardwareisa_spec.rb +41 -0
  316. data/spec/unit/hardwaremodel_spec.rb +56 -0
  317. data/spec/unit/hostname_spec.rb +40 -0
  318. data/spec/unit/id_spec.rb +29 -0
  319. data/spec/unit/interfaces_spec.rb +57 -0
  320. data/spec/unit/ipaddress6_spec.rb +161 -0
  321. data/spec/unit/ipaddress_spec.rb +114 -0
  322. data/spec/unit/kernel_spec.rb +24 -0
  323. data/spec/unit/kernelmajversion_spec.rb +17 -0
  324. data/spec/unit/kernelrelease_spec.rb +53 -0
  325. data/spec/unit/kernelversion_spec.rb +32 -0
  326. data/spec/unit/ldom_spec.rb +74 -0
  327. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  328. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  329. data/spec/unit/lsbdistid_spec.rb +25 -0
  330. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  331. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  332. data/spec/unit/lsbrelease_spec.rb +25 -0
  333. data/spec/unit/macaddress_spec.rb +61 -0
  334. data/spec/unit/manufacturer_spec.rb +115 -0
  335. data/spec/unit/memory_spec.rb +539 -0
  336. data/spec/unit/netmask_spec.rb +95 -0
  337. data/spec/unit/operatingsystem_spec.rb +141 -0
  338. data/spec/unit/operatingsystemmajrelease_spec.rb +16 -0
  339. data/spec/unit/operatingsystemrelease_spec.rb +226 -0
  340. data/spec/unit/physicalprocessorcount_spec.rb +76 -0
  341. data/spec/unit/processor_spec.rb +393 -0
  342. data/spec/unit/ps_spec.rb +42 -0
  343. data/spec/unit/selinux_spec.rb +114 -0
  344. data/spec/unit/ssh_spec.rb +77 -0
  345. data/spec/unit/uniqueid_spec.rb +27 -0
  346. data/spec/unit/uptime_spec.rb +110 -0
  347. data/spec/unit/util/collection_spec.rb +258 -0
  348. data/spec/unit/util/config_spec.rb +84 -0
  349. data/spec/unit/util/confine_spec.rb +148 -0
  350. data/spec/unit/util/directory_loader_spec.rb +88 -0
  351. data/spec/unit/util/ec2_spec.rb +180 -0
  352. data/spec/unit/util/fact_spec.rb +142 -0
  353. data/spec/unit/util/file_read_spec.rb +29 -0
  354. data/spec/unit/util/ip/windows_spec.rb +80 -0
  355. data/spec/unit/util/ip_spec.rb +463 -0
  356. data/spec/unit/util/loader_spec.rb +286 -0
  357. data/spec/unit/util/macaddress_spec.rb +141 -0
  358. data/spec/unit/util/macosx_spec.rb +113 -0
  359. data/spec/unit/util/manufacturer_spec.rb +179 -0
  360. data/spec/unit/util/normalization_spec.rb +113 -0
  361. data/spec/unit/util/parser_spec.rb +200 -0
  362. data/spec/unit/util/processor_spec.rb +92 -0
  363. data/spec/unit/util/registry_spec.rb +76 -0
  364. data/spec/unit/util/resolution_spec.rb +129 -0
  365. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  366. data/spec/unit/util/uptime_spec.rb +126 -0
  367. data/spec/unit/util/values_spec.rb +131 -0
  368. data/spec/unit/util/virtual_spec.rb +294 -0
  369. data/spec/unit/util/vlans_spec.rb +12 -0
  370. data/spec/unit/util/wmi_spec.rb +19 -0
  371. data/spec/unit/util/xendomains_spec.rb +21 -0
  372. data/spec/unit/version_spec.rb +42 -0
  373. data/spec/unit/virtual_spec.rb +470 -0
  374. data/spec/unit/zfs_version_spec.rb +75 -0
  375. data/spec/unit/zonename_spec.rb +14 -0
  376. data/spec/unit/zones_spec.rb +55 -0
  377. data/spec/unit/zpool_version_spec.rb +75 -0
  378. data/spec/watchr.rb +125 -0
  379. metadata +674 -0
@@ -0,0 +1,67 @@
1
+ # Fact: hardwaremodel
2
+ #
3
+ # Purpose:
4
+ # Returns the hardware model of the system.
5
+ #
6
+ # Resolution:
7
+ # Uses purely "uname -m" on all platforms other than AIX and Windows.
8
+ # On AIX uses the parsed "modelname" output of "lsattr -El sys0 -a modelname".
9
+ # On Windows uses the 'host_cpu' pulled out of Ruby's config.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:hardwaremodel) do
15
+ setcode 'uname -m'
16
+ end
17
+
18
+ Facter.add(:hardwaremodel) do
19
+ confine :operatingsystem => :aix
20
+ setcode do
21
+ model = Facter::Core::Execution.exec('lsattr -El sys0 -a modelname')
22
+ if model =~ /modelname\s(\S+)\s/
23
+ $1
24
+ end
25
+ end
26
+ end
27
+
28
+ Facter.add(:hardwaremodel) do
29
+ confine :operatingsystem => :windows
30
+ setcode do
31
+ # The cryptic windows cpu architecture models are documented in these places:
32
+ # http://source.winehq.org/source/include/winnt.h#L568
33
+ # http://msdn.microsoft.com/en-us/library/windows/desktop/aa394373(v=vs.85).aspx
34
+ # http://msdn.microsoft.com/en-us/library/windows/desktop/windows.system.processorarchitecture.aspx
35
+ # http://linux.derkeiler.com/Mailing-Lists/Kernel/2008-05/msg12924.html (anything over 6 is still i686)
36
+ # Also, arm and neutral are included because they are valid for the upcoming
37
+ # windows 8 release. --jeffweiss 23 May 2012
38
+ require 'facter/util/wmi'
39
+ model = ""
40
+ architecture_level = nil
41
+
42
+ Facter::Util::WMI.execquery("select Architecture, Level, AddressWidth from Win32_Processor").each do |cpu|
43
+ architecture_level = (cpu.Level > 5) ? 6 : cpu.Level;
44
+
45
+ model =
46
+ case cpu.Architecture
47
+ when 11 then 'neutral' # PROCESSOR_ARCHITECTURE_NEUTRAL
48
+ when 10 then 'i686' # PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
49
+ when 9 then # PROCESSOR_ARCHITECTURE_AMD64
50
+ cpu.AddressWidth == 32 ? "i#{architecture_level}86" : 'x64' # 32 bit OS on 64 bit CPU
51
+ when 8 then 'msil' # PROCESSOR_ARCHITECTURE_MSIL
52
+ when 7 then 'alpha64' # PROCESSOR_ARCHITECTURE_ALPHA64
53
+ when 6 then 'ia64' # PROCESSOR_ARCHITECTURE_IA64
54
+ when 5 then 'arm' # PROCESSOR_ARCHITECTURE_ARM
55
+ when 4 then 'shx' # PROCESSOR_ARCHITECTURE_SHX
56
+ when 3 then 'powerpc' # PROCESSOR_ARCHITECTURE_PPC
57
+ when 2 then 'alpha' # PROCESSOR_ARCHITECTURE_ALPHA
58
+ when 1 then 'mips' # PROCESSOR_ARCHITECTURE_MIPS
59
+ when 0 then "i#{architecture_level}86" # PROCESSOR_ARCHITECTURE_INTEL
60
+ else 'unknown' # PROCESSOR_ARCHITECTURE_UNKNOWN
61
+ end
62
+ break
63
+ end
64
+
65
+ model
66
+ end
67
+ end
@@ -0,0 +1,33 @@
1
+ # Fact: hostname
2
+ #
3
+ # Purpose: Return the system's short hostname.
4
+ #
5
+ # Resolution:
6
+ # On all system bar Darwin, parses the output of the "hostname" system command
7
+ # to everything before the first period.
8
+ # On Darwin, uses the system configuration util to get the LocalHostName
9
+ # variable.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:hostname) do
15
+ setcode do
16
+ hostname = nil
17
+ if name = Facter::Core::Execution.exec('hostname')
18
+ if name =~ /(.*?)\./
19
+ hostname = $1
20
+ else
21
+ hostname = name
22
+ end
23
+ end
24
+ hostname
25
+ end
26
+ end
27
+
28
+ Facter.add(:hostname) do
29
+ confine :kernel => :darwin, :kernelrelease => "R7"
30
+ setcode do
31
+ Facter::Core::Execution.exec('/usr/sbin/scutil --get LocalHostName')
32
+ end
33
+ end
@@ -0,0 +1,21 @@
1
+ # Fact: id
2
+ #
3
+ # Purpose: Internal fact used to specity the program to return the currently
4
+ # running user id.
5
+ #
6
+ # Resolution:
7
+ # On all Unixes bar Solaris, just returns "whoami".
8
+ # On Solaris, parses the output of the "id" command to grab the username, as
9
+ # Solaris doesn't have the whoami command.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:id) do
15
+ setcode "whoami"
16
+ end
17
+
18
+ Facter.add(:id) do
19
+ confine :kernel => :SunOS
20
+ setcode "/usr/xpg4/bin/id -un"
21
+ end
@@ -0,0 +1,46 @@
1
+ # Fact: interfaces
2
+ #
3
+ # Purpose:
4
+ #
5
+ # Resolution:
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ # interfaces.rb
11
+ # Try to get additional Facts about the machine's network interfaces
12
+ #
13
+ # Original concept Copyright (C) 2007 psychedelys <psychedelys@gmail.com>
14
+ # Update and *BSD support (C) 2007 James Turnbull <james@lovedthanlost.net>
15
+ #
16
+
17
+ require 'facter/util/ip'
18
+ require 'facter/util/macaddress'
19
+
20
+ # Note that most of this only works on a fixed list of platforms; notably, Darwin
21
+ # is missing.
22
+
23
+ Facter.add(:interfaces) do
24
+ confine :kernel => Facter::Util::IP.supported_platforms
25
+ setcode do
26
+ Facter::Util::IP.get_interfaces.collect { |iface| Facter::Util::IP.alphafy(iface) }.join(",")
27
+ end
28
+ end
29
+
30
+ Facter::Util::IP.get_interfaces.each do |interface|
31
+
32
+ # Make a fact for each detail of each interface. Yay.
33
+ # There's no point in confining these facts, since we wouldn't be able to create
34
+ # them if we weren't running on a supported platform.
35
+ %w{ipaddress ipaddress6 macaddress netmask mtu}.each do |label|
36
+ Facter.add(label + "_" + Facter::Util::IP.alphafy(interface)) do
37
+ setcode do
38
+ value = Facter::Util::IP.get_interface_value(interface, label)
39
+ if label == "macaddress"
40
+ value = Facter::Util::Macaddress.standardize(value)
41
+ end
42
+ value
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,171 @@
1
+ # Fact: ipaddress
2
+ #
3
+ # Purpose: Return the main IP address for a host.
4
+ #
5
+ # Resolution:
6
+ # On the Unixes does an ifconfig, and returns the first non 127.0.0.0/8
7
+ # subnetted IP it finds.
8
+ # On Windows, it attempts to use the socket library and resolve the machine's
9
+ # hostname via DNS.
10
+ #
11
+ # On LDAP based hosts it tries to use either the win32/resolv library to
12
+ # resolve the hostname to an IP address, or on Unix, it uses the resolv
13
+ # library.
14
+ #
15
+ # As a fall back for undefined systems, it tries to run the "host" command to
16
+ # resolve the machine's hostname using the system DNS.
17
+ #
18
+ # Caveats:
19
+ # DNS resolution relies on working DNS infrastructure and resolvers on the
20
+ # host system.
21
+ # The ifconfig parsing purely takes the first IP address it finds without any
22
+ # checking this is a useful IP address.
23
+ #
24
+
25
+ require 'facter/util/ip'
26
+
27
+ Facter.add(:ipaddress) do
28
+ confine :kernel => :linux
29
+ setcode do
30
+ ip = nil
31
+ output = Facter::Util::IP.exec_ifconfig(["2>/dev/null"])
32
+ if output
33
+ regexp = /inet (?:addr:)?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
34
+ output.split("\n").each do |line|
35
+ match = regexp.match(line)
36
+ if match and not /^127\./.match(match[1])
37
+ ip = match[1]
38
+ break
39
+ end
40
+ end
41
+ end
42
+ ip
43
+ end
44
+ end
45
+
46
+ Facter.add(:ipaddress) do
47
+ confine :kernel => %w{FreeBSD OpenBSD Darwin DragonFly}
48
+ setcode do
49
+ ip = nil
50
+ output = Facter::Util::IP.exec_ifconfig
51
+
52
+ output.split(/^\S/).each { |str|
53
+ if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
54
+ tmp = $1
55
+ unless tmp =~ /^127\./
56
+ ip = tmp
57
+ break
58
+ end
59
+ end
60
+ }
61
+
62
+ ip
63
+ end
64
+ end
65
+
66
+ Facter.add(:ipaddress) do
67
+ confine :kernel => %w{NetBSD SunOS}
68
+ setcode do
69
+ ip = nil
70
+ output = Facter::Util::IP.exec_ifconfig(["-a"])
71
+
72
+ output.split(/^\S/).each { |str|
73
+ if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
74
+ tmp = $1
75
+ unless tmp =~ /^127\./ or tmp == "0.0.0.0"
76
+ ip = tmp
77
+ break
78
+ end
79
+ end
80
+ }
81
+
82
+ ip
83
+ end
84
+ end
85
+
86
+ Facter.add(:ipaddress) do
87
+ confine :kernel => %w{AIX}
88
+ setcode do
89
+ ip = nil
90
+ output = Facter::Util::IP.exec_ifconfig(["-a"])
91
+
92
+ output.split(/^\S/).each { |str|
93
+ if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
94
+ tmp = $1
95
+ unless tmp =~ /^127\./
96
+ ip = tmp
97
+ break
98
+ end
99
+ end
100
+ }
101
+
102
+ ip
103
+ end
104
+ end
105
+
106
+ Facter.add(:ipaddress) do
107
+ confine :kernel => %w{windows}
108
+ setcode do
109
+ require 'facter/util/ip/windows'
110
+ ipaddr = nil
111
+
112
+ adapters = Facter::Util::IP::Windows.get_preferred_ipv4_adapters
113
+ adapters.find do |nic|
114
+ nic.IPAddress.any? do |addr|
115
+ ipaddr = addr if Facter::Util::IP::Windows.valid_ipv4_address?(addr)
116
+ ipaddr
117
+ end
118
+ end
119
+
120
+ ipaddr
121
+ end
122
+ end
123
+
124
+ Facter.add(:ipaddress, :timeout => 2) do
125
+ setcode do
126
+ if Facter.value(:kernel) == 'windows'
127
+ require 'win32/resolv'
128
+ else
129
+ require 'resolv'
130
+ end
131
+
132
+ begin
133
+ if hostname = Facter.value(:hostname)
134
+ if Facter.value(:kernel) == 'windows'
135
+ ip = Win32::Resolv.get_resolv_info.last[0]
136
+ else
137
+ ip = Resolv.getaddress(hostname)
138
+ end
139
+ unless ip == "127.0.0.1"
140
+ ip
141
+ end
142
+ else
143
+ nil
144
+ end
145
+ rescue Resolv::ResolvError
146
+ nil
147
+ rescue NoMethodError # i think this is a bug in resolv.rb?
148
+ nil
149
+ end
150
+ end
151
+ end
152
+
153
+ Facter.add(:ipaddress, :timeout => 2) do
154
+ setcode do
155
+ if hostname = Facter.value(:hostname)
156
+ # we need Hostname to exist for this to work
157
+ host = nil
158
+ if host = Facter::Core::Execution.exec("host #{hostname}")
159
+ list = host.chomp.split(/\s/)
160
+ if defined? list[-1] and
161
+ list[-1] =~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/
162
+ list[-1]
163
+ end
164
+ else
165
+ nil
166
+ end
167
+ else
168
+ nil
169
+ end
170
+ end
171
+ end
@@ -0,0 +1,82 @@
1
+ # Fact: ipaddress6
2
+ #
3
+ # Purpose: Returns the "main" IPv6 IP address of a system.
4
+ #
5
+ # Resolution:
6
+ # OS dependant code that parses the output of various networking
7
+ # tools and currently not very intelligent. Returns the first
8
+ # non-loopback and non-linklocal address found in the ouput unless
9
+ # a default route can be mapped to a routeable interface. Guessing
10
+ # an interface is currently only possible with BSD type systems
11
+ # to many assumptions have to be made on other platforms to make
12
+ # this work with the current code. Most code ported or modeled
13
+ # after the ipaddress fact for the sake of similar functionality
14
+ # and familiar mechanics.
15
+ #
16
+ # Caveats:
17
+ #
18
+
19
+ # Cody Herriges <c.a.herriges@gmail.com>
20
+ #
21
+ # Used the ipaddress fact that is already part of
22
+ # Facter as a template.
23
+
24
+ require 'facter/util/ip'
25
+
26
+ def get_address_after_token(output, token, return_first=false)
27
+ ip = nil
28
+
29
+ String(output).scan(/#{token}\s?((?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4})/).each do |match|
30
+ match = match.first
31
+ unless match =~ /fe80.*/ or match == "::1"
32
+ ip = match
33
+ break if return_first
34
+ end
35
+ end
36
+
37
+ ip
38
+ end
39
+
40
+ Facter.add(:ipaddress6) do
41
+ confine :kernel => :linux
42
+ setcode do
43
+ output = Facter::Util::IP.exec_ifconfig(["2>/dev/null"])
44
+ get_address_after_token(output, 'inet6(?: addr:)?')
45
+ end
46
+ end
47
+
48
+ Facter.add(:ipaddress6) do
49
+ confine :kernel => %w{SunOS}
50
+ setcode do
51
+ output = Facter::Util::IP.exec_ifconfig(["-a"])
52
+
53
+ get_address_after_token(output, 'inet6')
54
+ end
55
+ end
56
+
57
+ Facter.add(:ipaddress6) do
58
+ confine :kernel => %w{Darwin FreeBSD OpenBSD}
59
+ setcode do
60
+ output = Facter::Util::IP.exec_ifconfig(["-a"])
61
+
62
+ get_address_after_token(output, 'inet6', true)
63
+ end
64
+ end
65
+
66
+ Facter.add(:ipaddress6) do
67
+ confine :kernel => :windows
68
+ setcode do
69
+ require 'facter/util/ip/windows'
70
+ ipaddr = nil
71
+
72
+ adapters = Facter::Util::IP::Windows.get_preferred_ipv6_adapters
73
+ adapters.find do |nic|
74
+ nic.IPAddress.any? do |addr|
75
+ ipaddr = addr if Facter::Util::IP::Windows.valid_ipv6_address?(addr)
76
+ ipaddr
77
+ end
78
+ end
79
+
80
+ ipaddr
81
+ end
82
+ end
@@ -0,0 +1,29 @@
1
+ # Fact: iphostnumber
2
+ #
3
+ # Purpose: On selected versions of Darwin, returns the host's IP address.
4
+ #
5
+ # Resolution:
6
+ # Uses either the scutil program to get the localhost name, or parses output
7
+ # of ifconfig for a MAC address.
8
+ #
9
+ # Caveats:
10
+ #
11
+
12
+ Facter.add(:iphostnumber) do
13
+ confine :kernel => :darwin, :kernelrelease => "R6"
14
+ setcode do
15
+ %x{/usr/sbin/scutil --get LocalHostName}
16
+ end
17
+ end
18
+ Facter.add(:iphostnumber) do
19
+ confine :kernel => :darwin, :kernelrelease => "R6"
20
+ setcode do
21
+ ether = nil
22
+ output = Facter::Util::IP.exec_ifconfig
23
+
24
+ output =~ /HWaddr (\w\w:\w\w:\w\w:\w\w:\w\w:\w\w)/
25
+ ether = $1
26
+
27
+ ether
28
+ end
29
+ end