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,162 @@
1
+ # Fact: memory
2
+ #
3
+ # Purpose: Return information about memory and swap usage.
4
+ #
5
+ # Resolution:
6
+ # On Linuxes, uses Facter::Memory.meminfo_number from
7
+ # 'facter/util/memory.rb'
8
+ # On AIX, parses "swap -l" for swap values only.
9
+ # On OpenBSD, it parses "swapctl -l" for swap values, vmstat via a module for
10
+ # free memory, and "sysctl hw.physmem" for maximum memory.
11
+ # On FreeBSD, it parses "swapinfo -k" for swap values, and parses sysctl for
12
+ # maximum memory.
13
+ # On Solaris, use "swap -l" for swap values, and parsing prtconf for maximum
14
+ # memory, and again, the vmstat module for free memory.
15
+ #
16
+ # Caveats:
17
+ # Some BSD platforms aren't covered at all. AIX is missing memory values.
18
+ #
19
+
20
+ # memory.rb
21
+ # Additional Facts for memory/swap usage
22
+ #
23
+ # Copyright (C) 2006 Mooter Media Ltd
24
+ # Author: Matthew Palmer <matt@solutionsfirst.com.au>
25
+ #
26
+ #
27
+
28
+ require 'facter/util/memory'
29
+
30
+ [ "memorysize",
31
+ "memoryfree",
32
+ "swapsize",
33
+ "swapfree"
34
+ ].each do |fact|
35
+ Facter.add(fact) do
36
+ setcode do
37
+ name = Facter.fact(fact + "_mb").value
38
+ Facter::Memory.scale_number(name.to_f, "MB") if name
39
+ end
40
+ end
41
+ end
42
+
43
+ Facter.add("swapsize_mb") do
44
+ setcode do
45
+ swaptotal = Facter::Memory.swap_size
46
+ "%.2f" % [swaptotal] if swaptotal
47
+ end
48
+ end
49
+
50
+ Facter.add("swapfree_mb") do
51
+ setcode do
52
+ swapfree = Facter::Memory.swap_free
53
+ "%.2f" % [swapfree] if swapfree
54
+ end
55
+ end
56
+
57
+ Facter.add("memorysize_mb") do
58
+ setcode do
59
+ memtotal = Facter::Memory.mem_size
60
+ "%.2f" % [memtotal] if memtotal
61
+ end
62
+ end
63
+
64
+ Facter.add("memoryfree_mb") do
65
+ setcode do
66
+ memfree = Facter::Memory.mem_free
67
+ "%.2f" % [memfree] if memfree
68
+ end
69
+ end
70
+
71
+ { :memorysize_mb => "MemTotal",
72
+ :memoryfree_mb => "MemFree",
73
+ :swapsize_mb => "SwapTotal",
74
+ :swapfree_mb => "SwapFree"
75
+ }.each do |fact, name|
76
+ Facter.add(fact) do
77
+ confine :kernel => [ :linux, :"gnu/kfreebsd" ]
78
+ setcode do
79
+ meminfo = Facter::Memory.meminfo_number(name)
80
+ "%.2f" % [meminfo]
81
+ end
82
+ end
83
+ end
84
+
85
+ if Facter.value(:kernel) == "Darwin"
86
+ Facter.add("SwapEncrypted") do
87
+ confine :kernel => :Darwin
88
+ setcode do
89
+ swap = Facter::Core::Execution.exec('sysctl vm.swapusage')
90
+ encrypted = false
91
+ if swap =~ /\(encrypted\)/ then encrypted = true; end
92
+ encrypted
93
+ end
94
+ end
95
+ end
96
+
97
+ if Facter.value(:kernel) == "SunOS"
98
+
99
+ Facter.add("memorysize_mb") do
100
+ confine :kernel => :sunos
101
+ # Total memory size available from prtconf
102
+ pconf = Facter::Core::Execution.exec('/usr/sbin/prtconf 2>/dev/null')
103
+ phymem = ""
104
+ pconf.each_line do |line|
105
+ if line =~ /^Memory size:\s+(\d+) Megabytes/
106
+ phymem = $1
107
+ end
108
+ end
109
+ setcode do
110
+ "%.2f" % [phymem.to_f]
111
+ end
112
+ end
113
+ end
114
+
115
+ if Facter.value(:kernel) == "windows"
116
+ require 'facter/util/wmi'
117
+
118
+ Facter.add("memorysize_mb") do
119
+ confine :kernel => :windows
120
+ setcode do
121
+ mem = 0
122
+ Facter::Util::WMI.execquery("select TotalPhysicalMemory from Win32_ComputerSystem").each do |comp|
123
+ mem = comp.TotalPhysicalMemory
124
+ break
125
+ end
126
+ "%.2f" % [(mem.to_f / 1024.0) / 1024.0]
127
+ end
128
+ end
129
+
130
+ Facter.add("memoryfree_mb") do
131
+ confine :kernel => :windows
132
+ setcode do
133
+ mem = 0
134
+ Facter::Util::WMI.execquery("select FreePhysicalMemory from Win32_OperatingSystem").each do |os|
135
+ mem = os.FreePhysicalMemory
136
+ break
137
+ end
138
+ "%.2f" % [mem.to_f / 1024.0]
139
+ end
140
+ end
141
+ end
142
+
143
+ Facter.add("swapsize_mb") do
144
+ confine :kernel => :dragonfly
145
+ setcode do
146
+ page_size = Facter::Core::Execution.exec("/sbin/sysctl -n hw.pagesize").to_f
147
+ swaptotal = Facter::Core::Execution.exec("/sbin/sysctl -n vm.swap_size").to_f * page_size
148
+ "%.2f" % [(swaptotal.to_f / 1024.0) / 1024.0]
149
+ end
150
+ end
151
+
152
+ Facter.add("swapfree_mb") do
153
+ confine :kernel => :dragonfly
154
+ setcode do
155
+ page_size = Facter::Core::Execution.exec("/sbin/sysctl -n hw.pagesize").to_f
156
+ swaptotal = Facter::Core::Execution.exec("/sbin/sysctl -n vm.swap_size").to_f * page_size
157
+ swap_anon_use = Facter::Core::Execution.exec("/sbin/sysctl -n vm.swap_anon_use").to_f * page_size
158
+ swap_cache_use = Facter::Core::Execution.exec("/sbin/sysctl -n vm.swap_cache_use").to_f * page_size
159
+ swapfree = swaptotal - swap_anon_use - swap_cache_use
160
+ "%.2f" % [(swapfree.to_f / 1024.0) / 1024.0]
161
+ end
162
+ end
@@ -0,0 +1,42 @@
1
+ # Fact: netmask
2
+ #
3
+ # Purpose: Returns the netmask for the main interfaces.
4
+ #
5
+ # Resolution: Uses the facter/util/netmask library routines.
6
+ #
7
+ # Caveats:
8
+ #
9
+ # netmask.rb
10
+ # Find the netmask of the primary ipaddress
11
+ # Copyright (C) 2007 David Schmitt <david@schmitt.edv-bus.at>
12
+ # Copyright (C) 2007 Mark 'phips' Phillips
13
+ #
14
+ # idea and originial source by Mark 'phips' Phillips
15
+ #
16
+ require 'facter/util/netmask'
17
+
18
+ Facter.add("netmask") do
19
+ confine :kernel => [ :sunos, :linux, :freebsd, :openbsd, :netbsd, :darwin, :"gnu/kfreebsd", :dragonfly ]
20
+ setcode do
21
+ Facter::NetMask.get_netmask
22
+ end
23
+ end
24
+
25
+ Facter.add(:netmask) do
26
+ confine :kernel => :windows
27
+ setcode do
28
+ require 'facter/util/ip/windows'
29
+
30
+ mask = nil
31
+
32
+ adapters = Facter::Util::IP::Windows.get_preferred_ipv4_adapters
33
+ adapters.find do |nic|
34
+ nic.IPSubnet.any? do |subnet|
35
+ mask = subnet if Facter::Util::IP::Windows.valid_ipv4_address?(subnet)
36
+ mask
37
+ end
38
+ end
39
+
40
+ mask
41
+ end
42
+ end
@@ -0,0 +1,20 @@
1
+ # Fact: network
2
+ #
3
+ # Purpose:
4
+ # Get IP, network and netmask information for available network
5
+ # interfacs.
6
+ #
7
+ # Resolution:
8
+ # Uses 'facter/util/ip' to enumerate interfaces and return their information.
9
+ #
10
+ # Caveats:
11
+ #
12
+ require 'facter/util/ip'
13
+
14
+ Facter::Util::IP.get_interfaces.each do |interface|
15
+ Facter.add("network_" + Facter::Util::IP.alphafy(interface)) do
16
+ setcode do
17
+ Facter::Util::IP.get_network_value(interface)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,121 @@
1
+ # Fact: operatingsystem
2
+ #
3
+ # Purpose: Return the name of the operating system.
4
+ #
5
+ # Resolution:
6
+ # If the kernel is a Linux kernel, check for the existence of a selection of
7
+ # files in /etc/ to find the specific flavour.
8
+ # On SunOS based kernels, attempt to determine the flavour, otherwise return Solaris.
9
+ # On systems other than Linux, use the kernel value.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:operatingsystem) do
15
+ confine :kernel => :sunos
16
+ setcode do
17
+ # Use uname -v because /etc/release can change in zones under SmartOS.
18
+ # It's apparently not trustworthy enough to rely on for this fact.
19
+ output = Facter::Core::Execution.exec('uname -v')
20
+ if output =~ /^joyent_/
21
+ "SmartOS"
22
+ elsif output =~ /^oi_/
23
+ "OpenIndiana"
24
+ elsif output =~ /^omnios-/
25
+ "OmniOS"
26
+ elsif FileTest.exists?("/etc/debian_version")
27
+ "Nexenta"
28
+ else
29
+ "Solaris"
30
+ end
31
+ end
32
+ end
33
+
34
+ Facter.add(:operatingsystem) do
35
+ confine :kernel => :linux
36
+ setcode do
37
+ if Facter.value(:lsbdistid) == "Ubuntu"
38
+ "Ubuntu"
39
+ elsif FileTest.exists?("/etc/debian_version")
40
+ "Debian"
41
+ elsif FileTest.exists?("/etc/openwrt_release")
42
+ "OpenWrt"
43
+ elsif FileTest.exists?("/etc/gentoo-release")
44
+ "Gentoo"
45
+ elsif FileTest.exists?("/etc/fedora-release")
46
+ "Fedora"
47
+ elsif FileTest.exists?("/etc/mandriva-release")
48
+ "Mandriva"
49
+ elsif FileTest.exists?("/etc/mandrake-release")
50
+ "Mandrake"
51
+ elsif FileTest.exists?("/etc/meego-release")
52
+ "MeeGo"
53
+ elsif FileTest.exists?("/etc/arch-release")
54
+ "Archlinux"
55
+ elsif FileTest.exists?("/etc/oracle-release")
56
+ "OracleLinux"
57
+ elsif FileTest.exists?("/etc/enterprise-release")
58
+ if FileTest.exists?("/etc/ovs-release")
59
+ "OVS"
60
+ else
61
+ "OEL"
62
+ end
63
+ elsif FileTest.exists?("/etc/vmware-release")
64
+ "VMWareESX"
65
+ elsif FileTest.exists?("/etc/redhat-release")
66
+ txt = File.read("/etc/redhat-release")
67
+ if txt =~ /centos/i
68
+ "CentOS"
69
+ elsif txt =~ /CERN/
70
+ "SLC"
71
+ elsif txt =~ /scientific/i
72
+ "Scientific"
73
+ elsif txt =~ /^cloudlinux/i
74
+ "CloudLinux"
75
+ elsif txt =~ /^Parallels Server Bare Metal/i
76
+ "PSBM"
77
+ elsif txt =~ /Ascendos/i
78
+ "Ascendos"
79
+ elsif txt =~ /^XenServer/i
80
+ "XenServer"
81
+ else
82
+ "RedHat"
83
+ end
84
+ elsif FileTest.exists?("/etc/SuSE-release")
85
+ txt = File.read("/etc/SuSE-release")
86
+ if txt =~ /^SUSE LINUX Enterprise Server/i
87
+ "SLES"
88
+ elsif txt =~ /^SUSE LINUX Enterprise Desktop/i
89
+ "SLED"
90
+ elsif txt =~ /^openSUSE/i
91
+ "OpenSuSE"
92
+ else
93
+ "SuSE"
94
+ end
95
+ elsif FileTest.exists?("/etc/bluewhite64-version")
96
+ "Bluewhite64"
97
+ elsif FileTest.exists?("/etc/slamd64-version")
98
+ "Slamd64"
99
+ elsif FileTest.exists?("/etc/slackware-version")
100
+ "Slackware"
101
+ elsif FileTest.exists?("/etc/alpine-release")
102
+ "Alpine"
103
+ elsif FileTest.exists?("/etc/mageia-release")
104
+ "Mageia"
105
+ elsif FileTest.exists?("/etc/system-release")
106
+ "Amazon"
107
+ end
108
+ end
109
+ end
110
+
111
+ Facter.add(:operatingsystem) do
112
+ confine :kernel => "VMkernel"
113
+ setcode do
114
+ "ESXi"
115
+ end
116
+ end
117
+
118
+ Facter.add(:operatingsystem) do
119
+ # Default to just returning the kernel as the operating system
120
+ setcode do Facter[:kernel].value end
121
+ end
@@ -0,0 +1,33 @@
1
+ # Fact: operatingsystemmajrelease
2
+ #
3
+ # Purpose: Returns the major release of the operating system.
4
+ #
5
+ # Resolution: splits down the operatingsystemrelease fact at decimal point for
6
+ # osfamily RedHat derivatives and Debian.
7
+ #
8
+ # This should be the same as lsbmajdistrelease, but on minimal systems there
9
+ # are too many dependencies to use LSB
10
+ #
11
+ # List of operatingsystems at time of writing:
12
+ #"Alpine" "Amazon" "Archlinux" "Ascendos" "Bluewhite64" "CentOS" "CloudLinux"
13
+ #"Debian" "Fedora" "Gentoo" "Mandrake" "Mandriva" "MeeGo" "OEL" "OpenSuSE"
14
+ #"OracleLinux" "OVS" "PSBM" "RedHat" "Scientific" "Slackware" "Slamd64" "SLC"
15
+ #"SLED" "SLES" "SuSE" "Ubuntu" "VMWareESX"
16
+ Facter.add(:operatingsystemmajrelease) do
17
+ confine :operatingsystem => [
18
+ :Amazon,
19
+ :CentOS,
20
+ :CloudLinux,
21
+ :Debian,
22
+ :Fedora,
23
+ :OEL,
24
+ :OracleLinux,
25
+ :OVS,
26
+ :RedHat,
27
+ :Scientific,
28
+ :SLC
29
+ ]
30
+ setcode do
31
+ Facter.value('operatingsystemrelease').split('.').first
32
+ end
33
+ end
@@ -0,0 +1,226 @@
1
+ # Fact: operatingsystemrelease
2
+ #
3
+ # Purpose: Returns the release of the operating system.
4
+ #
5
+ # Resolution:
6
+ # On RedHat derivatives, returns their '/etc/<variant>-release' file.
7
+ # On Debian, returns '/etc/debian_version'.
8
+ # On Ubuntu, parses '/etc/lsb-release' for the release version.
9
+ # On Suse, derivatives, parses '/etc/SuSE-release' for a selection of version
10
+ # information.
11
+ # On Slackware, parses '/etc/slackware-version'.
12
+ # On Amazon Linux, returns the 'lsbdistrelease' value.
13
+ # On Mageia, parses '/etc/mageia-release' for the release version.
14
+ #
15
+ # On all remaining systems, returns the 'kernelrelease' value.
16
+ #
17
+ # Caveats:
18
+ #
19
+
20
+ require 'facter/util/file_read'
21
+
22
+ Facter.add(:operatingsystemrelease) do
23
+ confine :operatingsystem => %w{CentOS Fedora oel ovs OracleLinux RedHat MeeGo Scientific SLC Ascendos CloudLinux PSBM}
24
+ setcode do
25
+ case Facter.value(:operatingsystem)
26
+ when "CentOS", "RedHat", "Scientific", "SLC", "Ascendos", "CloudLinux", "PSBM", "XenServer"
27
+ releasefile = "/etc/redhat-release"
28
+ when "Fedora"
29
+ releasefile = "/etc/fedora-release"
30
+ when "MeeGo"
31
+ releasefile = "/etc/meego-release"
32
+ when "OracleLinux"
33
+ releasefile = "/etc/oracle-release"
34
+ when "OEL", "oel"
35
+ releasefile = "/etc/enterprise-release"
36
+ when "OVS", "ovs"
37
+ releasefile = "/etc/ovs-release"
38
+ end
39
+
40
+ if release = Facter::Util::FileRead.read(releasefile)
41
+ line = release.split("\n").first.chomp
42
+ if match = /\(Rawhide\)$/.match(line)
43
+ "Rawhide"
44
+ elsif match = /release (\d[\d.]*)/.match(line)
45
+ match[1]
46
+ end
47
+ end
48
+ end
49
+ end
50
+
51
+ Facter.add(:operatingsystemrelease) do
52
+ confine :operatingsystem => %w{Debian}
53
+ setcode do
54
+ if release = Facter::Util::FileRead.read('/etc/debian_version')
55
+ release.sub!(/\s*$/, '')
56
+ release
57
+ end
58
+ end
59
+ end
60
+
61
+ Facter.add(:operatingsystemrelease) do
62
+ confine :operatingsystem => %w{Ubuntu}
63
+ setcode do
64
+ if release = Facter::Util::FileRead.read('/etc/lsb-release')
65
+ if match = release.match(/DISTRIB_RELEASE=((\d+.\d+)(\.(\d+))?)/)
66
+ # Return only the major and minor version numbers. This behavior must
67
+ # be preserved for compatibility reasons.
68
+ match[2]
69
+ end
70
+ end
71
+ end
72
+ end
73
+
74
+ Facter.add(:operatingsystemrelease) do
75
+ confine :operatingsystem => %w{SLES SLED OpenSuSE}
76
+ setcode do
77
+ if release = Facter::Util::FileRead.read('/etc/SuSE-release')
78
+ if match = /^VERSION\s*=\s*(\d+)/.match(release)
79
+ releasemajor = match[1]
80
+ if match = /^PATCHLEVEL\s*=\s*(\d+)/.match(release)
81
+ releaseminor = match[1]
82
+ elsif match = /^VERSION\s=.*.(\d+)/.match(release)
83
+ releaseminor = match[1]
84
+ else
85
+ releaseminor = "0"
86
+ end
87
+ releasemajor + "." + releaseminor
88
+ else
89
+ "unknown"
90
+ end
91
+ end
92
+ end
93
+ end
94
+
95
+ Facter.add(:operatingsystemrelease) do
96
+ confine :operatingsystem => %w{OpenWrt}
97
+ setcode do
98
+ if release = Facter::Util::FileRead.read('/etc/openwrt_version')
99
+ if match = /^(\d+\.\d+.*)/.match(release)
100
+ match[1]
101
+ end
102
+ end
103
+ end
104
+ end
105
+
106
+ Facter.add(:operatingsystemrelease) do
107
+ confine :operatingsystem => %w{Slackware}
108
+ setcode do
109
+ if release = Facter::Util::FileRead.read('/etc/slackware-version')
110
+ if match = /Slackware ([0-9.]+)/.match(release)
111
+ match[1]
112
+ end
113
+ end
114
+ end
115
+ end
116
+
117
+ Facter.add(:operatingsystemrelease) do
118
+ confine :operatingsystem => %w{Mageia}
119
+ setcode do
120
+ if release = Facter::Util::FileRead.read('/etc/mageia-release')
121
+ if match = /Mageia release ([0-9.]+)/.match(release)
122
+ match[1]
123
+ end
124
+ end
125
+ end
126
+ end
127
+
128
+ Facter.add(:operatingsystemrelease) do
129
+ confine :operatingsystem => %w{Bluewhite64}
130
+ setcode do
131
+ if release = Facter::Util::FileRead.read('/etc/bluewhite64-version')
132
+ if match = /^\s*\w+\s+(\d+)\.(\d+)/.match(release)
133
+ match[1] + "." + match[2]
134
+ else
135
+ "unknown"
136
+ end
137
+ end
138
+ end
139
+ end
140
+
141
+ Facter.add(:operatingsystemrelease) do
142
+ confine :operatingsystem => %w{VMwareESX}
143
+ setcode do
144
+ release = Facter::Core::Execution.exec('vmware -v')
145
+ if match = /VMware ESX .*?(\d.*)/.match(release)
146
+ match[1]
147
+ end
148
+ end
149
+ end
150
+
151
+ Facter.add(:operatingsystemrelease) do
152
+ confine :operatingsystem => %w{Slamd64}
153
+ setcode do
154
+ if release = Facter::Util::FileRead.read('/etc/slamd64-version')
155
+ if match = /^\s*\w+\s+(\d+)\.(\d+)/.match(release)
156
+ match[1] + "." + match[2]
157
+ else
158
+ "unknown"
159
+ end
160
+ end
161
+ end
162
+ end
163
+
164
+ Facter.add(:operatingsystemrelease) do
165
+ confine :operatingsystem => :Alpine
166
+ setcode do
167
+ if release = Facter::Util::FileRead.read('/etc/alpine-release')
168
+ release.sub!(/\s*$/, '')
169
+ release
170
+ end
171
+ end
172
+ end
173
+
174
+ Facter.add(:operatingsystemrelease) do
175
+ confine :operatingsystem => %W{Amazon}
176
+ setcode do Facter[:lsbdistrelease].value end
177
+ end
178
+
179
+ Facter.add(:operatingsystemrelease) do
180
+ confine :osfamily => :solaris
181
+ setcode do
182
+ if release = Facter::Util::FileRead.read('/etc/release')
183
+ line = release.split("\n").first.chomp
184
+ if match = /\s+s(\d+)[sx]?(_u\d+)?.*(?:SPARC|X86)/.match(line)
185
+ match.captures.join('')
186
+ end
187
+ end
188
+ end
189
+ end
190
+
191
+ Facter.add(:operatingsystemrelease) do
192
+ confine :operatingsystem => :windows
193
+ setcode do
194
+ require 'facter/util/wmi'
195
+ result = nil
196
+ Facter::Util::WMI.execquery("SELECT version, producttype FROM Win32_OperatingSystem").each do |os|
197
+ result =
198
+ case os.version
199
+ when /^6\.2/
200
+ os.producttype == 1 ? "8" : "2012"
201
+ when /^6\.1/
202
+ os.producttype == 1 ? "7" : "2008 R2"
203
+ when /^6\.0/
204
+ os.producttype == 1 ? "Vista" : "2008"
205
+ when /^5\.2/
206
+ if os.producttype == 1
207
+ "XP"
208
+ else
209
+ begin
210
+ os.othertypedescription == "R2" ? "2003 R2" : "2003"
211
+ rescue NoMethodError
212
+ "2003"
213
+ end
214
+ end
215
+ else
216
+ Facter[:kernelrelease].value
217
+ end
218
+ break
219
+ end
220
+ result
221
+ end
222
+ end
223
+
224
+ Facter.add(:operatingsystemrelease) do
225
+ setcode do Facter[:kernelrelease].value end
226
+ end