facter 2.1.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of facter might be problematic. Click here for more details.

Files changed (440) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +53 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +20 -0
  9. data/etc/facter.conf +5 -0
  10. data/ext/build_defaults.yaml +24 -0
  11. data/ext/debian/changelog.erb +59 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +14 -0
  14. data/ext/debian/copyright +19 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/lintian-overrides +0 -0
  17. data/ext/debian/rules +10 -0
  18. data/ext/debian/source/format +1 -0
  19. data/ext/facter-diff +74 -0
  20. data/ext/ips/facter.p5m.erb +10 -0
  21. data/ext/ips/rules +7 -0
  22. data/ext/ips/transforms +18 -0
  23. data/ext/osx/file_mapping.yaml +27 -0
  24. data/ext/osx/preflight.erb +33 -0
  25. data/ext/osx/prototype.plist.erb +38 -0
  26. data/ext/project_data.yaml +36 -0
  27. data/ext/redhat/facter.spec.erb +220 -0
  28. data/ext/solaris/pkginfo +7 -0
  29. data/install.rb +380 -0
  30. data/lib/facter.rb +261 -0
  31. data/lib/facter/Cfkey.rb +42 -0
  32. data/lib/facter/application.rb +204 -0
  33. data/lib/facter/architecture.rb +50 -0
  34. data/lib/facter/augeasversion.rb +28 -0
  35. data/lib/facter/blockdevices.rb +105 -0
  36. data/lib/facter/core/aggregate.rb +220 -0
  37. data/lib/facter/core/directed_graph.rb +46 -0
  38. data/lib/facter/core/execution.rb +123 -0
  39. data/lib/facter/core/execution/base.rb +81 -0
  40. data/lib/facter/core/execution/posix.rb +50 -0
  41. data/lib/facter/core/execution/windows.rb +57 -0
  42. data/lib/facter/core/logging.rb +169 -0
  43. data/lib/facter/core/resolvable.rb +94 -0
  44. data/lib/facter/core/suitable.rb +113 -0
  45. data/lib/facter/dhcp_servers.rb +39 -0
  46. data/lib/facter/domain.rb +99 -0
  47. data/lib/facter/ec2.rb +44 -0
  48. data/lib/facter/ec2/rest.rb +130 -0
  49. data/lib/facter/facterversion.rb +15 -0
  50. data/lib/facter/filesystems.rb +38 -0
  51. data/lib/facter/fqdn.rb +24 -0
  52. data/lib/facter/gce.rb +16 -0
  53. data/lib/facter/gce/metadata.rb +87 -0
  54. data/lib/facter/hardwareisa.rb +20 -0
  55. data/lib/facter/hardwaremodel.rb +67 -0
  56. data/lib/facter/hostname.rb +31 -0
  57. data/lib/facter/id.rb +21 -0
  58. data/lib/facter/interfaces.rb +46 -0
  59. data/lib/facter/ipaddress.rb +171 -0
  60. data/lib/facter/ipaddress6.rb +82 -0
  61. data/lib/facter/iphostnumber.rb +29 -0
  62. data/lib/facter/kernel.rb +22 -0
  63. data/lib/facter/kernelmajversion.rb +23 -0
  64. data/lib/facter/kernelrelease.rb +50 -0
  65. data/lib/facter/kernelversion.rb +22 -0
  66. data/lib/facter/ldom.rb +47 -0
  67. data/lib/facter/lsbdistcodename.rb +16 -0
  68. data/lib/facter/lsbdistdescription.rb +25 -0
  69. data/lib/facter/lsbdistid.rb +16 -0
  70. data/lib/facter/lsbdistrelease.rb +16 -0
  71. data/lib/facter/lsbmajdistrelease.rb +27 -0
  72. data/lib/facter/lsbrelease.rb +16 -0
  73. data/lib/facter/macaddress.rb +97 -0
  74. data/lib/facter/macosx.rb +56 -0
  75. data/lib/facter/manufacturer.rb +68 -0
  76. data/lib/facter/memory.rb +168 -0
  77. data/lib/facter/netmask.rb +42 -0
  78. data/lib/facter/network.rb +20 -0
  79. data/lib/facter/operatingsystem.rb +141 -0
  80. data/lib/facter/operatingsystemmajrelease.rb +47 -0
  81. data/lib/facter/operatingsystemrelease.rb +250 -0
  82. data/lib/facter/osfamily.rb +37 -0
  83. data/lib/facter/partitions.rb +35 -0
  84. data/lib/facter/path.rb +14 -0
  85. data/lib/facter/physicalprocessorcount.rb +91 -0
  86. data/lib/facter/processor.rb +168 -0
  87. data/lib/facter/ps.rb +30 -0
  88. data/lib/facter/puppetversion.rb +20 -0
  89. data/lib/facter/rubysitedir.rb +12 -0
  90. data/lib/facter/rubyversion.rb +12 -0
  91. data/lib/facter/selinux.rb +99 -0
  92. data/lib/facter/ssh.rb +72 -0
  93. data/lib/facter/timezone.rb +14 -0
  94. data/lib/facter/uniqueid.rb +4 -0
  95. data/lib/facter/uptime.rb +34 -0
  96. data/lib/facter/uptime_days.rb +15 -0
  97. data/lib/facter/uptime_hours.rb +15 -0
  98. data/lib/facter/uptime_seconds.rb +24 -0
  99. data/lib/facter/util/architecture.rb +19 -0
  100. data/lib/facter/util/collection.rb +161 -0
  101. data/lib/facter/util/composite_loader.rb +12 -0
  102. data/lib/facter/util/config.rb +63 -0
  103. data/lib/facter/util/confine.rb +66 -0
  104. data/lib/facter/util/dhcp_servers.rb +43 -0
  105. data/lib/facter/util/directory_loader.rb +83 -0
  106. data/lib/facter/util/ec2.rb +106 -0
  107. data/lib/facter/util/fact.rb +204 -0
  108. data/lib/facter/util/file_read.rb +37 -0
  109. data/lib/facter/util/formatter.rb +39 -0
  110. data/lib/facter/util/ip.rb +285 -0
  111. data/lib/facter/util/ip/windows.rb +215 -0
  112. data/lib/facter/util/loader.rb +155 -0
  113. data/lib/facter/util/macaddress.rb +43 -0
  114. data/lib/facter/util/macosx.rb +73 -0
  115. data/lib/facter/util/manufacturer.rb +99 -0
  116. data/lib/facter/util/memory.rb +228 -0
  117. data/lib/facter/util/netmask.rb +40 -0
  118. data/lib/facter/util/normalization.rb +94 -0
  119. data/lib/facter/util/nothing_loader.rb +12 -0
  120. data/lib/facter/util/operatingsystem.rb +21 -0
  121. data/lib/facter/util/parser.rb +158 -0
  122. data/lib/facter/util/partitions.rb +41 -0
  123. data/lib/facter/util/partitions/linux.rb +65 -0
  124. data/lib/facter/util/plist.rb +24 -0
  125. data/lib/facter/util/plist/generator.rb +228 -0
  126. data/lib/facter/util/plist/parser.rb +226 -0
  127. data/lib/facter/util/posix.rb +16 -0
  128. data/lib/facter/util/processor.rb +289 -0
  129. data/lib/facter/util/registry.rb +11 -0
  130. data/lib/facter/util/resolution.rb +160 -0
  131. data/lib/facter/util/solaris_zones.rb +158 -0
  132. data/lib/facter/util/unix_root.rb +5 -0
  133. data/lib/facter/util/uptime.rb +81 -0
  134. data/lib/facter/util/values.rb +109 -0
  135. data/lib/facter/util/virtual.rb +180 -0
  136. data/lib/facter/util/vlans.rb +21 -0
  137. data/lib/facter/util/windows_root.rb +7 -0
  138. data/lib/facter/util/wmi.rb +16 -0
  139. data/lib/facter/util/xendomains.rb +10 -0
  140. data/lib/facter/version.rb +86 -0
  141. data/lib/facter/virtual.rb +311 -0
  142. data/lib/facter/vlans.rb +17 -0
  143. data/lib/facter/xendomains.rb +20 -0
  144. data/lib/facter/zfs_version.rb +10 -0
  145. data/lib/facter/zonename.rb +6 -0
  146. data/lib/facter/zones.rb +17 -0
  147. data/lib/facter/zpool_version.rb +10 -0
  148. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  149. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  150. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  151. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  152. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  153. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  154. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  155. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  156. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  157. data/spec/fixtures/cpuinfo/sparc +10 -0
  158. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  159. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  160. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  161. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  162. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  163. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  164. data/spec/fixtures/hpux/sched.models +174 -0
  165. data/spec/fixtures/hpux/unistd.h +1534 -0
  166. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  167. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  168. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  169. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  170. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  171. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  172. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  173. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  174. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  175. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  176. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  177. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  178. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  179. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  180. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  181. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  182. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  183. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  184. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  185. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  186. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  187. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  188. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  189. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  190. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  191. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  192. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  193. data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
  194. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  195. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  196. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  197. data/spec/fixtures/ldom/ldom_v1 +6 -0
  198. data/spec/fixtures/netstat/centos_5_5 +5 -0
  199. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  200. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  201. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  202. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  203. data/spec/fixtures/netstat/fedora_10 +7 -0
  204. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  205. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  206. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  207. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  208. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  209. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  210. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
  211. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
  212. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
  213. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
  214. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
  215. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
  216. data/spec/fixtures/unit/dhcp_servers/route +3 -0
  217. data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
  218. data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
  219. data/spec/fixtures/unit/filesystems/linux +28 -0
  220. data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
  221. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  222. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  223. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  224. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  225. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  226. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  227. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  228. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
  229. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
  230. data/spec/fixtures/unit/memory/aix-svmon +9 -0
  231. data/spec/fixtures/unit/memory/aix-swap_l +2 -0
  232. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
  233. data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
  234. data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
  235. data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
  236. data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
  237. data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
  238. data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
  239. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
  240. data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
  241. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
  242. data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
  243. data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
  244. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  245. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
  246. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  247. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  248. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  249. data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
  250. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
  251. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  252. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  253. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  254. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  255. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  256. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  257. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  258. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  259. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  260. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  261. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  262. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  263. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  264. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  265. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  266. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  267. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  268. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  269. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  270. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  271. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  272. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  273. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  274. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  275. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  276. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  277. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  278. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  279. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  280. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  281. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  282. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  283. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  284. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  285. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  286. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  287. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  288. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  289. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  290. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  291. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  292. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  293. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  294. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  295. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  296. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  297. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  298. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
  299. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  300. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  301. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
  302. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
  303. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
  304. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
  305. data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
  306. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  307. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  308. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  309. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  310. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  311. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  312. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  313. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  314. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  315. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
  316. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  317. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  318. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  319. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  320. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  321. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  322. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  323. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  324. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  325. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  326. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  327. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  328. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  329. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
  330. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
  331. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
  332. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  333. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  334. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  335. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  336. data/spec/integration/facter_spec.rb +39 -0
  337. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  338. data/spec/lib/facter_spec/windows_network.rb +64 -0
  339. data/spec/puppetlabs_spec/files.rb +57 -0
  340. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  341. data/spec/puppetlabs_spec/matchers.rb +87 -0
  342. data/spec/puppetlabs_spec/verbose.rb +9 -0
  343. data/spec/puppetlabs_spec_helper.rb +26 -0
  344. data/spec/shared_contexts/platform.rb +55 -0
  345. data/spec/shared_formats/parses.rb +3 -0
  346. data/spec/spec_helper.rb +75 -0
  347. data/spec/unit/application_spec.rb +101 -0
  348. data/spec/unit/architecture_spec.rb +63 -0
  349. data/spec/unit/blockdevices_spec.rb +109 -0
  350. data/spec/unit/core/aggregate_spec.rb +125 -0
  351. data/spec/unit/core/directed_graph_spec.rb +79 -0
  352. data/spec/unit/core/execution/base_spec.rb +130 -0
  353. data/spec/unit/core/execution/posix_spec.rb +86 -0
  354. data/spec/unit/core/execution/windows_spec.rb +106 -0
  355. data/spec/unit/core/execution_spec.rb +42 -0
  356. data/spec/unit/core/logging_spec.rb +104 -0
  357. data/spec/unit/core/resolvable_spec.rb +81 -0
  358. data/spec/unit/core/suitable_spec.rb +106 -0
  359. data/spec/unit/dhcp_servers_spec.rb +152 -0
  360. data/spec/unit/domain_spec.rb +310 -0
  361. data/spec/unit/ec2/rest_spec.rb +145 -0
  362. data/spec/unit/ec2_spec.rb +127 -0
  363. data/spec/unit/facter_spec.rb +108 -0
  364. data/spec/unit/filesystems_spec.rb +50 -0
  365. data/spec/unit/fqdn_spec.rb +16 -0
  366. data/spec/unit/gce/metadata_spec.rb +49 -0
  367. data/spec/unit/gce_spec.rb +34 -0
  368. data/spec/unit/hardwareisa_spec.rb +41 -0
  369. data/spec/unit/hardwaremodel_spec.rb +56 -0
  370. data/spec/unit/hostname_spec.rb +40 -0
  371. data/spec/unit/id_spec.rb +29 -0
  372. data/spec/unit/interfaces_spec.rb +57 -0
  373. data/spec/unit/ipaddress6_spec.rb +161 -0
  374. data/spec/unit/ipaddress_spec.rb +114 -0
  375. data/spec/unit/kernel_spec.rb +24 -0
  376. data/spec/unit/kernelmajversion_spec.rb +22 -0
  377. data/spec/unit/kernelrelease_spec.rb +69 -0
  378. data/spec/unit/kernelversion_spec.rb +32 -0
  379. data/spec/unit/ldom_spec.rb +75 -0
  380. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  381. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  382. data/spec/unit/lsbdistid_spec.rb +25 -0
  383. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  384. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  385. data/spec/unit/lsbrelease_spec.rb +25 -0
  386. data/spec/unit/macaddress_spec.rb +73 -0
  387. data/spec/unit/manufacturer_spec.rb +115 -0
  388. data/spec/unit/memory_spec.rb +470 -0
  389. data/spec/unit/netmask_spec.rb +106 -0
  390. data/spec/unit/operatingsystem_spec.rb +160 -0
  391. data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
  392. data/spec/unit/operatingsystemrelease_spec.rb +236 -0
  393. data/spec/unit/osfamily_spec.rb +62 -0
  394. data/spec/unit/partitions_spec.rb +48 -0
  395. data/spec/unit/physicalprocessorcount_spec.rb +85 -0
  396. data/spec/unit/processor_spec.rb +401 -0
  397. data/spec/unit/ps_spec.rb +42 -0
  398. data/spec/unit/selinux_spec.rb +114 -0
  399. data/spec/unit/ssh_spec.rb +77 -0
  400. data/spec/unit/uniqueid_spec.rb +27 -0
  401. data/spec/unit/uptime_spec.rb +110 -0
  402. data/spec/unit/util/collection_spec.rb +258 -0
  403. data/spec/unit/util/config_spec.rb +97 -0
  404. data/spec/unit/util/confine_spec.rb +148 -0
  405. data/spec/unit/util/dhcp_servers_spec.rb +63 -0
  406. data/spec/unit/util/directory_loader_spec.rb +88 -0
  407. data/spec/unit/util/ec2_spec.rb +184 -0
  408. data/spec/unit/util/fact_spec.rb +142 -0
  409. data/spec/unit/util/file_read_spec.rb +29 -0
  410. data/spec/unit/util/formatter_spec.rb +50 -0
  411. data/spec/unit/util/ip/windows_spec.rb +80 -0
  412. data/spec/unit/util/ip_spec.rb +467 -0
  413. data/spec/unit/util/loader_spec.rb +286 -0
  414. data/spec/unit/util/macaddress_spec.rb +141 -0
  415. data/spec/unit/util/macosx_spec.rb +114 -0
  416. data/spec/unit/util/manufacturer_spec.rb +223 -0
  417. data/spec/unit/util/normalization_spec.rb +113 -0
  418. data/spec/unit/util/operatingsystem_spec.rb +92 -0
  419. data/spec/unit/util/parser_spec.rb +200 -0
  420. data/spec/unit/util/partitions/partitions_spec.rb +67 -0
  421. data/spec/unit/util/partitions_spec.rb +19 -0
  422. data/spec/unit/util/posix_spec.rb +11 -0
  423. data/spec/unit/util/processor_spec.rb +92 -0
  424. data/spec/unit/util/registry_spec.rb +76 -0
  425. data/spec/unit/util/resolution_spec.rb +129 -0
  426. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  427. data/spec/unit/util/uptime_spec.rb +126 -0
  428. data/spec/unit/util/values_spec.rb +171 -0
  429. data/spec/unit/util/virtual_spec.rb +364 -0
  430. data/spec/unit/util/vlans_spec.rb +42 -0
  431. data/spec/unit/util/wmi_spec.rb +19 -0
  432. data/spec/unit/util/xendomains_spec.rb +21 -0
  433. data/spec/unit/version_spec.rb +42 -0
  434. data/spec/unit/virtual_spec.rb +519 -0
  435. data/spec/unit/zfs_version_spec.rb +75 -0
  436. data/spec/unit/zonename_spec.rb +14 -0
  437. data/spec/unit/zones_spec.rb +55 -0
  438. data/spec/unit/zpool_version_spec.rb +75 -0
  439. data/spec/watchr.rb +125 -0
  440. metadata +815 -0
