facter 2.5.7-x86-mingw32 → 3.9.6.cfacter.20180606-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (506) hide show
  1. checksums.yaml +5 -5
  2. data/bin/facter.bat +8 -0
  3. data/bin/facter.exe +0 -0
  4. data/bin/facter_interactive.bat +6 -0
  5. data/bin/libfacter.so +0 -0
  6. data/bin/run_facter_interactive.bat +9 -0
  7. data/lib/facter.rb +45 -261
  8. data/lib/libfacter.so.a +0 -0
  9. metadata +23 -854
  10. data/COMMITTERS.md +0 -185
  11. data/CONTRIBUTING.md +0 -91
  12. data/Gemfile +0 -69
  13. data/LICENSE +0 -15
  14. data/README.md +0 -65
  15. data/Rakefile +0 -46
  16. data/bin/facter +0 -20
  17. data/etc/facter.conf +0 -5
  18. data/ext/build_defaults.yaml +0 -9
  19. data/ext/debian/changelog.erb +0 -59
  20. data/ext/debian/compat +0 -1
  21. data/ext/debian/control +0 -15
  22. data/ext/debian/copyright +0 -19
  23. data/ext/debian/docs +0 -1
  24. data/ext/debian/lintian-overrides +0 -0
  25. data/ext/debian/rules +0 -10
  26. data/ext/debian/source/format +0 -1
  27. data/ext/facter-diff +0 -74
  28. data/ext/ips/facter.p5m.erb +0 -10
  29. data/ext/ips/rules +0 -7
  30. data/ext/ips/transforms +0 -18
  31. data/ext/osx/file_mapping.yaml +0 -32
  32. data/ext/osx/preflight.erb +0 -33
  33. data/ext/osx/prototype.plist.erb +0 -38
  34. data/ext/project_data.yaml +0 -31
  35. data/ext/redhat/facter.spec.erb +0 -223
  36. data/ext/solaris/pkginfo +0 -7
  37. data/install.rb +0 -380
  38. data/lib/facter/Cfkey.rb +0 -42
  39. data/lib/facter/application.rb +0 -206
  40. data/lib/facter/architecture.rb +0 -50
  41. data/lib/facter/augeasversion.rb +0 -28
  42. data/lib/facter/blockdevices.rb +0 -105
  43. data/lib/facter/core/aggregate.rb +0 -220
  44. data/lib/facter/core/directed_graph.rb +0 -46
  45. data/lib/facter/core/execution.rb +0 -123
  46. data/lib/facter/core/execution/base.rb +0 -81
  47. data/lib/facter/core/execution/posix.rb +0 -50
  48. data/lib/facter/core/execution/windows.rb +0 -57
  49. data/lib/facter/core/logging.rb +0 -197
  50. data/lib/facter/core/resolvable.rb +0 -94
  51. data/lib/facter/core/suitable.rb +0 -113
  52. data/lib/facter/dhcp_servers.rb +0 -45
  53. data/lib/facter/domain.rb +0 -99
  54. data/lib/facter/ec2.rb +0 -68
  55. data/lib/facter/ec2/rest.rb +0 -137
  56. data/lib/facter/facterversion.rb +0 -15
  57. data/lib/facter/filesystems.rb +0 -45
  58. data/lib/facter/fqdn.rb +0 -24
  59. data/lib/facter/gce.rb +0 -16
  60. data/lib/facter/gce/metadata.rb +0 -87
  61. data/lib/facter/gid.rb +0 -25
  62. data/lib/facter/hardwareisa.rb +0 -20
  63. data/lib/facter/hardwaremodel.rb +0 -67
  64. data/lib/facter/hostname.rb +0 -31
  65. data/lib/facter/id.rb +0 -21
  66. data/lib/facter/interfaces.rb +0 -58
  67. data/lib/facter/ipaddress.rb +0 -169
  68. data/lib/facter/ipaddress6.rb +0 -82
  69. data/lib/facter/iphostnumber.rb +0 -29
  70. data/lib/facter/kernel.rb +0 -22
  71. data/lib/facter/kernelmajversion.rb +0 -23
  72. data/lib/facter/kernelrelease.rb +0 -45
  73. data/lib/facter/kernelversion.rb +0 -22
  74. data/lib/facter/ldom.rb +0 -51
  75. data/lib/facter/lsbdistcodename.rb +0 -20
  76. data/lib/facter/lsbdistdescription.rb +0 -21
  77. data/lib/facter/lsbdistid.rb +0 -20
  78. data/lib/facter/lsbdistrelease.rb +0 -20
  79. data/lib/facter/lsbmajdistrelease.rb +0 -22
  80. data/lib/facter/lsbminordistrelease.rb +0 -22
  81. data/lib/facter/lsbrelease.rb +0 -20
  82. data/lib/facter/macaddress.rb +0 -99
  83. data/lib/facter/macosx.rb +0 -56
  84. data/lib/facter/manufacturer.rb +0 -68
  85. data/lib/facter/memory.rb +0 -168
  86. data/lib/facter/netmask.rb +0 -43
  87. data/lib/facter/network.rb +0 -20
  88. data/lib/facter/operatingsystem.rb +0 -24
  89. data/lib/facter/operatingsystem/base.rb +0 -61
  90. data/lib/facter/operatingsystem/cumuluslinux.rb +0 -27
  91. data/lib/facter/operatingsystem/implementation.rb +0 -33
  92. data/lib/facter/operatingsystem/linux.rb +0 -511
  93. data/lib/facter/operatingsystem/osreleaselinux.rb +0 -28
  94. data/lib/facter/operatingsystem/sunos.rb +0 -54
  95. data/lib/facter/operatingsystem/vmkernel.rb +0 -11
  96. data/lib/facter/operatingsystem/windows.rb +0 -43
  97. data/lib/facter/operatingsystemmajrelease.rb +0 -31
  98. data/lib/facter/operatingsystemrelease.rb +0 -29
  99. data/lib/facter/os.rb +0 -98
  100. data/lib/facter/osfamily.rb +0 -18
  101. data/lib/facter/partitions.rb +0 -39
  102. data/lib/facter/path.rb +0 -14
  103. data/lib/facter/physicalprocessorcount.rb +0 -27
  104. data/lib/facter/processor.rb +0 -52
  105. data/lib/facter/processors.rb +0 -66
  106. data/lib/facter/processors/os.rb +0 -244
  107. data/lib/facter/ps.rb +0 -31
  108. data/lib/facter/puppetversion.rb +0 -20
  109. data/lib/facter/rackspace.rb +0 -37
  110. data/lib/facter/rubyplatform.rb +0 -12
  111. data/lib/facter/rubysitedir.rb +0 -15
  112. data/lib/facter/rubyversion.rb +0 -12
  113. data/lib/facter/selinux.rb +0 -154
  114. data/lib/facter/ssh.rb +0 -73
  115. data/lib/facter/system32.rb +0 -21
  116. data/lib/facter/system_uptime.rb +0 -44
  117. data/lib/facter/timezone.rb +0 -14
  118. data/lib/facter/uniqueid.rb +0 -4
  119. data/lib/facter/uptime.rb +0 -16
  120. data/lib/facter/uptime_days.rb +0 -13
  121. data/lib/facter/uptime_hours.rb +0 -13
  122. data/lib/facter/uptime_seconds.rb +0 -20
  123. data/lib/facter/util/architecture.rb +0 -19
  124. data/lib/facter/util/collection.rb +0 -161
  125. data/lib/facter/util/composite_loader.rb +0 -12
  126. data/lib/facter/util/config.rb +0 -88
  127. data/lib/facter/util/confine.rb +0 -66
  128. data/lib/facter/util/dhcp_servers.rb +0 -58
  129. data/lib/facter/util/directory_loader.rb +0 -88
  130. data/lib/facter/util/ec2.rb +0 -106
  131. data/lib/facter/util/fact.rb +0 -204
  132. data/lib/facter/util/file_read.rb +0 -37
  133. data/lib/facter/util/formatter.rb +0 -39
  134. data/lib/facter/util/ip.rb +0 -340
  135. data/lib/facter/util/ip/windows.rb +0 -215
  136. data/lib/facter/util/loader.rb +0 -155
  137. data/lib/facter/util/macaddress.rb +0 -43
  138. data/lib/facter/util/macosx.rb +0 -73
  139. data/lib/facter/util/manufacturer.rb +0 -99
  140. data/lib/facter/util/memory.rb +0 -228
  141. data/lib/facter/util/netmask.rb +0 -40
  142. data/lib/facter/util/normalization.rb +0 -94
  143. data/lib/facter/util/nothing_loader.rb +0 -12
  144. data/lib/facter/util/operatingsystem.rb +0 -21
  145. data/lib/facter/util/parser.rb +0 -168
  146. data/lib/facter/util/partitions.rb +0 -47
  147. data/lib/facter/util/partitions/linux.rb +0 -71
  148. data/lib/facter/util/partitions/openbsd.rb +0 -40
  149. data/lib/facter/util/plist.rb +0 -24
  150. data/lib/facter/util/plist/generator.rb +0 -228
  151. data/lib/facter/util/plist/parser.rb +0 -226
  152. data/lib/facter/util/posix.rb +0 -16
  153. data/lib/facter/util/processor.rb +0 -289
  154. data/lib/facter/util/registry.rb +0 -11
  155. data/lib/facter/util/resolution.rb +0 -160
  156. data/lib/facter/util/solaris_zones.rb +0 -158
  157. data/lib/facter/util/unix_root.rb +0 -5
  158. data/lib/facter/util/uptime.rb +0 -83
  159. data/lib/facter/util/values.rb +0 -109
  160. data/lib/facter/util/virtual.rb +0 -220
  161. data/lib/facter/util/vlans.rb +0 -21
  162. data/lib/facter/util/windows.rb +0 -10
  163. data/lib/facter/util/windows/api_types.rb +0 -135
  164. data/lib/facter/util/windows/dir.rb +0 -43
  165. data/lib/facter/util/windows/error.rb +0 -87
  166. data/lib/facter/util/windows/process.rb +0 -294
  167. data/lib/facter/util/windows/user.rb +0 -186
  168. data/lib/facter/util/windows_root.rb +0 -7
  169. data/lib/facter/util/wmi.rb +0 -49
  170. data/lib/facter/util/xendomains.rb +0 -28
  171. data/lib/facter/version.rb +0 -86
  172. data/lib/facter/virtual.rb +0 -339
  173. data/lib/facter/vlans.rb +0 -17
  174. data/lib/facter/xendomains.rb +0 -20
  175. data/lib/facter/zfs_version.rb +0 -14
  176. data/lib/facter/zonename.rb +0 -6
  177. data/lib/facter/zones.rb +0 -18
  178. data/lib/facter/zpool_version.rb +0 -10
  179. data/spec/fixtures/cpuinfo/amd64dual +0 -57
  180. data/spec/fixtures/cpuinfo/amd64dual-grep +0 -2
  181. data/spec/fixtures/cpuinfo/amd64quad +0 -79
  182. data/spec/fixtures/cpuinfo/amd64solo +0 -23
  183. data/spec/fixtures/cpuinfo/amd64tri +0 -86
  184. data/spec/fixtures/cpuinfo/amd64twentyfour +0 -600
  185. data/spec/fixtures/cpuinfo/amd64twentyfour-grep +0 -24
  186. data/spec/fixtures/cpuinfo/bbg3-armel +0 -12
  187. data/spec/fixtures/cpuinfo/beaglexm-armel +0 -12
  188. data/spec/fixtures/cpuinfo/panda-armel +0 -17
  189. data/spec/fixtures/cpuinfo/ppc64 +0 -19
  190. data/spec/fixtures/cpuinfo/ppc64le +0 -15
  191. data/spec/fixtures/cpuinfo/sparc +0 -10
  192. data/spec/fixtures/cpuinfo/two_multicore-grep +0 -4
  193. data/spec/fixtures/cpuinfo/two_singlecore-grep +0 -2
  194. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +0 -26
  195. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +0 -49
  196. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +0 -26
  197. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +0 -53
  198. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +0 -53
  199. data/spec/fixtures/hpux/machinfo/superdome2-16s +0 -31
  200. data/spec/fixtures/hpux/sched.models +0 -174
  201. data/spec/fixtures/hpux/unistd.h +0 -1534
  202. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +0 -18
  203. data/spec/fixtures/ifconfig/centos_5_5 +0 -17
  204. data/spec/fixtures/ifconfig/centos_5_5_eth0 +0 -8
  205. data/spec/fixtures/ifconfig/darwin_10_3_0 +0 -26
  206. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +0 -6
  207. data/spec/fixtures/ifconfig/darwin_10_6_4 +0 -28
  208. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +0 -6
  209. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +0 -8
  210. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +0 -7
  211. data/spec/fixtures/ifconfig/darwin_9_8_0 +0 -26
  212. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +0 -6
  213. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +0 -23
  214. data/spec/fixtures/ifconfig/fedora_10 +0 -36
  215. data/spec/fixtures/ifconfig/fedora_10_eth0 +0 -9
  216. data/spec/fixtures/ifconfig/fedora_13 +0 -18
  217. data/spec/fixtures/ifconfig/fedora_13_eth0 +0 -9
  218. data/spec/fixtures/ifconfig/fedora_8 +0 -38
  219. data/spec/fixtures/ifconfig/fedora_8_eth0 +0 -9
  220. data/spec/fixtures/ifconfig/freebsd_6_0 +0 -12
  221. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +0 -19
  222. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +0 -16
  223. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +0 -19
  224. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces_and_fe80 +0 -19
  225. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces_and_no_public_ipv6 +0 -18
  226. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +0 -19
  227. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +0 -8
  228. data/spec/fixtures/ifconfig/linux_ifconfig_venet +0 -24
  229. data/spec/fixtures/ifconfig/open_solaris_10 +0 -12
  230. data/spec/fixtures/ifconfig/open_solaris_b132 +0 -20
  231. data/spec/fixtures/ifconfig/openbsd_bridge_rules +0 -11
  232. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +0 -10
  233. data/spec/fixtures/ifconfig/ubuntu_7_04 +0 -38
  234. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +0 -9
  235. data/spec/fixtures/ldom/ldom_v1 +0 -6
  236. data/spec/fixtures/netstat/centos_5_5 +0 -5
  237. data/spec/fixtures/netstat/darwin_10_3_0 +0 -35
  238. data/spec/fixtures/netstat/darwin_10_6_4 +0 -29
  239. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +0 -34
  240. data/spec/fixtures/netstat/darwin_9_8_0 +0 -28
  241. data/spec/fixtures/netstat/fedora_10 +0 -7
  242. data/spec/fixtures/netstat/open_solaris_10 +0 -16
  243. data/spec/fixtures/netstat/open_solaris_b132 +0 -17
  244. data/spec/fixtures/netstat/ubuntu_7_04 +0 -7
  245. data/spec/fixtures/processorcount/solaris-psrinfo +0 -24
  246. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +0 -1216
  247. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +0 -225
  248. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +0 -4
  249. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +0 -4
  250. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +0 -36
  251. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +0 -24
  252. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +0 -49
  253. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +0 -37
  254. data/spec/fixtures/unit/dhcp_servers/route +0 -3
  255. data/spec/fixtures/unit/dhcp_servers/route_nogw +0 -1
  256. data/spec/fixtures/unit/ec2/rest/meta-data/root +0 -20
  257. data/spec/fixtures/unit/filesystems/linux +0 -28
  258. data/spec/fixtures/unit/gce/metadata/metadata.json +0 -69
  259. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +0 -19
  260. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +0 -10
  261. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +0 -8
  262. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60_v6.txt +0 -9
  263. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +0 -20
  264. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +0 -19
  265. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +0 -18
  266. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +0 -16
  267. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +0 -2
  268. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +0 -3
  269. data/spec/fixtures/unit/memory/aix-svmon +0 -9
  270. data/spec/fixtures/unit/memory/aix-swap_l +0 -2
  271. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +0 -3
  272. data/spec/fixtures/unit/memory/darwin-swapinfo-single +0 -2
  273. data/spec/fixtures/unit/memory/darwin-vm_stat +0 -13
  274. data/spec/fixtures/unit/memory/dragonfly-vmstat +0 -3
  275. data/spec/fixtures/unit/memory/freebsd-vmstat +0 -3
  276. data/spec/fixtures/unit/memory/linux-proc_meminfo +0 -10
  277. data/spec/fixtures/unit/memory/openbsd-vmstat +0 -3
  278. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +0 -2
  279. data/spec/fixtures/unit/memory/solaris-prtconf +0 -4
  280. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +0 -3
  281. data/spec/fixtures/unit/memory/solaris-swap_l-single +0 -2
  282. data/spec/fixtures/unit/memory/solaris-vmstat +0 -3
  283. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +0 -30
  284. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +0 -3
  285. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +0 -19
  286. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +0 -16
  287. data/spec/fixtures/unit/processors/os/darwin-system-profiler +0 -287
  288. data/spec/fixtures/unit/selinux/selinux_sestatus +0 -6
  289. data/spec/fixtures/unit/selinux/selinux_sestatus2 +0 -9
  290. data/spec/fixtures/unit/util/dhcp_servers/route +0 -3
  291. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +0 -1
  292. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +0 -1
  293. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +0 -1
  294. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +0 -5
  295. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +0 -7
  296. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +0 -6
  297. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +0 -10
  298. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +0 -12
  299. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +0 -26
  300. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +0 -10
  301. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +0 -6
  302. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +0 -40
  303. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +0 -2
  304. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +0 -2
  305. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +0 -2
  306. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +0 -5
  307. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +0 -4
  308. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +0 -2
  309. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +0 -2
  310. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +0 -2
  311. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +0 -5
  312. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +0 -4
  313. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +0 -2
  314. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +0 -2
  315. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +0 -2
  316. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +0 -4
  317. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +0 -4
  318. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +0 -2
  319. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +0 -2
  320. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +0 -2
  321. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +0 -2
  322. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +0 -9
  323. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +0 -6
  324. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +0 -19
  325. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +0 -10
  326. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +0 -8
  327. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0_centos7 +0 -8
  328. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +0 -9
  329. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +0 -18
  330. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +0 -8
  331. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0_centos7 +0 -8
  332. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +0 -8
  333. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +0 -3
  334. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +0 -12
  335. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +0 -7
  336. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +0 -18
  337. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +0 -42
  338. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +0 -549
  339. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +0 -60
  340. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +0 -33
  341. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +0 -533
  342. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +0 -33
  343. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +0 -136
  344. data/spec/fixtures/unit/util/operatingsystem/coreos.txt +0 -9
  345. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +0 -8
  346. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +0 -12
  347. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +0 -7
  348. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +0 -9
  349. data/spec/fixtures/unit/util/partitions/partitions/mount +0 -9
  350. data/spec/fixtures/unit/util/processor/solaris-i86pc +0 -28
  351. data/spec/fixtures/unit/util/processor/solaris-sun4u +0 -151
  352. data/spec/fixtures/unit/util/processor/x86-pentium2 +0 -41
  353. data/spec/fixtures/unit/util/uptime/kstat_boot_time +0 -1
  354. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +0 -1
  355. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +0 -1
  356. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +0 -1
  357. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  358. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  359. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +0 -2
  360. data/spec/fixtures/unit/util/vlans/linux_vlan_config +0 -6
  361. data/spec/fixtures/unit/util/xendomains/xendomains +0 -4
  362. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  363. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +0 -14
  364. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +0 -13
  365. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +0 -14
  366. data/spec/fixtures/unit/zfs_version/solaris_10 +0 -10
  367. data/spec/fixtures/unit/zfs_version/solaris_11 +0 -12
  368. data/spec/fixtures/unit/zfs_version/zfs_new +0 -61
  369. data/spec/fixtures/unit/zfs_version/zfs_old +0 -43
  370. data/spec/fixtures/unit/zfs_version/zfsonlinux_0.6.1 +0 -13
  371. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +0 -26
  372. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +0 -38
  373. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +0 -35
  374. data/spec/fixtures/unit/zpool_version/solaris_10 +0 -31
  375. data/spec/fixtures/unit/zpool_version/solaris_11 +0 -43
  376. data/spec/fixtures/unit/zpool_version/zfsonlinux_0.6.1 +0 -48
  377. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +0 -9
  378. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +0 -8
  379. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container_with_systemd_slices +0 -10
  380. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +0 -9
  381. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +0 -37
  382. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +0 -36
  383. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +0 -39
  384. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +0 -39
  385. data/spec/integration/facter_spec.rb +0 -39
  386. data/spec/integration/util/windows/user_spec.rb +0 -59
  387. data/spec/lib/facter_spec/cpuinfo.rb +0 -15
  388. data/spec/lib/facter_spec/windows_network.rb +0 -64
  389. data/spec/puppetlabs_spec/files.rb +0 -57
  390. data/spec/puppetlabs_spec/fixtures.rb +0 -49
  391. data/spec/puppetlabs_spec/matchers.rb +0 -87
  392. data/spec/puppetlabs_spec/verbose.rb +0 -9
  393. data/spec/puppetlabs_spec_helper.rb +0 -26
  394. data/spec/schema/validate_facter_schema.rb +0 -18
  395. data/spec/shared_contexts/platform.rb +0 -55
  396. data/spec/shared_formats/parses.rb +0 -3
  397. data/spec/spec_helper.rb +0 -68
  398. data/spec/unit/application_spec.rb +0 -110
  399. data/spec/unit/architecture_spec.rb +0 -63
  400. data/spec/unit/blockdevices_spec.rb +0 -109
  401. data/spec/unit/core/aggregate_spec.rb +0 -125
  402. data/spec/unit/core/directed_graph_spec.rb +0 -79
  403. data/spec/unit/core/execution/base_spec.rb +0 -130
  404. data/spec/unit/core/execution/posix_spec.rb +0 -96
  405. data/spec/unit/core/execution/windows_spec.rb +0 -106
  406. data/spec/unit/core/execution_spec.rb +0 -42
  407. data/spec/unit/core/logging_spec.rb +0 -223
  408. data/spec/unit/core/resolvable_spec.rb +0 -81
  409. data/spec/unit/core/suitable_spec.rb +0 -106
  410. data/spec/unit/dhcp_servers_spec.rb +0 -212
  411. data/spec/unit/domain_spec.rb +0 -310
  412. data/spec/unit/ec2/rest_spec.rb +0 -168
  413. data/spec/unit/ec2_spec.rb +0 -139
  414. data/spec/unit/facter_spec.rb +0 -108
  415. data/spec/unit/filesystems_spec.rb +0 -50
  416. data/spec/unit/fqdn_spec.rb +0 -16
  417. data/spec/unit/gce/metadata_spec.rb +0 -49
  418. data/spec/unit/gce_spec.rb +0 -34
  419. data/spec/unit/gid_spec.rb +0 -51
  420. data/spec/unit/hardwareisa_spec.rb +0 -41
  421. data/spec/unit/hardwaremodel_spec.rb +0 -58
  422. data/spec/unit/hostname_spec.rb +0 -40
  423. data/spec/unit/id_spec.rb +0 -29
  424. data/spec/unit/interfaces_spec.rb +0 -67
  425. data/spec/unit/ipaddress6_spec.rb +0 -180
  426. data/spec/unit/ipaddress_spec.rb +0 -114
  427. data/spec/unit/kernel_spec.rb +0 -24
  428. data/spec/unit/kernelmajversion_spec.rb +0 -22
  429. data/spec/unit/kernelrelease_spec.rb +0 -66
  430. data/spec/unit/kernelversion_spec.rb +0 -32
  431. data/spec/unit/ldom_spec.rb +0 -84
  432. data/spec/unit/lsbdistcodename_spec.rb +0 -30
  433. data/spec/unit/lsbdistdescription_spec.rb +0 -30
  434. data/spec/unit/lsbdistid_spec.rb +0 -30
  435. data/spec/unit/lsbdistrelease_spec.rb +0 -30
  436. data/spec/unit/lsbmajdistrelease_spec.rb +0 -30
  437. data/spec/unit/lsbminordistrelease_spec.rb +0 -31
  438. data/spec/unit/lsbrelease_spec.rb +0 -30
  439. data/spec/unit/macaddress_spec.rb +0 -76
  440. data/spec/unit/manufacturer_spec.rb +0 -115
  441. data/spec/unit/memory_spec.rb +0 -470
  442. data/spec/unit/netmask_spec.rb +0 -106
  443. data/spec/unit/operatingsystem/base_spec.rb +0 -76
  444. data/spec/unit/operatingsystem/cumuluslinux_spec.rb +0 -40
  445. data/spec/unit/operatingsystem/implementation_spec.rb +0 -50
  446. data/spec/unit/operatingsystem/linux_spec.rb +0 -559
  447. data/spec/unit/operatingsystem/sunos_spec.rb +0 -143
  448. data/spec/unit/operatingsystem/vmkernel_spec.rb +0 -13
  449. data/spec/unit/operatingsystem/windows_spec.rb +0 -77
  450. data/spec/unit/operatingsystem_spec.rb +0 -17
  451. data/spec/unit/operatingsystemmajrelease_spec.rb +0 -21
  452. data/spec/unit/operatingsystemrelease_spec.rb +0 -20
  453. data/spec/unit/os_spec.rb +0 -131
  454. data/spec/unit/osfamily_spec.rb +0 -17
  455. data/spec/unit/partitions_spec.rb +0 -88
  456. data/spec/unit/physicalprocessorcount_spec.rb +0 -13
  457. data/spec/unit/processor_spec.rb +0 -38
  458. data/spec/unit/processors/os_spec.rb +0 -469
  459. data/spec/unit/processors_spec.rb +0 -203
  460. data/spec/unit/ps_spec.rb +0 -42
  461. data/spec/unit/rackspace_spec.rb +0 -40
  462. data/spec/unit/rubyplatform_spec.rb +0 -7
  463. data/spec/unit/selinux_spec.rb +0 -119
  464. data/spec/unit/ssh_spec.rb +0 -77
  465. data/spec/unit/system32_spec.rb +0 -28
  466. data/spec/unit/system_uptime_spec.rb +0 -80
  467. data/spec/unit/uniqueid_spec.rb +0 -27
  468. data/spec/unit/uptime_spec.rb +0 -110
  469. data/spec/unit/util/collection_spec.rb +0 -258
  470. data/spec/unit/util/config_spec.rb +0 -120
  471. data/spec/unit/util/confine_spec.rb +0 -148
  472. data/spec/unit/util/dhcp_servers_spec.rb +0 -63
  473. data/spec/unit/util/directory_loader_spec.rb +0 -102
  474. data/spec/unit/util/ec2_spec.rb +0 -184
  475. data/spec/unit/util/fact_spec.rb +0 -142
  476. data/spec/unit/util/file_read_spec.rb +0 -29
  477. data/spec/unit/util/formatter_spec.rb +0 -55
  478. data/spec/unit/util/ip/windows_spec.rb +0 -80
  479. data/spec/unit/util/ip_spec.rb +0 -487
  480. data/spec/unit/util/loader_spec.rb +0 -286
  481. data/spec/unit/util/macaddress_spec.rb +0 -143
  482. data/spec/unit/util/macosx_spec.rb +0 -114
  483. data/spec/unit/util/manufacturer_spec.rb +0 -223
  484. data/spec/unit/util/normalization_spec.rb +0 -113
  485. data/spec/unit/util/operatingsystem_spec.rb +0 -107
  486. data/spec/unit/util/parser_spec.rb +0 -233
  487. data/spec/unit/util/partitions/partitions_spec.rb +0 -67
  488. data/spec/unit/util/partitions_spec.rb +0 -19
  489. data/spec/unit/util/posix_spec.rb +0 -11
  490. data/spec/unit/util/processor_spec.rb +0 -212
  491. data/spec/unit/util/registry_spec.rb +0 -76
  492. data/spec/unit/util/resolution_spec.rb +0 -129
  493. data/spec/unit/util/solaris_zones_spec.rb +0 -127
  494. data/spec/unit/util/uptime_spec.rb +0 -131
  495. data/spec/unit/util/values_spec.rb +0 -171
  496. data/spec/unit/util/virtual_spec.rb +0 -393
  497. data/spec/unit/util/vlans_spec.rb +0 -42
  498. data/spec/unit/util/wmi_spec.rb +0 -19
  499. data/spec/unit/util/xendomains_spec.rb +0 -114
  500. data/spec/unit/version_spec.rb +0 -42
  501. data/spec/unit/virtual_spec.rb +0 -585
  502. data/spec/unit/zfs_version_spec.rb +0 -87
  503. data/spec/unit/zonename_spec.rb +0 -14
  504. data/spec/unit/zones_spec.rb +0 -55
  505. data/spec/unit/zpool_version_spec.rb +0 -80
  506. data/spec/watchr.rb +0 -125
