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,72 @@
1
+ # Fact: ssh
2
+ #
3
+ # Purpose:
4
+ #
5
+ # Resolution:
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ ## ssh.rb
11
+ ## Facts related to SSH
12
+ ##
13
+
14
+ {"SSHDSAKey" => { :file => "ssh_host_dsa_key.pub", :sshfprrtype => 2 },
15
+ "SSHRSAKey" => { :file => "ssh_host_rsa_key.pub", :sshfprrtype => 1 },
16
+ "SSHECDSAKey" => { :file => "ssh_host_ecdsa_key.pub", :sshfprrtype => 3 },
17
+ "SSHED25519Key" => { :file => "ssh_host_ed25519_key.pub", :sshfprrtype => 4 } }.each do |name,key|
18
+
19
+ Facter.add(name) do
20
+ setcode do
21
+ value = nil
22
+
23
+ [ "/etc/ssh",
24
+ "/usr/local/etc/ssh",
25
+ "/etc",
26
+ "/usr/local/etc",
27
+ "/etc/opt/ssh",
28
+ ].each do |dir|
29
+
30
+ filepath = File.join(dir,key[:file])
31
+
32
+ if FileTest.file?(filepath)
33
+ begin
34
+ value = File.read(filepath).chomp.split(/\s+/)[1]
35
+ break
36
+ rescue
37
+ value = nil
38
+ end
39
+ end
40
+ end
41
+
42
+ value
43
+ end
44
+ end
45
+
46
+ Facter.add('SSHFP_' + name[3..-4]) do
47
+ setcode do
48
+ ssh = Facter.fact(name).value
49
+ value = nil
50
+
51
+ if ssh && key[:sshfprrtype]
52
+ begin
53
+ require 'digest/sha1'
54
+ require 'base64'
55
+ digest = Base64.decode64(ssh)
56
+ value = 'SSHFP ' + key[:sshfprrtype].to_s + ' 1 ' + Digest::SHA1.hexdigest(digest)
57
+ begin
58
+ require 'digest/sha2'
59
+ value += "\nSSHFP " + key[:sshfprrtype].to_s + ' 2 ' + Digest::SHA256.hexdigest(digest)
60
+ rescue
61
+ end
62
+ rescue
63
+ value = nil
64
+ end
65
+ end
66
+
67
+ value
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,14 @@
1
+ # Fact: timezone
2
+ #
3
+ # Purpose: Return the machine's time zone.
4
+ #
5
+ # Resolution: Uses's Ruby's Time module's Time.new call.
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ Facter.add("timezone") do
11
+ setcode do
12
+ Time.new.zone
13
+ end
14
+ end
@@ -0,0 +1,4 @@
1
+ Facter.add(:uniqueid) do
2
+ setcode 'hostid'
3
+ confine :kernel => %w{SunOS Linux AIX GNU/kFreeBSD}
4
+ end
@@ -0,0 +1,34 @@
1
+ # Fact: uptime
2
+ #
3
+ # Purpose: return the system uptime in a human readable format.
4
+ #
5
+ # Resolution:
6
+ # Does basic maths on the "uptime_seconds" fact to return a count of
7
+ # days, hours and minutes of uptime
8
+ #
9
+ # Caveats:
10
+ #
11
+
12
+ require 'facter/util/uptime'
13
+
14
+ Facter.add(:uptime) do
15
+ setcode do
16
+ seconds = Facter.fact(:uptime_seconds).value
17
+
18
+ unless seconds
19
+ "unknown"
20
+ else
21
+ days = seconds / (60 * 60 * 24)
22
+ hours = seconds / (60 * 60) % 24
23
+ minutes = seconds / 60 % 60
24
+
25
+ case days
26
+ when 0 then "#{hours}:#{"%02d" % minutes} hours"
27
+ when 1 then '1 day'
28
+ else "#{days} days"
29
+ end
30
+ end
31
+
32
+ end
33
+ end
34
+
@@ -0,0 +1,15 @@
1
+ # Fact: uptime_days
2
+ #
3
+ # Purpose: Return purely number of days of uptime.
4
+ #
5
+ # Resolution: Divides uptime_hours fact by 24.
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ Facter.add(:uptime_days) do
11
+ setcode do
12
+ hours = Facter.value(:uptime_hours)
13
+ hours && hours / 24 # hours in day
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ # Fact: uptime_hours
2
+ #
3
+ # Purpose: Return purely number of hours of uptime.
4
+ #
5
+ # Resolution: Divides uptime_seconds fact by 3600.
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ Facter.add(:uptime_hours) do
11
+ setcode do
12
+ seconds = Facter.value(:uptime_seconds)
13
+ seconds && seconds / (60 * 60) # seconds in hour
14
+ end
15
+ end
@@ -0,0 +1,24 @@
1
+ # Fact: uptime_seconds
2
+ #
3
+ # Purpose: Return purely number of seconds of uptime.
4
+ #
5
+ # Resolution:
6
+ # Using the 'facter/util/uptime.rb' module, try a verity of methods to acquire
7
+ # the uptime on Unix.
8
+ #
9
+ # On Windows, the module calculates the uptime by the "LastBootupTime" Windows
10
+ # management value.
11
+ #
12
+ # Caveats:
13
+ #
14
+
15
+ require 'facter/util/uptime'
16
+
17
+ Facter.add(:uptime_seconds) do
18
+ setcode { Facter::Util::Uptime.get_uptime_seconds_unix }
19
+ end
20
+
21
+ Facter.add(:uptime_seconds) do
22
+ confine :kernel => :windows
23
+ setcode { Facter::Util::Uptime.get_uptime_seconds_win }
24
+ end
@@ -0,0 +1,19 @@
1
+ # A module to help test architecture facts on non-AIX test hardware
2
+
3
+ module Facter::Util::Architecture
4
+ ##
5
+ # lsattr is intended to directly delegate to Facter::Core::Execution.exec in
6
+ # an effort to make the processorX facts easier to test. See also the
7
+ # {lsdev} method.
8
+ def self.lsattr(command="lsattr -El proc0 -a type")
9
+ Facter::Core::Execution.exec(command)
10
+ end
11
+
12
+ ##
13
+ # kernel_fact_value is intended to directly delegate to Facter.value(:kernel)
14
+ # to make it easier to stub the kernel fact without affecting the entire
15
+ # system.
16
+ def self.kernel_fact_value
17
+ Facter.value(:kernel)
18
+ end
19
+ end
@@ -0,0 +1,161 @@
1
+ require 'facter'
2
+ require 'facter/util/fact'
3
+ require 'facter/util/loader'
4
+
5
+ # Manage which facts exist and how we access them. Largely just a wrapper
6
+ # around a hash of facts.
7
+ #
8
+ # @api private
9
+ class Facter::Util::Collection
10
+
11
+ def initialize(internal_loader, external_loader)
12
+ @facts = Hash.new
13
+ @internal_loader = internal_loader
14
+ @external_loader = external_loader
15
+ end
16
+
17
+ # Return a fact object by name.
18
+ def [](name)
19
+ value(name)
20
+ end
21
+
22
+ # Define a new fact or extend an existing fact.
23
+ #
24
+ # @param name [Symbol] The name of the fact to define
25
+ # @param options [Hash] A hash of options to set on the fact
26
+ #
27
+ # @return [Facter::Util::Fact] The fact that was defined
28
+ def define_fact(name, options = {}, &block)
29
+ fact = create_or_return_fact(name, options)
30
+
31
+ if block_given?
32
+ fact.instance_eval(&block)
33
+ end
34
+
35
+ fact
36
+ rescue => e
37
+ Facter.log_exception(e, "Unable to add fact #{name}: #{e}")
38
+ end
39
+
40
+ # Add a resolution mechanism for a named fact. This does not distinguish
41
+ # between adding a new fact and adding a new way to resolve a fact.
42
+ #
43
+ # @param name [Symbol] The name of the fact to define
44
+ # @param options [Hash] A hash of options to set on the fact and resolution
45
+ #
46
+ # @return [Facter::Util::Fact] The fact that was defined
47
+ def add(name, options = {}, &block)
48
+ fact = create_or_return_fact(name, options)
49
+
50
+ fact.add(options, &block)
51
+
52
+ return fact
53
+ end
54
+
55
+ include Enumerable
56
+
57
+ # Iterate across all of the facts.
58
+ def each
59
+ load_all
60
+ @facts.each do |name, fact|
61
+ value = fact.value
62
+ unless value.nil?
63
+ yield name.to_s, value
64
+ end
65
+ end
66
+ end
67
+
68
+ # Return a fact by name.
69
+ def fact(name)
70
+ name = canonicalize(name)
71
+
72
+ # Try to load the fact if necessary
73
+ load(name) unless @facts[name]
74
+
75
+ # Try HARDER
76
+ internal_loader.load_all unless @facts[name]
77
+
78
+ if @facts.empty?
79
+ Facter.warnonce("No facts loaded from #{internal_loader.search_path.join(File::PATH_SEPARATOR)}")
80
+ end
81
+
82
+ @facts[name]
83
+ end
84
+
85
+ # Flush all cached values.
86
+ def flush
87
+ @facts.each { |name, fact| fact.flush }
88
+ @external_facts_loaded = nil
89
+ end
90
+
91
+ # Return a list of all of the facts.
92
+ def list
93
+ load_all
94
+ return @facts.keys
95
+ end
96
+
97
+ def load(name)
98
+ internal_loader.load(name)
99
+ load_external_facts
100
+ end
101
+
102
+ # Load all known facts.
103
+ def load_all
104
+ internal_loader.load_all
105
+ load_external_facts
106
+ end
107
+
108
+ def internal_loader
109
+ @internal_loader
110
+ end
111
+
112
+ def external_loader
113
+ @external_loader
114
+ end
115
+
116
+ # Return a hash of all of our facts.
117
+ def to_hash
118
+ @facts.inject({}) do |h, ary|
119
+ value = ary[1].value
120
+ if ! value.nil?
121
+ # For backwards compatibility, convert the fact name to a string.
122
+ h[ary[0].to_s] = value
123
+ end
124
+ h
125
+ end
126
+ end
127
+
128
+ def value(name)
129
+ if fact = fact(name)
130
+ fact.value
131
+ end
132
+ end
133
+
134
+ private
135
+
136
+ def create_or_return_fact(name, options)
137
+ name = canonicalize(name)
138
+
139
+ fact = @facts[name]
140
+
141
+ if fact.nil?
142
+ fact = Facter::Util::Fact.new(name, options)
143
+ @facts[name] = fact
144
+ else
145
+ fact.extract_ldapname_option!(options)
146
+ end
147
+
148
+ fact
149
+ end
150
+
151
+ def canonicalize(name)
152
+ name.to_s.downcase.to_sym
153
+ end
154
+
155
+ def load_external_facts
156
+ if ! @external_facts_loaded
157
+ @external_facts_loaded = true
158
+ external_loader.load(self)
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,12 @@
1
+ # A composite loader that allows for more than one
2
+ # default directory loader
3
+
4
+ class Facter::Util::CompositeLoader
5
+ def initialize(loaders)
6
+ @loaders = loaders
7
+ end
8
+
9
+ def load(collection)
10
+ @loaders.each { |loader| loader.load(collection) }
11
+ end
12
+ end
@@ -0,0 +1,61 @@
1
+ require 'rbconfig'
2
+
3
+ # A module to return config related data
4
+ #
5
+ module Facter::Util::Config
6
+
7
+ def self.ext_fact_loader
8
+ @ext_fact_loader || Facter::Util::DirectoryLoader.default_loader
9
+ end
10
+
11
+ def self.ext_fact_loader=(loader)
12
+ @ext_fact_loader = loader
13
+ end
14
+
15
+ def self.is_mac?
16
+ RbConfig::CONFIG['host_os'] =~ /darwin/i
17
+ end
18
+
19
+ # Returns true if OS is windows
20
+ def self.is_windows?
21
+ RbConfig::CONFIG['host_os'] =~ /mswin|win32|dos|mingw|cygwin/i
22
+ end
23
+
24
+ def self.windows_data_dir
25
+ if Dir.const_defined? 'COMMON_APPDATA' then
26
+ Dir::COMMON_APPDATA
27
+ else
28
+ nil
29
+ end
30
+ end
31
+
32
+ def self.external_facts_dirs=(dir)
33
+ @external_facts_dirs = dir
34
+ end
35
+
36
+ def self.external_facts_dirs
37
+ @external_facts_dirs
38
+ end
39
+
40
+ def self.setup_default_ext_facts_dirs
41
+ if Facter::Util::Root.root?
42
+ windows_dir = windows_data_dir
43
+ if windows_dir.nil? then
44
+ @external_facts_dirs = ["/etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"]
45
+ else
46
+ @external_facts_dirs = [File.join(windows_dir, 'PuppetLabs', 'facter', 'facts.d')]
47
+ end
48
+ else
49
+ @external_facts_dirs = [File.expand_path(File.join("~", ".facter", "facts.d"))]
50
+ end
51
+ end
52
+
53
+ if Facter::Util::Config.is_windows?
54
+ require 'win32/dir'
55
+ require 'facter/util/windows_root'
56
+ else
57
+ require 'facter/util/unix_root'
58
+ end
59
+
60
+ setup_default_ext_facts_dirs
61
+ end
@@ -0,0 +1,66 @@
1
+ # A restricting tag for fact resolution mechanisms. The tag must be true
2
+ # for the resolution mechanism to be suitable.
3
+
4
+ require 'facter/util/values'
5
+
6
+ class Facter::Util::Confine
7
+ attr_accessor :fact, :values
8
+
9
+ include Facter::Util::Values
10
+
11
+ # Add the restriction. Requires the fact name, an operator, and the value
12
+ # we're comparing to.
13
+ #
14
+ # @param fact [Symbol] Name of the fact
15
+ # @param values [Array] One or more values to match against.
16
+ # They can be any type that provides a === method.
17
+ # @param block [Proc] Alternatively a block can be supplied as a check. The fact
18
+ # value will be passed as the argument to the block. If the block returns
19
+ # true then the fact will be enabled, otherwise it will be disabled.
20
+ def initialize(fact = nil, *values, &block)
21
+ raise ArgumentError, "The fact name must be provided" unless fact or block_given?
22
+ if values.empty? and not block_given?
23
+ raise ArgumentError, "One or more values or a block must be provided"
24
+ end
25
+ @fact = fact
26
+ @values = values
27
+ @block = block
28
+ end
29
+
30
+ def to_s
31
+ return @block.to_s if @block
32
+ return "'%s' '%s'" % [@fact, @values.join(",")]
33
+ end
34
+
35
+ # Evaluate the fact, returning true or false.
36
+ # if we have a block paramter then we only evaluate that instead
37
+ def true?
38
+ if @block and not @fact then
39
+ begin
40
+ return !! @block.call
41
+ rescue StandardError => error
42
+ Facter.debug "Confine raised #{error.class} #{error}"
43
+ return false
44
+ end
45
+ end
46
+
47
+ unless fact = Facter[@fact]
48
+ Facter.debug "No fact for %s" % @fact
49
+ return false
50
+ end
51
+ value = convert(fact.value)
52
+
53
+ return false if value.nil?
54
+
55
+ if @block then
56
+ begin
57
+ return !! @block.call(value)
58
+ rescue StandardError => error
59
+ Facter.debug "Confine raised #{error.class} #{error}"
60
+ return false
61
+ end
62
+ end
63
+
64
+ return @values.any? do |v| convert(v) === value end
65
+ end
66
+ end