@@ -0,0 +1,15 @@
1
+ # Fact: facterversion
2
+ #
3
+ # Purpose: returns the version of the facter module.
4
+ #
5
+ # Resolution: Uses the Facter.version method.
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ Facter.add(:facterversion) do
11
+ setcode do
12
+ require 'facter/version'
13
+ Facter.version.to_s
14
+ end
15
+ end
@@ -0,0 +1,38 @@
1
+ #
2
+ # filesystems.rb
3
+ #
4
+ # This fact provides an alphabetic list of usable file systems that can
5
+ # be used for block devices like hard drives, media cards and so on ...
6
+ #
7
+ Facter.add('filesystems') do
8
+ confine :kernel => :linux
9
+ setcode do
10
+ # fuseblk can't be created and arguably isn't usable here. If you feel this
11
+ # doesn't match your use-case please raise a bug.
12
+ exclude = %w(fuseblk)
13
+
14
+ # Make regular expression form our patterns ...
15
+ exclude = Regexp.union(*exclude.collect { |i| Regexp.new(i) })
16
+
17
+ # We utilise rely on "cat" for reading values from entries under "/proc".
18
+ # This is due to some problems with IO#read in Ruby and reading content of
19
+ # the "proc" file system that was reported more than once in the past ...
20
+ file_systems = []
21
+ Facter::Core::Execution.exec('cat /proc/filesystems 2> /dev/null').each_line do |line|
22
+ # Remove bloat ...
23
+ line.strip!
24
+
25
+ # Line of interest should not start with "nodev" ...
26
+ next if line.empty? or line.match(/^nodev/)
27
+
28
+ # We have something, so let us apply our device type filter ...
29
+ next if line.match(exclude)
30
+
31
+ file_systems << line
32
+ end
33
+ file_systems.sort.join(',')
34
+ end
35
+ end
36
+
37
+ # vim: set ts=2 sw=2 et :
38
+ # encoding: utf-8
@@ -0,0 +1,24 @@
1
+ # Fact: fqdn
2
+ #
3
+ # Purpose: Returns the fully qualified domain name of the host.
4
+ #
5
+ # Resolution: Simply joins the hostname fact with the domain name fact.
6
+ #
7
+ # Caveats: No attempt is made to check that the two facts are accurate or that
8
+ # the two facts go together. At no point is there any DNS resolution made
9
+ # either.
10
+ #
11
+
12
+ Facter.add(:fqdn) do
13
+ setcode do
14
+ host = Facter.value(:hostname)
15
+ domain = Facter.value(:domain)
16
+ if host and domain
17
+ [host, domain].join(".")
18
+ elsif host
19
+ host
20
+ else
21
+ nil
22
+ end
23
+ end
24
+ end
data/lib/facter/gce.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'facter/gce/metadata'
2
+
3
+ Facter.define_fact(:gce) do
4
+ define_resolution(:rest) do
5
+ confine :virtual => 'gce'
6
+
7
+ confine do
8
+ Facter.json?
9
+ end
10
+
11
+ setcode do
12
+ querier = Facter::GCE::Metadata.new
13
+ querier.fetch
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,87 @@
1
+ require 'open-uri'
2
+
3
+ module Facter
4
+ module GCE
5
+
6
+ # @api private
7
+ class Metadata
8
+ CONNECTION_ERRORS = [
9
+ OpenURI::HTTPError,
10
+ Errno::EHOSTDOWN,
11
+ Errno::EHOSTUNREACH,
12
+ Errno::ENETUNREACH,
13
+ Errno::ECONNABORTED,
14
+ Errno::ECONNREFUSED,
15
+ Errno::ECONNRESET,
16
+ Errno::ETIMEDOUT,
17
+ Timeout::Error,
18
+ ]
19
+
20
+ METADATA_URL = "http://metadata/computeMetadata/v1beta1/?recursive=true&alt=json"
21
+
22
+ def initialize(url = METADATA_URL)
23
+ @url = url
24
+ end
25
+
26
+ def fetch
27
+ with_metadata_server do |body|
28
+ # This will only be reached if the confine associated with this class
29
+ # was true which means that JSON was required, but it's a bit
30
+ # questionable that we're relying on JSON being loaded as a side
31
+ # effect of that.
32
+ hash = ::JSON.parse(body)
33
+ transform_metadata!(hash)
34
+ hash
35
+ end
36
+ end
37
+
38
+ private
39
+
40
+ def with_metadata_server
41
+ retry_limit = 3
42
+ timeout = 0.05
43
+ body = nil
44
+ attempts = 0
45
+
46
+ begin
47
+ Timeout.timeout(timeout) do
48
+ body = open(@url).read
49
+ end
50
+ rescue *CONNECTION_ERRORS => e
51
+ attempts = attempts + 1
52
+ if attempts < retry_limit
53
+ retry
54
+ else
55
+ Facter.log_exception(e, "Unable to fetch metadata from #{@url}: #{e.message}")
56
+ return nil
57
+ end
58
+ end
59
+
60
+ if body
61
+ yield body
62
+ end
63
+ end
64
+
65
+ # @return [void]
66
+ def transform_metadata!(data)
67
+ case data
68
+ when Hash
69
+ data.keys.each do |key|
70
+ value = data[key]
71
+ if ["image", "machineType", "zone", "network"].include? key
72
+ data[key] = value.split('/').last
73
+ elsif key == "sshKeys"
74
+ data['sshKeys'] = value.split("\n")
75
+ end
76
+ transform_metadata!(value)
77
+ end
78
+ when Array
79
+ data.each do |value|
80
+ transform_metadata!(value)
81
+ end
82
+ end
83
+ nil
84
+ end
85
+ end
86
+ end
87
+ end
@@ -0,0 +1,20 @@
1
+ # Fact: hardwareisa
2
+ #
3
+ # Purpose:
4
+ # Returns hardware processor type.
5
+ #
6
+ # Resolution:
7
+ # On Solaris, AIX, Linux and the BSDs simply uses the output of "uname -p"
8
+ # On HP-UX, "uname -m" gives us the same information.
9
+ #
10
+ # Caveats:
11
+ # Some linuxes return unknown to uname -p with relative ease.
12
+ #
13
+
14
+ Facter.add(:hardwareisa) do
15
+ if Facter.value(:kernel) == 'HP-UX'
16
+ setcode 'uname -m'
17
+ else
18
+ setcode 'uname -p'
19
+ end
20
+ end
@@ -0,0 +1,67 @@
1
+ # Fact: hardwaremodel
2
+ #
3
+ # Purpose:
4
+ # Returns the hardware model of the system.
5
+ #
6
+ # Resolution:
7
+ # Uses purely "uname -m" on all platforms other than AIX and Windows.
8
+ # On AIX uses the parsed "modelname" output of "lsattr -El sys0 -a modelname".
9
+ # On Windows uses the 'host_cpu' pulled out of Ruby's config.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:hardwaremodel) do
15
+ setcode 'uname -m'
16
+ end
17
+
18
+ Facter.add(:hardwaremodel) do
19
+ confine :operatingsystem => :aix
20
+ setcode do
21
+ model = Facter::Core::Execution.exec('lsattr -El sys0 -a modelname')
22
+ if model =~ /modelname\s(\S+)\s/
23
+ $1
24
+ end
25
+ end
26
+ end
27
+
28
+ Facter.add(:hardwaremodel) do
29
+ confine :operatingsystem => :windows
30
+ setcode do
31
+ # The cryptic windows cpu architecture models are documented in these places:
32
+ # http://source.winehq.org/source/include/winnt.h#L568
33
+ # http://msdn.microsoft.com/en-us/library/windows/desktop/aa394373(v=vs.85).aspx
34
+ # http://msdn.microsoft.com/en-us/library/windows/desktop/windows.system.processorarchitecture.aspx
35
+ # http://linux.derkeiler.com/Mailing-Lists/Kernel/2008-05/msg12924.html (anything over 6 is still i686)
36
+ # Also, arm and neutral are included because they are valid for the upcoming
37
+ # windows 8 release. --jeffweiss 23 May 2012
38
+ require 'facter/util/wmi'
39
+ model = ""
40
+ architecture_level = nil
41
+
42
+ Facter::Util::WMI.execquery("select Architecture, Level, AddressWidth from Win32_Processor").each do |cpu|
43
+ architecture_level = (cpu.Level > 5) ? 6 : cpu.Level;
44
+
45
+ model =
46
+ case cpu.Architecture
47
+ when 11 then 'neutral' # PROCESSOR_ARCHITECTURE_NEUTRAL
48
+ when 10 then 'i686' # PROCESSOR_ARCHITECTURE_IA32_ON_WIN64
49
+ when 9 then # PROCESSOR_ARCHITECTURE_AMD64
50
+ cpu.AddressWidth == 32 ? "i#{architecture_level}86" : 'x64' # 32 bit OS on 64 bit CPU
51
+ when 8 then 'msil' # PROCESSOR_ARCHITECTURE_MSIL
52
+ when 7 then 'alpha64' # PROCESSOR_ARCHITECTURE_ALPHA64
53
+ when 6 then 'ia64' # PROCESSOR_ARCHITECTURE_IA64
54
+ when 5 then 'arm' # PROCESSOR_ARCHITECTURE_ARM
55
+ when 4 then 'shx' # PROCESSOR_ARCHITECTURE_SHX
56
+ when 3 then 'powerpc' # PROCESSOR_ARCHITECTURE_PPC
57
+ when 2 then 'alpha' # PROCESSOR_ARCHITECTURE_ALPHA
58
+ when 1 then 'mips' # PROCESSOR_ARCHITECTURE_MIPS
59
+ when 0 then "i#{architecture_level}86" # PROCESSOR_ARCHITECTURE_INTEL
60
+ else 'unknown' # PROCESSOR_ARCHITECTURE_UNKNOWN
61
+ end
62
+ break
63
+ end
64
+
65
+ model
66
+ end
67
+ end
@@ -0,0 +1,31 @@
1
+ # Fact: hostname
2
+ #
3
+ # Purpose: Return the system's short hostname.
4
+ #
5
+ # Resolution:
6
+ # On all system bar Darwin, parses the output of the "hostname" system command
7
+ # to everything before the first period.
8
+ # On Darwin, uses the system configuration util to get the LocalHostName
9
+ # variable.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:hostname) do
15
+ setcode do
16
+ hostname = nil
17
+ if name = Facter::Core::Execution.execute('hostname')
18
+ if name =~ /(.*?)\./
19
+ hostname = $1
20
+ else
21
+ hostname = name
22
+ end
23
+ end
24
+ hostname
25
+ end
26
+ end
27
+
28
+ Facter.add(:hostname) do
29
+ confine :kernel => :darwin, :kernelrelease => "R7"
30
+ setcode '/usr/sbin/scutil --get LocalHostName'
31
+ end
data/lib/facter/id.rb ADDED
@@ -0,0 +1,21 @@
1
+ # Fact: id
2
+ #
3
+ # Purpose: Internal fact used to specity the program to return the currently
4
+ # running user id.
5
+ #
6
+ # Resolution:
7
+ # On all Unixes bar Solaris, just returns "whoami".
8
+ # On Solaris, parses the output of the "id" command to grab the username, as
9
+ # Solaris doesn't have the whoami command.
10
+ #
11
+ # Caveats:
12
+ #
13
+
14
+ Facter.add(:id) do
15
+ setcode "whoami"
16
+ end
17
+
18
+ Facter.add(:id) do
19
+ confine :kernel => :SunOS
20
+ setcode "/usr/xpg4/bin/id -un"
21
+ end
@@ -0,0 +1,46 @@
1
+ # Fact: interfaces
2
+ #
3
+ # Purpose:
4
+ #
5
+ # Resolution:
6
+ #
7
+ # Caveats:
8
+ #
9
+
10
+ # interfaces.rb
11
+ # Try to get additional Facts about the machine's network interfaces
12
+ #
13
+ # Original concept Copyright (C) 2007 psychedelys <psychedelys@gmail.com>
14
+ # Update and *BSD support (C) 2007 James Turnbull <james@lovedthanlost.net>
15
+ #
16
+
17
+ require 'facter/util/ip'
18
+ require 'facter/util/macaddress'
19
+
20
+ # Note that most of this only works on a fixed list of platforms; notably, Darwin
21
+ # is missing.
22
+
23
+ Facter.add(:interfaces) do
24
+ confine :kernel => Facter::Util::IP.supported_platforms
25
+ setcode do
26
+ Facter::Util::IP.get_interfaces.collect { |iface| Facter::Util::IP.alphafy(iface) }.join(",")
27
+ end
28
+ end
29
+
30
+ Facter::Util::IP.get_interfaces.each do |interface|
31
+
32
+ # Make a fact for each detail of each interface. Yay.
33
+ # There's no point in confining these facts, since we wouldn't be able to create
34
+ # them if we weren't running on a supported platform.
35
+ %w{ipaddress ipaddress6 macaddress netmask mtu}.each do |label|
36
+ Facter.add(label + "_" + Facter::Util::IP.alphafy(interface)) do
37
+ setcode do
38
+ value = Facter::Util::IP.get_interface_value(interface, label)
39
+ if label == "macaddress"
40
+ value = Facter::Util::Macaddress.standardize(value)
41
+ end
42
+ value
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,171 @@
1
+ # Fact: ipaddress
2
+ #
3
+ # Purpose: Return the main IP address for a host.
4
+ #
5
+ # Resolution:
6
+ # On the Unixes does an ifconfig, and returns the first non 127.0.0.0/8
7
+ # subnetted IP it finds.
8
+ # On Windows, it attempts to use the socket library and resolve the machine's
9
+ # hostname via DNS.
10
+ #
11
+ # On LDAP based hosts it tries to use either the win32/resolv library to
12
+ # resolve the hostname to an IP address, or on Unix, it uses the resolv
13
+ # library.
14
+ #
15
+ # As a fall back for undefined systems, it tries to run the "host" command to
16
+ # resolve the machine's hostname using the system DNS.
17
+ #
18
+ # Caveats:
19
+ # DNS resolution relies on working DNS infrastructure and resolvers on the
20
+ # host system.
21
+ # The ifconfig parsing purely takes the first IP address it finds without any
22
+ # checking this is a useful IP address.
23
+ #
24
+
25
+ require 'facter/util/ip'
26
+
27
+ Facter.add(:ipaddress) do
28
+ confine :kernel => :linux
29
+ setcode do
30
+ ip = nil
31
+ output = Facter::Util::IP.exec_ifconfig(["2>/dev/null"])
32
+ if output
33
+ regexp = /inet (?:addr:)?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
34
+ output.split("\n").each do |line|
35
+ match = regexp.match(line)
36
+ if match and not /^127\./.match(match[1])
37
+ ip = match[1]
38
+ break
39
+ end
40
+ end
41
+ end
42
+ ip
43
+ end
44
+ end
45
+
46
+ Facter.add(:ipaddress) do
47
+ confine :kernel => %w{FreeBSD OpenBSD Darwin DragonFly}
48
+ setcode do
49
+ ip = nil
50
+ output = Facter::Util::IP.exec_ifconfig
51
+
52
+ output.split(/^\S/).each { |str|
53
+ if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
54
+ tmp = $1
55
+ unless tmp =~ /^127\./
56
+ ip = tmp
57
+ break
58
+ end
59
+ end
60
+ }
61
+
62
+ ip
63
+ end
64
+ end
65
+
66
+ Facter.add(:ipaddress) do
67
+ confine :kernel => %w{NetBSD SunOS}
68
+ setcode do
69
+ ip = nil
70
+ output = Facter::Util::IP.exec_ifconfig(["-a"])
71
+
72
+ output.split(/^\S/).each { |str|
73
+ if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
74
+ tmp = $1
75
+ unless tmp =~ /^127\./ or tmp == "0.0.0.0"
76
+ ip = tmp
77
+ break
78
+ end
79
+ end
80
+ }
81
+
82
+ ip
83
+ end
84
+ end
85
+
86
+ Facter.add(:ipaddress) do
87
+ confine :kernel => %w{AIX}
88
+ setcode do
89
+ ip = nil
90
+ output = Facter::Util::IP.exec_ifconfig(["-a"])
91
+
92
+ output.split(/^\S/).each { |str|
93
+ if str =~ /inet ([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/
94
+ tmp = $1
95
+ unless tmp =~ /^127\./
96
+ ip = tmp
97
+ break
98
+ end
99
+ end
100
+ }
101
+
102
+ ip
103
+ end
104
+ end
105
+
106
+ Facter.add(:ipaddress) do
107
+ confine :kernel => %w{windows}
108
+ setcode do
109
+ require 'facter/util/ip/windows'
110
+ ipaddr = nil
111
+
112
+ adapters = Facter::Util::IP::Windows.get_preferred_ipv4_adapters
113
+ adapters.find do |nic|
114
+ nic.IPAddress.any? do |addr|
115
+ ipaddr = addr if Facter::Util::IP::Windows.valid_ipv4_address?(addr)
116
+ ipaddr
117
+ end
118
+ end
119
+
120
+ ipaddr
121
+ end
122
+ end
123
+
124
+ Facter.add(:ipaddress, :timeout => 2) do
125
+ setcode do
126
+ if Facter.value(:kernel) == 'windows'
127
+ require 'win32/resolv'
128
+ else
129
+ require 'resolv'
130
+ end
131
+
132
+ begin
133
+ if hostname = Facter.value(:hostname)
134
+ if Facter.value(:kernel) == 'windows'
135
+ ip = Win32::Resolv.get_resolv_info.last[0]
136
+ else
137
+ ip = Resolv.getaddress(hostname)
138
+ end
139
+ unless ip == "127.0.0.1"
140
+ ip
141
+ end
142
+ else
143
+ nil
144
+ end
145
+ rescue Resolv::ResolvError
146
+ nil
147
+ rescue NoMethodError # i think this is a bug in resolv.rb?
148
+ nil
149
+ end
150
+ end
151
+ end
152
+
153
+ Facter.add(:ipaddress, :timeout => 2) do
154
+ setcode do
155
+ if hostname = Facter.value(:hostname)
156
+ # we need Hostname to exist for this to work
157
+ host = nil
158
+ if host = Facter::Core::Execution.execute("host #{hostname}")
159
+ list = host.chomp.split(/\s/)
160
+ if defined? list[-1] and
161
+ list[-1] =~ /[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+/
162
+ list[-1]
163
+ end
164
+ else
165
+ nil
166
+ end
167
+ else
168
+ nil
169
+ end
170
+ end
171
+ end