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,35 @@
1
+ # Fact: osfamily
2
+ #
3
+ # Purpose: Returns the operating system
4
+ #
5
+ # Resolution:
6
+ # Maps operating systems to operating system families, such as linux
7
+ # distribution derivatives. Adds mappings from specific operating systems
8
+ # to kernels in the case that it is relevant.
9
+ #
10
+ # Caveats:
11
+ # This fact is completely reliant on the operatingsystem fact, and no
12
+ # heuristics are used
13
+ #
14
+
15
+ Facter.add(:osfamily) do
16
+
17
+ setcode do
18
+ case Facter.value(:operatingsystem)
19
+ when "RedHat", "Fedora", "CentOS", "Scientific", "SLC", "Ascendos", "CloudLinux", "PSBM", "OracleLinux", "OVS", "OEL", "Amazon", "XenServer"
20
+ "RedHat"
21
+ when "Ubuntu", "Debian"
22
+ "Debian"
23
+ when "SLES", "SLED", "OpenSuSE", "SuSE"
24
+ "Suse"
25
+ when "Solaris", "Nexenta", "OmniOS", "OpenIndiana", "SmartOS"
26
+ "Solaris"
27
+ when "Gentoo"
28
+ "Gentoo"
29
+ when "Archlinux"
30
+ "Archlinux"
31
+ else
32
+ Facter.value("kernel")
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ # Fact: path
2
+ #
3
+ # Purpose: Returns the $PATH variable.
4
+ #
5
+ # Resolution: Gets $PATH from the environment.
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ Facter.add(:path) do
11
+ setcode do
12
+ ENV['PATH']
13
+ end
14
+ end
@@ -0,0 +1,84 @@
1
+ # Fact: physicalprocessorcount
2
+ #
3
+ # Purpose: Return the number of physical processors.
4
+ #
5
+ # Resolution:
6
+ #
7
+ # Attempts to use sysfs to get the physical IDs of the processors. Falls
8
+ # back to /proc/cpuinfo and "physical id" if sysfs is not available.
9
+ #
10
+ # Caveats:
11
+ #
12
+ Facter.add('physicalprocessorcount') do
13
+ confine :kernel => :linux
14
+
15
+ setcode do
16
+ sysfs_cpu_directory = '/sys/devices/system/cpu' # This should always be there ...
17
+
18
+ if File.exists?(sysfs_cpu_directory)
19
+ #
20
+ # We assume that the sysfs file system has the correct number of entries
21
+ # under the "/sys/device/system/cpu" directory and if so then we process
22
+ # content of the file "physical_package_id" located inside the "topology"
23
+ # directory in each of the per-CPU sub-directories.
24
+ #
25
+ # As per Linux Kernel documentation and the file "cputopology.txt" located
26
+ # inside the "/usr/src/linux/Documentation" directory we can find following
27
+ # short explanation:
28
+ #
29
+ # (...)
30
+ #
31
+ # 1) /sys/devices/system/cpu/cpuX/topology/physical_package_id:
32
+ #
33
+ # physical package id of cpuX. Typically corresponds to a physical
34
+ # socket number, but the actual value is architecture and platform
35
+ # dependent.
36
+ #
37
+ # (...)
38
+ #
39
+ lookup_pattern = "#{sysfs_cpu_directory}" +
40
+ "/cpu*/topology/physical_package_id"
41
+
42
+ Dir.glob(lookup_pattern).collect { |f| Facter::Core::Execution.exec("cat #{f}")}.uniq.size.to_s
43
+
44
+ else
45
+ #
46
+ # Try to count number of CPUs using the proc file system next ...
47
+ #
48
+ # We assume that /proc/cpuinfo has what we need and is so then we need
49
+ # to make sure that we only count unique entries ...
50
+ #
51
+ str = Facter::Core::Execution.exec("grep 'physical.\\+:' /proc/cpuinfo")
52
+
53
+ if str then str.scan(/\d+/).uniq.size.to_s; end
54
+ end
55
+ end
56
+ end
57
+
58
+ Facter.add('physicalprocessorcount') do
59
+ confine :kernel => :windows
60
+ setcode do
61
+ require 'facter/util/wmi'
62
+ Facter::Util::WMI.execquery("select Name from Win32_Processor").Count.to_s
63
+ end
64
+ end
65
+
66
+ Facter.add('physicalprocessorcount') do
67
+ confine :kernel => :sunos
68
+
69
+ setcode do
70
+ # (#16526) The -p flag was not added until Solaris 8. Our intent is to
71
+ # split the kernel release fact value on the dot, take the second element,
72
+ # and disable the -p flag for values < 8 when.
73
+ kernelrelease = Facter.value(:kernelrelease)
74
+ (major_version, minor_version) = kernelrelease.split(".").map { |str| str.to_i }
75
+ cmd = "/usr/sbin/psrinfo"
76
+ result = nil
77
+ if (major_version > 5) or (major_version == 5 and minor_version >= 8) then
78
+ result = Facter::Core::Execution.exec("#{cmd} -p")
79
+ else
80
+ output = Facter::Core::Execution.exec(cmd)
81
+ result = output.split("\n").length.to_s
82
+ end
83
+ end
84
+ end
@@ -0,0 +1,183 @@
1
+ # Fact: processor
2
+ #
3
+ # Purpose:
4
+ # Additional Facts about the machine's CPUs.
5
+ #
6
+ # Resolution:
7
+ # On Linux and kFreeBSD, parse '/proc/cpuinfo' for each processor.
8
+ # On AIX, parse the output of 'lsdev' for its processor section.
9
+ # On Solaris, parse the output of 'kstat' for each processor.
10
+ # On OpenBSD, use 'uname -p' and the sysctl variable for 'hw.ncpu' for CPU
11
+ # count.
12
+ #
13
+ # Caveats:
14
+ #
15
+
16
+ # processor.rb
17
+ #
18
+ # Copyright (C) 2006 Mooter Media Ltd
19
+ # Author: Matthew Palmer <matt@solutionsfirst.com.au>
20
+ #
21
+
22
+ require 'thread'
23
+ require 'facter/util/processor'
24
+
25
+ # We have to enumerate these outside a Facter.add block to get the processorN
26
+ # descriptions iteratively (but we need them inside the Facter.add block above
27
+ # for tests on processorcount to work)
28
+ processor_list = case Facter::Util::Processor.kernel_fact_value
29
+ when "AIX"
30
+ Facter::Util::Processor.aix_processor_list
31
+ when "HP-UX"
32
+ Facter::Util::Processor.hpux_processor_list
33
+ when "SunOS"
34
+ Facter::Util::Processor.enum_kstat
35
+ else
36
+ Facter::Util::Processor.enum_cpuinfo
37
+ end
38
+
39
+ processor_list.each_with_index do |desc, i|
40
+ Facter.add("Processor#{i}") do
41
+ confine :kernel => [ :aix, :"hp-ux", :sunos, :linux, :"gnu/kfreebsd" ]
42
+ setcode do
43
+ desc
44
+ end
45
+ end
46
+ end
47
+
48
+ Facter.add("ProcessorCount") do
49
+ confine :kernel => [ :linux, :"gnu/kfreebsd" ]
50
+ setcode do
51
+ processor_list = Facter::Util::Processor.enum_cpuinfo
52
+
53
+ ## If this returned nothing, then don't resolve the fact
54
+ if processor_list.length != 0
55
+ processor_list.length.to_s
56
+ end
57
+ end
58
+ end
59
+
60
+ Facter.add("ProcessorCount") do
61
+ confine :kernel => [ :linux, :"gnu/kfreebsd" ]
62
+ setcode do
63
+ ## The method above is preferable since it provides the description of the CPU as well
64
+ ## but if that returned 0, then we enumerate sysfs
65
+ sysfs_cpu_directory = '/sys/devices/system/cpu'
66
+ if File.exists?(sysfs_cpu_directory)
67
+ lookup_pattern = "#{sysfs_cpu_directory}" + "/cpu[0-9]*"
68
+ cpuCount = Dir.glob(lookup_pattern).length
69
+ cpuCount.to_s
70
+ end
71
+ end
72
+ end
73
+
74
+ Facter.add("ProcessorCount") do
75
+ confine :kernel => :aix
76
+ setcode do
77
+ processor_list = Facter::Util::Processor.aix_processor_list
78
+
79
+ processor_list.length.to_s
80
+ end
81
+ end
82
+
83
+ Facter.add("ProcessorCount") do
84
+ confine :kernel => :"hp-ux"
85
+ setcode do
86
+ processor_list = Facter::Util::Processor.hpux_processor_list
87
+ processor_list.length.to_s
88
+ end
89
+ end
90
+
91
+ Facter.add("Processor") do
92
+ confine :kernel => :openbsd
93
+ setcode do
94
+ Facter::Core::Execution.exec("uname -p")
95
+ end
96
+ end
97
+
98
+ Facter.add("ProcessorCount") do
99
+ confine :kernel => :openbsd
100
+ setcode do
101
+ Facter::Core::Execution.exec("sysctl -n hw.ncpu")
102
+ end
103
+ end
104
+
105
+ Facter.add("ProcessorCount") do
106
+ confine :kernel => :Darwin
107
+ setcode do
108
+ Facter::Core::Execution.exec("sysctl -n hw.ncpu")
109
+ end
110
+ end
111
+
112
+ if Facter.value(:kernel) == "windows"
113
+ processor_list = []
114
+
115
+ Thread::exclusive do
116
+ require 'facter/util/wmi'
117
+
118
+ # get each physical processor
119
+ Facter::Util::WMI.execquery("select * from Win32_Processor").each do |proc|
120
+ # not supported before 2008
121
+ if proc.respond_to?(:NumberOfLogicalProcessors)
122
+ processor_num = proc.NumberOfLogicalProcessors
123
+ else
124
+ processor_num = 1
125
+ end
126
+
127
+ processor_num.times do |i|
128
+ processor_list << proc.Name.squeeze(" ")
129
+ end
130
+ end
131
+ end
132
+
133
+ processor_list.each_with_index do |name, i|
134
+ Facter.add("Processor#{i}") do
135
+ confine :kernel => :windows
136
+ setcode do
137
+ name
138
+ end
139
+ end
140
+ end
141
+
142
+ Facter.add("ProcessorCount") do
143
+ confine :kernel => :windows
144
+ setcode do
145
+ processor_list.length.to_s
146
+ end
147
+ end
148
+ end
149
+
150
+ Facter.add("Processor") do
151
+ confine :kernel => [:dragonfly,:freebsd]
152
+ setcode do
153
+ Facter::Core::Execution.exec("sysctl -n hw.model")
154
+ end
155
+ end
156
+
157
+ Facter.add("ProcessorCount") do
158
+ confine :kernel => [:dragonfly,:freebsd]
159
+ setcode do
160
+ Facter::Core::Execution.exec("sysctl -n hw.ncpu")
161
+ end
162
+ end
163
+
164
+ Facter.add("ProcessorCount") do
165
+ confine :kernel => :sunos
166
+ setcode do
167
+ kernelrelease = Facter.value(:kernelrelease)
168
+ (major_version, minor_version) = kernelrelease.split(".").map { |str| str.to_i }
169
+ result = nil
170
+
171
+ if (major_version > 5) or (major_version == 5 and minor_version >= 8) then
172
+ if kstat = Facter::Core::Execution.exec("/usr/bin/kstat cpu_info")
173
+ result = kstat.scan(/\bcore_id\b\s+\d+/).uniq.length
174
+ end
175
+ else
176
+ if output = Facter::Core::Execution.exec("/usr/sbin/psrinfo") then
177
+ result = output.split("\n").length
178
+ end
179
+ end
180
+
181
+ result.to_s
182
+ end
183
+ end
@@ -0,0 +1,30 @@
1
+ # Fact: ps
2
+ #
3
+ # Purpose: Internal fact for what to use to list all processes. Used by
4
+ # Service{} type in Puppet.
5
+ #
6
+ # Resolution:
7
+ # Assumes "ps -ef" for all operating systems other than BSD derivatives, where
8
+ # it uses "ps auxwww"
9
+ #
10
+ # Caveats:
11
+ #
12
+
13
+ Facter.add(:ps) do
14
+ setcode do 'ps -ef' end
15
+ end
16
+
17
+ Facter.add(:ps) do
18
+ confine :operatingsystem => :OpenWrt
19
+ setcode do 'ps www' end
20
+ end
21
+
22
+ Facter.add(:ps) do
23
+ confine :operatingsystem => %w{FreeBSD NetBSD OpenBSD Darwin DragonFly}
24
+ setcode do 'ps auxwww' end
25
+ end
26
+
27
+ Facter.add(:ps) do
28
+ confine :operatingsystem => :windows
29
+ setcode do 'tasklist.exe' end
30
+ end
@@ -0,0 +1,20 @@
1
+ # Fact: puppetversion
2
+ #
3
+ # Purpose: Return the version of puppet installed.
4
+ #
5
+ # Resolution:
6
+ # Requres puppet via Ruby and returns it's version constant.
7
+ #
8
+ # Caveats:
9
+ #
10
+
11
+ Facter.add(:puppetversion) do
12
+ setcode do
13
+ begin
14
+ require 'puppet'
15
+ Puppet::PUPPETVERSION.to_s
16
+ rescue LoadError
17
+ nil
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ # Fact: rubysitedir
2
+ #
3
+ # Purpose: Returns Ruby's site library directory.
4
+ #
5
+
6
+ require 'rbconfig'
7
+
8
+ Facter.add :rubysitedir do
9
+ setcode do
10
+ RbConfig::CONFIG["sitelibdir"]
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # Fact: rubyversion
2
+ #
3
+ # Purpose: Returns the version of Ruby facter is running under.
4
+ #
5
+ # Resolution: Returns RUBY_VERSION.
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ Facter.add(:rubyversion) do
11
+ setcode { RUBY_VERSION.to_s }
12
+ end
@@ -0,0 +1,99 @@
1
+ # Fact: selinux
2
+ #
3
+ # Purpose:
4
+ #
5
+ # Resolution:
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ # Fact for SElinux
11
+ # Written by immerda admin team (admin(at)immerda.ch)
12
+
13
+ sestatus_cmd = '/usr/sbin/sestatus'
14
+
15
+ # This supports the fact that the selinux mount point is not always in the
16
+ # same location -- the selinux mount point is operating system specific.
17
+ def selinux_mount_point
18
+ path = "/selinux"
19
+ if FileTest.exists?('/proc/self/mounts')
20
+ # Centos 5 shows an error in which having ruby use File.read to read
21
+ # /proc/self/mounts combined with the puppet agent run with --listen causes
22
+ # a hang. Reading from other parts of /proc does not seem to cause this problem.
23
+ # The work around is to read the file in another process.
24
+ # -- andy Fri Aug 31 2012
25
+ selinux_line = Facter::Core::Execution.exec('cat /proc/self/mounts').each_line.find { |line| line =~ /selinuxfs/ }
26
+ if selinux_line
27
+ path = selinux_line.split[1]
28
+ end
29
+ end
30
+ path
31
+ end
32
+
33
+ Facter.add("selinux") do
34
+ confine :kernel => :linux
35
+ setcode do
36
+ result = "false"
37
+ if FileTest.exists?("#{selinux_mount_point}/enforce")
38
+ if FileTest.exists?("/proc/self/attr/current")
39
+ if (File.read("/proc/self/attr/current") != "kernel\0")
40
+ result = "true"
41
+ end
42
+ end
43
+ end
44
+ result
45
+ end
46
+ end
47
+
48
+ Facter.add("selinux_enforced") do
49
+ confine :selinux => :true
50
+ setcode do
51
+ result = "false"
52
+ if FileTest.exists?("#{selinux_mount_point}/enforce") and
53
+ File.read("#{selinux_mount_point}/enforce") =~ /1/i
54
+ result = "true"
55
+ end
56
+ result
57
+ end
58
+ end
59
+
60
+ Facter.add("selinux_policyversion") do
61
+ confine :selinux => :true
62
+ setcode do
63
+ result = 'unknown'
64
+ if FileTest.exists?("#{selinux_mount_point}/policyvers")
65
+ result = File.read("#{selinux_mount_point}/policyvers").chomp
66
+ end
67
+ result
68
+ end
69
+ end
70
+
71
+ Facter.add("selinux_current_mode") do
72
+ confine :selinux => :true
73
+ setcode do
74
+ result = 'unknown'
75
+ mode = Facter::Core::Execution.exec(sestatus_cmd)
76
+ mode.each_line { |l| result = $1 if l =~ /^Current mode\:\s+(\w+)$/i }
77
+ result.chomp
78
+ end
79
+ end
80
+
81
+ Facter.add("selinux_config_mode") do
82
+ confine :selinux => :true
83
+ setcode do
84
+ result = 'unknown'
85
+ mode = Facter::Core::Execution.exec(sestatus_cmd)
86
+ mode.each_line { |l| result = $1 if l =~ /^Mode from config file\:\s+(\w+)$/i }
87
+ result.chomp
88
+ end
89
+ end
90
+
91
+ Facter.add("selinux_config_policy") do
92
+ confine :selinux => :true
93
+ setcode do
94
+ result = 'unknown'
95
+ mode = Facter::Core::Execution.exec(sestatus_cmd)
96
+ mode.each_line { |l| result = $1 if l =~ /^Policy from config file\:\s+(\w+)$/i }
97
+ result.chomp
98
+ end
99
+ end