@@ -1,37 +0,0 @@
1
- module Facter
2
- module Util
3
-
4
- # {Facter::Util::FileRead} is a utility module intended to provide easily
5
- # mockable methods that delegate to simple file read methods. The intent is to
6
- # avoid the need to execute the `cat` system command or `File.read` directly in
7
- # Ruby, as mocking these behaviors can have wide-ranging effects.
8
- #
9
- # All Facter facts are encouraged to use this method instead of File.read or
10
- # Facter::Core::Execution.exec('cat ...')
11
- #
12
- # @api public
13
- module FileRead
14
- # read returns the raw content of a file as a string. If the file does not
15
- # exist, or the process does not have permission to read the file then nil is
16
- # returned.
17
- #
18
- # @api public
19
- #
20
- # @param path [String] the path to be read
21
- #
22
- # @return [String, nil] the raw contents of the file or `nil` if the
23
- # file cannot be read because it does not exist or the process does not have
24
- # permission to read the file.
25
- def self.read(path)
26
- File.read(path)
27
- rescue Errno::ENOENT, Errno::EACCES => detail
28
- Facter.debug "Could not read #{path}: #{detail.message}"
29
- nil
30
- end
31
-
32
- def self.read_binary(path)
33
- File.open(path, "rb") { |contents| contents.read }
34
- end
35
- end
36
- end
37
- end
@@ -1,39 +0,0 @@
1
- require 'yaml'
2
-
3
- module Facter
4
- module Util
5
- module Formatter
6
-
7
- def self.format_json(hash)
8
- if Facter.json?
9
- JSON.pretty_generate(hash)
10
- else
11
- raise "Cannot format facts as JSON; 'json' library is not present"
12
- end
13
- end
14
-
15
- def self.format_yaml(hash)
16
- YAML.dump(hash)
17
- end
18
-
19
- def self.format_plaintext(hash)
20
- output = ''
21
-
22
- # Print the value of a single fact, otherwise print a list sorted by fact
23
- # name and separated by "=>"
24
- if hash.length == 1
25
- if !(value = hash.values.first).nil?
26
- output = value.is_a?(String) ? value : value.inspect
27
- end
28
- else
29
- hash.sort_by { |(name, value)| name }.each do |name,value|
30
- value = value.is_a?(String) ? value : value.inspect
31
- output << "#{name} => #{value}\n"
32
- end
33
- end
34
-
35
- output
36
- end
37
- end
38
- end
39
- end
@@ -1,340 +0,0 @@
1
- # A base module for collecting IP-related
2
- # information from all kinds of platforms.
3
- module Facter::Util::IP
4
- # A map of all the different regexes that work for
5
- # a given platform or set of platforms.
6
- REGEX_MAP = {
7
- :linux => {
8
- :ipaddress => /inet (?:addr:)?([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/,
9
- :ipaddress6 => /inet6 (?:addr: )?((?!(?:fe80|::1))(?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4})/,
10
- :macaddress => /(?:ether|HWaddr)\s+((\w{1,2}:){5,}\w{1,2})/,
11
- :netmask => /(?:Mask:|netmask )([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/,
12
- :mtu => /MTU:?\s*(\d+)/i
13
- },
14
- :bsd => {
15
- :aliases => [:openbsd, :netbsd, :freebsd, :darwin, :"gnu/kfreebsd", :dragonfly],
16
- :ipaddress => /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/,
17
- :ipaddress6 => /inet6 ((?!(?:fe80|::1))(?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4})/,
18
- :macaddress => /(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/,
19
- :netmask => /netmask\s+0x(\w{8})/,
20
- :mtu => /mtu\s+(\d+)/
21
- },
22
- :sunos => {
23
- :ipaddress => /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/,
24
- :ipaddress6 => /inet6 ((?!(?:fe80|::1))(?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4})/,
25
- :macaddress => /(?:ether|lladdr)\s+(\w?\w:\w?\w:\w?\w:\w?\w:\w?\w:\w?\w)/,
26
- :netmask => /netmask\s+(\w{8})/,
27
- :mtu => /mtu\s+(\d+)/
28
- },
29
- :"hp-ux" => {
30
- :ipaddress => /\s+inet (\S+)\s.*/,
31
- :macaddress => /(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/,
32
- :netmask => /.*\s+netmask (\S+)\s.*/
33
- },
34
- :aix => {
35
- :ipaddress => /inet\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)/,
36
- :ipaddress6 => /inet6 ((?!(?:fe80|::1))(?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4})/,
37
- :netmask => /netmask\s+0x(\w{8})/,
38
- :mtu => /mtu\s+(\d+)/,
39
- :macaddress => /^Hardware\sAddress:\s(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
40
- },
41
- :windows => {}
42
- }
43
-
44
- # Convert an interface name into purely alphanumeric characters.
45
- def self.alphafy(interface)
46
- interface.gsub(/[^a-z0-9_]/i, '_')
47
- end
48
-
49
- def self.convert_from_hex?(kernel)
50
- kernels_to_convert = [:sunos, :openbsd, :netbsd, :freebsd, :darwin, :"hp-ux", :"gnu/kfreebsd", :dragonfly, :aix]
51
- kernels_to_convert.include?(kernel)
52
- end
53
-
54
- def self.supported_platforms
55
- REGEX_MAP.inject([]) do |result, tmp|
56
- key, map = tmp
57
- if map[:aliases]
58
- result += map[:aliases]
59
- else
60
- result << key
61
- end
62
- result
63
- end
64
- end
65
-
66
- def self.get_interfaces
67
- if Facter.value(:kernel) == 'windows'
68
- require 'facter/util/ip/windows'
69
- return Facter::Util::IP::Windows.interfaces
70
- end
71
-
72
- return [] unless output = Facter::Util::IP.get_all_interface_output()
73
-
74
- # Our regex appears to be stupid, in that it leaves colons sitting
75
- # at the end of interfaces. So, we have to trim those trailing
76
- # characters. I tried making the regex better but supporting all
77
- # platforms with a single regex is probably a bit too much.
78
- output.scan(/^\S+/).collect { |i| i.sub(/:$/, '') }.uniq
79
- end
80
-
81
- def self.get_all_interface_output
82
- case Facter.value(:kernel)
83
- when 'Linux', 'OpenBSD', 'NetBSD', 'FreeBSD', 'Darwin', 'GNU/kFreeBSD', 'DragonFly', 'AIX'
84
- output = Facter::Util::IP.exec_ifconfig(["-a","2>/dev/null"])
85
- when 'SunOS'
86
- output = Facter::Util::IP.exec_ifconfig(["-a"])
87
- when 'HP-UX'
88
- # (#17487)[https://projects.puppetlabs.com/issues/17487]
89
- # Handle NIC bonding where asterisks and virtual NICs are printed.
90
- if output = hpux_netstat_in
91
- output.gsub!(/\*/, "") # delete asterisks.
92
- output.gsub!(/^[^\n]*none[^\n]*\n/, "") # delete lines with 'none' instead of IPs.
93
- output.sub!(/^[^\n]*\n/, "") # delete the header line.
94
- output
95
- end
96
- end
97
- output
98
- end
99
-
100
-
101
- ##
102
- # exec_ifconfig uses the ifconfig command
103
- #
104
- # @return [String] the output of `ifconfig #{arguments} 2>/dev/null` or nil
105
- def self.exec_ifconfig(additional_arguments=[])
106
- Facter::Core::Execution.exec("#{self.get_ifconfig} #{additional_arguments.join(' ')}")
107
- end
108
- ##
109
- # get_ifconfig looks up the ifconfig binary
110
- #
111
- # @return [String] path to the ifconfig binary
112
- def self.get_ifconfig
113
- common_paths=["/bin/ifconfig","/sbin/ifconfig","/usr/sbin/ifconfig"]
114
- common_paths.select{|path| File.executable?(path)}.first
115
- end
116
-
117
- ##
118
- # exec_netstat uses the netstat command
119
- #
120
- # @return [String] the output of `netstat #{arguments} 2>/dev/null` or nil
121
- def self.exec_netstat(additional_arguments=[])
122
- Facter::Core::Execution.exec("#{self.get_netstat} #{additional_arguments.join(' ')}")
123
- end
124
- ##
125
- # get_netstat looks up the netstat binary
126
- #
127
- # @return [String] path to the netstat binary
128
- def self.get_netstat
129
- common_paths=["/bin/netstat","/sbin/netstat","/usr/sbin/netstat","/usr/bin/netstat"]
130
- common_paths.select{|path| File.executable?(path)}.first
131
- end
132
-
133
- ##
134
- # hpux_netstat_in is a delegate method that allows us to stub netstat -in
135
- # without stubbing exec.
136
- def self.hpux_netstat_in
137
- Facter::Core::Execution.exec("/bin/netstat -in")
138
- end
139
-
140
- def self.get_infiniband_macaddress(interface)
141
- if File.exists?("/sys/class/net/#{interface}/address") then
142
- ib_mac_address = `cat /sys/class/net/#{interface}/address`.chomp
143
- elsif File.exists?("/sbin/ip") then
144
- ip_output = %x{/sbin/ip link show '#{interface}'}
145
- ib_mac_address = ip_output.scan(%r{infiniband\s+((\w{1,2}:){5,}\w{1,2})})
146
- else
147
- ib_mac_address = "FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF:FF"
148
- Facter.debug("ip.rb: nothing under /sys/class/net/#{interface}/address and /sbin/ip not available")
149
- end
150
- ib_mac_address
151
- end
152
-
153
- def self.ifconfig_interface(interface)
154
- output = Facter::Util::IP.exec_ifconfig(["'#{interface}'","2>/dev/null"])
155
- end
156
-
157
- def self.get_single_interface_output(interface)
158
- output = ""
159
- case Facter.value(:kernel)
160
- when 'OpenBSD', 'NetBSD', 'FreeBSD', 'Darwin', 'GNU/kFreeBSD', 'DragonFly'
161
- output = Facter::Util::IP.ifconfig_interface(interface)
162
- when 'Linux'
163
- ifconfig_output = Facter::Util::IP.ifconfig_interface(interface)
164
- if interface =~ /^ib/ then
165
- real_mac_address = get_infiniband_macaddress(interface)
166
- output = ifconfig_output.sub(%r{(?:ether|HWaddr|infiniband)\s+((\w{1,2}:){5,}\w{1,2})}, "HWaddr #{real_mac_address}")
167
- else
168
- output = ifconfig_output
169
- end
170
- when 'SunOS'
171
- output = Facter::Util::IP.exec_ifconfig([interface])
172
- when 'HP-UX'
173
- mac = ""
174
- ifc = hpux_ifconfig_interface(interface)
175
- hpux_lanscan.scan(/(\dx\S+).*UP\s+(\w+\d+)/).each {|i| mac = i[0] if i.include?(interface) }
176
- mac = mac.sub(/0x(\S+)/,'\1').scan(/../).join(":")
177
- output = ifc + "\n" + mac
178
- when 'AIX'
179
- output = Facter::Util::IP.ifconfig_interface(interface) + "\n" + aix_get_mtu(interface) + "\n" + aix_get_macadress(interface)
180
- output
181
- end
182
- output
183
- end
184
-
185
- def self.hpux_ifconfig_interface(interface)
186
- Facter::Util::IP.exec_ifconfig([interface])
187
- end
188
-
189
- def self.hpux_lanscan
190
- Facter::Core::Execution.exec("/usr/sbin/lanscan")
191
- end
192
-
193
- def self.aix_lsattr_interface(interface)
194
- Facter::Core::Execution.exec("/usr/sbin/lsattr -El #{interface}")
195
- end
196
-
197
- def self.aix_entstat_interface(interface)
198
- if interface[0..1] != "lo"
199
- Facter::Core::Execution.exec("/usr/bin/entstat #{interface}")
200
- else
201
- return ""
202
- end
203
- end
204
-
205
- def self.aix_get_mtu(interface)
206
- aix_lsattr_interface(interface).each_line do |s|
207
- if s =~ /mtu\s+(\d+)/
208
- return s
209
- end
210
- end
211
- end
212
-
213
- def self.aix_get_macadress(interface)
214
- aix_entstat_interface(interface).each_line do |s|
215
- if s =~ /^Hardware\sAddress:\s(\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2}:\w{1,2})/
216
- return s
217
- end
218
- end
219
- end
220
-
221
- def self.get_output_for_interface_and_label(interface, label)
222
- return get_single_interface_output(interface) unless Facter.value(:kernel) == 'windows'
223
-
224
- require 'facter/util/ip/windows'
225
- output = Facter::Util::IP::Windows.value_for_interface_and_label(interface, label)
226
- output ? output : ""
227
- end
228
-
229
- def self.get_bonding_master(interface)
230
- if Facter.value(:kernel) != 'Linux'
231
- return nil
232
- end
233
- # We need ip instead of ifconfig because it will show us
234
- # the bonding master device.
235
- if not FileTest.executable?("/sbin/ip")
236
- return nil
237
- end
238
- # A bonding interface can never be an alias interface. Alias
239
- # interfaces do have a colon in their name and the ip link show
240
- # command throws an error message when we pass it an alias
241
- # interface.
242
- if interface =~ /:/
243
- return nil
244
- end
245
- regex = /SLAVE[,>].* (bond[0-9]+)/
246
- ethbond = regex.match(%x{/sbin/ip link show '#{interface}'})
247
- if ethbond
248
- device = ethbond[1]
249
- else
250
- device = nil
251
- end
252
- device
253
- end
254
-
255
- ##
256
- # get_interface_value obtains the value of a specific attribute of a specific
257
- # interface.
258
- #
259
- # @param interface [String] the interface identifier, e.g. "eth0" or "bond0"
260
- #
261
- # @param label [String] the attribute of the interface to obtain a value for,
262
- # e.g. "netmask" or "ipaddress"
263
- #
264
- # @api private
265
- #
266
- # @return [String] representing the requested value. An empty array is
267
- # returned if the kernel is not supported by the REGEX_MAP constant.
268
- def self.get_interface_value(interface, label)
269
- if Facter.value(:kernel) == 'windows'
270
- require 'facter/util/ip/windows'
271
- return Facter::Util::IP::Windows.value_for_interface_and_label(interface, label)
272
- end
273
-
274
- tmp1 = []
275
-
276
- kernel = Facter.value(:kernel).downcase.to_sym
277
-
278
- # If it's not directly in the map or aliased in the map, then we don't know how to deal with it.
279
- unless map = REGEX_MAP[kernel] || REGEX_MAP.values.find { |tmp| tmp[:aliases] and tmp[:aliases].include?(kernel) }
280
- return []
281
- end
282
-
283
- # Pull the correct regex out of the map.
284
- regex = map[label.to_sym]
285
-
286
- # Linux changes the MAC address reported via ifconfig when an ethernet interface
287
- # becomes a slave of a bonding device to the master MAC address.
288
- # We have to dig a bit to get the original/real MAC address of the interface.
289
- bonddev = get_bonding_master(interface) if label == 'macaddress'
290
- if bonddev
291
- bondinfo = read_proc_net_bonding("/proc/net/bonding/#{bonddev}")
292
- re = /^Slave Interface: #{interface}\b.*?\bPermanent HW addr: (([0-9A-F]{2}:?)*)$/im
293
- if match = re.match(bondinfo)
294
- value = match[1].upcase
295
- end
296
- else
297
- output_int = get_output_for_interface_and_label(interface, label)
298
-
299
- output_int.each_line do |s|
300
- if s =~ regex
301
- value = $1
302
- if label == 'netmask' && convert_from_hex?(kernel)
303
- value = value.scan(/../).collect do |byte| byte.to_i(16) end.join('.')
304
- end
305
- tmp1.push(value)
306
- end
307
- end
308
-
309
- if tmp1
310
- value = tmp1.shift
311
- end
312
- end
313
- end
314
-
315
- ##
316
- # read_proc_net_bonding is a seam method for mocking purposes.
317
- #
318
- # @param path [String] representing the path to read, e.g. "/proc/net/bonding/bond0"
319
- #
320
- # @api private
321
- #
322
- # @return [String] modeling the raw file read
323
- def self.read_proc_net_bonding(path)
324
- File.read(path) if File.exists?(path)
325
- end
326
- private_class_method :read_proc_net_bonding
327
-
328
- def self.get_network_value(interface)
329
- require 'ipaddr'
330
-
331
- ipaddress = get_interface_value(interface, "ipaddress")
332
- netmask = get_interface_value(interface, "netmask")
333
-
334
- if ipaddress && netmask
335
- ip = IPAddr.new(ipaddress, Socket::AF_INET)
336
- subnet = IPAddr.new(netmask, Socket::AF_INET)
337
- network = ip.mask(subnet.to_s).to_s
338
- end
339
- end
340
- end
@@ -1,215 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'facter/util/wmi'
4
- require 'facter/util/ip'
5
-
6
- class Facter::Util::IP::Windows
7
- # The WMI query used to return ip information
8
- #
9
- # @return [String]
10
- #
11
- # @api private
12
- WMI_IP_INFO_QUERY = 'SELECT Description, ServiceName, IPAddress, IPConnectionMetric, InterfaceIndex, Index, IPSubnet, MACAddress, MTU, SettingID FROM Win32_NetworkAdapterConfiguration WHERE IPConnectionMetric IS NOT NULL AND IPEnabled = TRUE'
13
-
14
- # Mapping fact names to WMI properties of the Win32_NetworkAdapterConfiguration
15
- #
16
- # @api private
17
- WINDOWS_LABEL_WMI_MAP = {
18
- :ipaddress => 'IPAddress',
19
- :ipaddress6 => 'IPAddress',
20
- :macaddress => 'MACAddress',
21
- :netmask => 'IPSubnet'
22
- }
23
-
24
- def self.to_s
25
- 'windows'
26
- end
27
-
28
- # Windows doesn't display netmask in hex.
29
- #
30
- # @return [Boolean] false by default
31
- #
32
- # @api private
33
- def self.convert_netmask_from_hex?
34
- false
35
- end
36
-
37
- # Retrieves a list of unique interfaces names.
38
- #
39
- # @return [Array<String>]
40
- #
41
- # @api private
42
- def self.interfaces
43
- interface_names = []
44
-
45
- network_adapter_configurations.map do |nic|
46
- Facter::Util::WMI.execquery("SELECT * FROM Win32_NetworkAdapter WHERE Index = #{nic.Index} AND NetEnabled = TRUE").each do |sub_nic|
47
- interface_names << sub_nic.NetConnectionId unless sub_nic.NetConnectionId.nil? or sub_nic.NetConnectionId.empty?
48
- end
49
- end
50
-
51
- interface_names.uniq
52
- end
53
-
54
- # Get the value of an interface and label. For example, you may want to find
55
- # the MTU for eth0.
56
- #
57
- # @param [String] interface the name of the interface returned by the {#interfaces} method.
58
- # @param [String] label the type of value to return, e.g. ipaddress
59
- # @return [String] the value, or nil if not defined
60
- #
61
- # @api private
62
- def self.value_for_interface_and_label(interface, label)
63
- wmi_value = WINDOWS_LABEL_WMI_MAP[label.downcase.to_sym]
64
- label_value = nil
65
- Facter::Util::WMI.execquery("SELECT Index FROM Win32_NetworkAdapter WHERE NetConnectionID = '#{interface}'").each do |nic|
66
- Facter::Util::WMI.execquery("SELECT #{wmi_value} FROM Win32_NetworkAdapterConfiguration WHERE Index = #{nic.Index}").each do |nic_config|
67
- case label.downcase.to_sym
68
- when :ipaddress
69
- nic_config.IPAddress.any? do |addr|
70
- label_value = addr if valid_ipv4_address?(addr)
71
- label_value
72
- end
73
- when :ipaddress6
74
- nic_config.IPAddress.any? do |addr|
75
- label_value = addr if Facter::Util::IP::Windows.valid_ipv6_address?(addr)
76
- label_value
77
- end
78
- when :netmask
79
- nic_config.IPSubnet.any? do |addr|
80
- label_value = addr if Facter::Util::IP::Windows.valid_ipv4_address?(addr)
81
- label_value
82
- end
83
- when :macaddress
84
- label_value = nic_config.MACAddress
85
- end
86
- end
87
- end
88
-
89
- label_value
90
- end
91
-
92
- # Returns an array of partial Win32_NetworkAdapterConfiguration objects.
93
- #
94
- # @return [Array<WIN32OLE>] objects
95
- #
96
- # @api private
97
- def self.network_adapter_configurations
98
- nics = []
99
- # WIN32OLE doesn't implement Enumerable
100
- Facter::Util::WMI.execquery(WMI_IP_INFO_QUERY).each do |nic|
101
- nics << nic
102
- end
103
- nics
104
- end
105
-
106
- # Gets a list of active IPv4 network adapter configurations sorted by the
107
- # lowest IP connection metric. If two configurations have the same metric,
108
- # then the IPv4 specific binding order as specified in the registry will
109
- # be used.
110
- #
111
- # @return [Array<WIN32OLE>]
112
- #
113
- # @api private
114
- def self.get_preferred_ipv4_adapters
115
- get_preferred_network_adapters(Bindings4.new)
116
- end
117
-
118
- # Gets a list of active IPv6 network adapter configurations sorted by the
119
- # lowest IP connection metric. If two configurations have the same metric,
120
- # then the IPv6 specific binding order as specified in the registry will
121
- # be used.
122
- #
123
- # @return [Array<WIN32OLE>]
124
- #
125
- # @api private
126
- def self.get_preferred_ipv6_adapters
127
- get_preferred_network_adapters(Bindings6.new)
128
- end
129
-
130
- # Gets a list of active network adapter configurations sorted by the lowest
131
- # IP connection metric. If two configurations have the same metric, then
132
- # the adapter binding order as specified in the registry will be used.
133
- # Note the order may different for IPv4 vs IPv6 addresses.
134
- #
135
- # @see http://support.microsoft.com/kb/894564
136
- # @return [Array<WIN32OLE>]
137
- #
138
- # @api private
139
- def self.get_preferred_network_adapters(bindings)
140
- network_adapter_configurations.select do |nic|
141
- bindings.bindings.include?(nic.SettingID)
142
- end.sort do |nic_left,nic_right|
143
- cmp = nic_left.IPConnectionMetric <=> nic_right.IPConnectionMetric
144
- if cmp == 0
145
- bindings.bindings[nic_left.SettingID] <=> bindings.bindings[nic_right.SettingID]
146
- else
147
- cmp
148
- end
149
- end
150
- end
151
-
152
- class Bindings4
153
- def initialize
154
- @key = 'SYSTEM\CurrentControlSet\Services\Tcpip\Linkage'
155
- end
156
-
157
- def bindings
158
- require 'facter/util/registry'
159
- bindings = {}
160
-
161
- Facter::Util::Registry.hklm_read(@key, 'Bind').each_with_index do |entry, index|
162
- match_data = entry.match(/\\Device\\(\{.*\})/)
163
- unless match_data.nil?
164
- bindings[match_data[1]] = index
165
- end
166
- end
167
-
168
- bindings
169
- rescue
170
- {}
171
- end
172
- end
173
-
174
- class Bindings6 < Bindings4
175
- def initialize
176
- @key = 'SYSTEM\CurrentControlSet\Services\Tcpip6\Linkage'
177
- end
178
- end
179
-
180
- # Determines if the value passed in is a valid ipv4 address.
181
- #
182
- # @param [String] ip_address the IPv4 address to validate
183
- # @return [Boolean]
184
- #
185
- # @api private
186
- def self.valid_ipv4_address?(ip_address)
187
- String(ip_address).scan(/(?:[0-9]{1,3}\.){3}[0-9]{1,3}/).each do |match|
188
- # excluding 169.254.x.x in Windows - this is the DHCP APIPA
189
- # meaning that if the node cannot get an ip address from the dhcp server,
190
- # it auto-assigns a private ip address
191
- unless match == "127.0.0.1" or match =~ /^169.254.*/
192
- return !!match
193
- end
194
- end
195
-
196
- false
197
- end
198
-
199
- # Determines if the value passed in is a valid ipv6 address.
200
- #
201
- # @param [String] ip_address the IPv6 address to validate
202
- # @return [Boolean]
203
- #
204
- # @api private
205
- def self.valid_ipv6_address?(ip_address)
206
- String(ip_address).scan(/(?>[0-9,a-f,A-F]*\:{1,2})+[0-9,a-f,A-F]{0,4}/).each do |match|
207
- unless match =~ /fe80.*/ or match == "::1"
208
- return !!match
209
- end
210
- end
211
-
212
- false
213
- end
214
-
215
- end