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,42 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/vlans'
5
+
6
+ describe Facter::Util::Vlans do
7
+ let(:vlan_file) { "/proc/net/vlan/config" }
8
+
9
+ describe "reading the vlan configuration" do
10
+ it "uses the contents of /proc/net/vlan/config" do
11
+ File.expects(:exist?).with(vlan_file).returns true
12
+ File.expects(:readable?).with(vlan_file).returns true
13
+ File.expects(:read).with(vlan_file).returns "vlan contents here"
14
+
15
+ expect(Facter::Util::Vlans.get_vlan_config).to eq "vlan contents here"
16
+ end
17
+
18
+ it "returns nil when /proc/net/vlan/config is absent" do
19
+ File.expects(:exist?).with(vlan_file).returns false
20
+ expect(Facter::Util::Vlans.get_vlan_config).to be_nil
21
+ end
22
+ end
23
+
24
+ describe "parsing the vlan configuration" do
25
+ let(:vlan_content) { my_fixture_read("linux_vlan_config") }
26
+
27
+ it "returns a list of vlans on Linux when vlans are configured" do
28
+ Facter::Util::Vlans.stubs(:get_vlan_config).returns(vlan_content)
29
+ expect(Facter::Util::Vlans.get_vlans()).to eq %{400,300,200,100}
30
+ end
31
+
32
+ it "returns nil when no vlans are configured" do
33
+ Facter::Util::Vlans.stubs(:get_vlan_config).returns(nil)
34
+ expect(Facter::Util::Vlans.get_vlans()).to be_nil
35
+ end
36
+
37
+ it "returns nil when only the vlan header is returned" do
38
+ Facter::Util::Vlans.stubs(:get_vlan_config).returns(my_fixture_read("centos-5-no-vlans"))
39
+ expect(Facter::Util::Vlans.get_vlans()).to be_nil
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,19 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/wmi'
5
+
6
+ describe Facter::Util::WMI do
7
+ let(:connection) { stub 'connection' }
8
+
9
+ it "should default to localhost" do
10
+ Facter::Util::WMI.wmi_resource_uri.should == "winmgmts:{impersonationLevel=impersonate}!//./root/cimv2"
11
+ end
12
+
13
+ it "should execute the query on the connection" do
14
+ Facter::Util::WMI.stubs(:connect).returns(connection)
15
+ connection.stubs(:execquery).with("select * from Win32_OperatingSystem")
16
+
17
+ Facter::Util::WMI.execquery("select * from Win32_OperatingSystem")
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/xendomains'
5
+
6
+ describe Facter::Util::Xendomains do
7
+ describe ".get_domains" do
8
+ it "should return a list of running Xen Domains on Xen0" do
9
+ xen0_domains = my_fixture_read("xendomains")
10
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/xm list 2>/dev/null').returns(xen0_domains)
11
+ Facter::Util::Xendomains.get_domains.should == %{web01,mailserver}
12
+ end
13
+
14
+ describe "when xm list isn't executable" do
15
+ it "should be nil" do
16
+ Facter::Core::Execution.stubs(:exec).with('/usr/sbin/xm list 2>/dev/null').returns(nil)
17
+ Facter::Util::Xendomains.get_domains.should == nil
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,42 @@
1
+ require "spec_helper"
2
+ require "facter/version"
3
+ require 'pathname'
4
+
5
+ describe "Facter.version Public API" do
6
+ before :each do
7
+ Facter.instance_eval do
8
+ if @facter_version
9
+ @facter_version = nil
10
+ end
11
+ end
12
+ end
13
+
14
+ context "without a VERSION file" do
15
+ before :each do
16
+ Facter.stubs(:read_version_file).returns(nil)
17
+ end
18
+
19
+ it "is Facter::FACTERVERSION" do
20
+ Facter.version.should == Facter::FACTERVERSION
21
+ end
22
+ it "respects the version= setter" do
23
+ Facter.version = '1.2.3'
24
+ Facter.version.should == '1.2.3'
25
+ end
26
+ end
27
+
28
+ context "with a VERSION file" do
29
+ it "is the content of the file" do
30
+ Facter.expects(:read_version_file).with() do |path|
31
+ pathname = Pathname.new(path)
32
+ pathname.basename.to_s == "VERSION"
33
+ end.returns('1.6.14-6-gea42046')
34
+
35
+ Facter.version.should == '1.6.14-6-gea42046'
36
+ end
37
+ it "respects the version= setter" do
38
+ Facter.version = '1.2.3'
39
+ Facter.version.should == '1.2.3'
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,519 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/virtual'
5
+ require 'facter/util/macosx' unless Facter::Util::Config.is_windows?
6
+
7
+ describe "Virtual fact" do
8
+ before(:each) do
9
+ Facter::Util::Virtual.stubs(:docker?).returns(false)
10
+ Facter::Util::Virtual.stubs(:lxc?).returns(false)
11
+ Facter::Util::Virtual.stubs(:zone?).returns(false)
12
+ Facter::Util::Virtual.stubs(:openvz?).returns(false)
13
+ Facter::Util::Virtual.stubs(:vserver?).returns(false)
14
+ Facter::Util::Virtual.stubs(:xen?).returns(false)
15
+ Facter::Util::Virtual.stubs(:kvm?).returns(false)
16
+ Facter::Util::Virtual.stubs(:hpvm?).returns(false)
17
+ Facter::Util::Virtual.stubs(:zlinux?).returns(false)
18
+ Facter::Util::Virtual.stubs(:virt_what).returns(nil)
19
+ Facter::Util::Virtual.stubs(:rhev?).returns(false)
20
+ Facter::Util::Virtual.stubs(:ovirt?).returns(false)
21
+ Facter::Util::Virtual.stubs(:gce?).returns(false)
22
+ Facter::Util::Virtual.stubs(:virtualbox?).returns(false)
23
+ end
24
+
25
+ it "should be zone on Solaris when a zone" do
26
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
27
+ Facter::Util::Virtual.stubs(:zone?).returns(true)
28
+ Facter::Util::Virtual.stubs(:vserver?).returns(false)
29
+ Facter::Util::Virtual.stubs(:xen?).returns(false)
30
+ Facter.fact(:virtual).value.should == "zone"
31
+ end
32
+
33
+ it "should be jail on FreeBSD when a jail in kvm" do
34
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
35
+ Facter::Util::Virtual.stubs(:jail?).returns(true)
36
+ Facter::Util::Virtual.stubs(:kvm?).returns(true)
37
+ Facter.fact(:virtual).value.should == "jail"
38
+ end
39
+
40
+ it "should be hpvm on HP-UX when in HP-VM" do
41
+ Facter.fact(:kernel).stubs(:value).returns("HP-UX")
42
+ Facter::Util::Virtual.stubs(:hpvm?).returns(true)
43
+ Facter.fact(:virtual).value.should == "hpvm"
44
+ end
45
+
46
+ it "should be zlinux on s390x" do
47
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
48
+ Facter.fact(:architecture).stubs(:value).returns("s390x")
49
+ Facter::Util::Virtual.stubs(:zlinux?).returns(true)
50
+ Facter.fact(:virtual).value.should == "zlinux"
51
+ end
52
+
53
+ describe "on Darwin", :unless => Facter::Util::Config.is_windows? do
54
+ before do
55
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
56
+ end
57
+
58
+ it "should be parallels with Parallels ethernet vendor id" do
59
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "spethernet_subsystem-vendor-id" => "0x1ab8" })
60
+ Facter.fact(:virtual).value.should == "parallels"
61
+ end
62
+
63
+ it "should be virtualbox with VirtualBox boot rom name" do
64
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "boot_rom_version" => "VirtualBox" })
65
+ Facter.fact(:virtual).value.should == "virtualbox"
66
+ end
67
+
68
+ it "should be vmware with VMware machine model" do
69
+ Facter::Util::Macosx.stubs(:profiler_data).returns({ "machine_model" => "VMware7,1" })
70
+ Facter.fact(:virtual).value.should == "vmware"
71
+ end
72
+ end
73
+
74
+ describe "on Linux" do
75
+ before(:each) do
76
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
77
+ Facter.fact(:operatingsystem).stubs(:value).returns("Linux")
78
+
79
+ Facter::Core::Execution.stubs(:exec).with("vmware -v").returns false
80
+
81
+ FileTest.stubs(:exists?).with("/proc/sys/xen").returns false
82
+ FileTest.stubs(:exists?).with("/sys/bus/xen").returns false
83
+ FileTest.stubs(:exists?).with("/proc/xen").returns false
84
+ Facter.fact(:architecture).stubs(:value).returns(true)
85
+ end
86
+
87
+ it "should be parallels with Parallels vendor id from lspci 2>/dev/null" do
88
+ Facter::Util::Virtual.stubs(:lspci).returns("01:00.0 VGA compatible controller: Unknown device 1ab8:4005")
89
+ Facter.fact(:virtual).value.should == "parallels"
90
+ end
91
+
92
+ it "should be parallels with Parallels vendor name from lspci 2>/dev/null" do
93
+ Facter::Util::Virtual.stubs(:lspci).returns("01:00.0 VGA compatible controller: Parallels Display Adapter")
94
+ Facter.fact(:virtual).value.should == "parallels"
95
+ end
96
+
97
+ it "should be vmware with VMware vendor name from lspci 2>/dev/null" do
98
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter")
99
+ Facter.fact(:virtual).value.should == "vmware"
100
+ end
101
+
102
+ it "should be virtualbox with VirtualBox vendor name from lspci 2>/dev/null" do
103
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:02.0 VGA compatible controller: InnoTek Systemberatung GmbH VirtualBox Graphics Adapter")
104
+ Facter.fact(:virtual).value.should == "virtualbox"
105
+ end
106
+
107
+ it "should be vmware with VMWare vendor name from dmidecode" do
108
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
109
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("On Board Device 1 Information\nType: Video\nStatus: Disabled\nDescription: VMware SVGA II")
110
+ Facter.fact(:virtual).value.should == "vmware"
111
+ end
112
+
113
+ it "should be xen0 with xen dom0 files in /proc" do
114
+ Facter.fact(:hardwaremodel).stubs(:value).returns("i386")
115
+ Facter::Util::Virtual.expects(:xen?).returns(true)
116
+ FileTest.expects(:exists?).with("/dev/xen/evtchn").returns(true)
117
+ Facter.fact(:virtual).value.should == "xen0"
118
+ end
119
+
120
+ it "should be xenu with xen domU files in /proc" do
121
+ Facter.fact(:hardwaremodel).stubs(:value).returns("i386")
122
+ Facter::Util::Virtual.expects(:xen?).returns(true)
123
+ FileTest.expects(:exists?).with("/dev/xen/evtchn").returns(false)
124
+ FileTest.expects(:exists?).with("/proc/xen").returns(true)
125
+ Facter.fact(:virtual).value.should == "xenu"
126
+ end
127
+
128
+ it "should be xenhvm with Xen HVM vendor name from lspci 2>/dev/null" do
129
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:03.0 Unassigned class [ff80]: XenSource, Inc. Xen Platform Device (rev 01)")
130
+ Facter.fact(:virtual).value.should == "xenhvm"
131
+ end
132
+
133
+ it "should be xenhvm with Xen HVM vendor name from dmidecode" do
134
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
135
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("System Information\nManufacturer: Xen\nProduct Name: HVM domU")
136
+ Facter.fact(:virtual).value.should == "xenhvm"
137
+ end
138
+
139
+ it "should be parallels with Parallels vendor name from dmidecode" do
140
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
141
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("On Board Device Information\nType: Video\nStatus: Disabled\nDescription: Parallels Video Adapter")
142
+ Facter.fact(:virtual).value.should == "parallels"
143
+ end
144
+
145
+ it "should be virtualbox with VirtualBox vendor name from dmidecode" do
146
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
147
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("BIOS Information\nVendor: innotek GmbH\nVersion: VirtualBox\n\nSystem Information\nManufacturer: innotek GmbH\nProduct Name: VirtualBox\nFamily: Virtual Machine")
148
+ Facter.fact(:virtual).value.should == "virtualbox"
149
+ end
150
+
151
+ it "should be rhev with RHEV Hypervisor product name from dmidecode" do
152
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
153
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
154
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("Product Name: RHEV Hypervisor")
155
+ Facter.fact(:virtual).value.should == "rhev"
156
+ end
157
+
158
+ it "should be ovirt with oVirt Node product name from dmidecode" do
159
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
160
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
161
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("Product Name: oVirt Node")
162
+ Facter.fact(:virtual).value.should == "ovirt"
163
+ end
164
+
165
+ it "is gce based on DMI info" do
166
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
167
+ Facter::Util::Virtual.stubs(:gce?).returns(true)
168
+ Facter.fact(:virtual).value.should == "gce"
169
+ end
170
+
171
+ it "should be hyperv with Microsoft vendor name from lspci 2>/dev/null" do
172
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:08.0 VGA compatible controller: Microsoft Corporation Hyper-V virtual VGA")
173
+ Facter.fact(:virtual).value.should == "hyperv"
174
+ end
175
+
176
+ it "should be hyperv with Microsoft vendor name from dmidecode" do
177
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
178
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("System Information\nManufacturer: Microsoft Corporation\nProduct Name: Virtual Machine")
179
+ Facter.fact(:virtual).value.should == "hyperv"
180
+ end
181
+
182
+ context "In a Linux Container (LXC)" do
183
+ before :each do
184
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
185
+ end
186
+
187
+ it 'is "lxc" when Facter::Util::Virtual.lxc? is true' do
188
+ Facter::Util::Virtual.stubs(:lxc?).returns(true)
189
+ Facter.fact(:virtual).value.should == 'lxc'
190
+ end
191
+ end
192
+
193
+ context "In a Docker Container (docker)" do
194
+ before :each do
195
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
196
+ end
197
+
198
+ it 'is "docker" when Facter::Util::Virtual.docker? is true' do
199
+ Facter::Util::Virtual.stubs(:docker?).returns(true)
200
+ Facter.fact(:virtual).value.should == 'docker'
201
+ end
202
+ end
203
+
204
+ context "In Google Compute Engine" do
205
+ before :each do
206
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
207
+ end
208
+
209
+ context "Without /sys/firmware/dmi/entries/1-0/raw" do
210
+ before :each do
211
+ Facter::Util::Virtual.stubs(:read_sysfs_dmi_entries).returns(nil)
212
+ end
213
+
214
+ it "should be gce with gce vendor name from lspci 2>/dev/null" do
215
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("00:05.0 Class 8007: Google, Inc. Device 6442")
216
+ Facter.fact(:virtual).value.should == "gce"
217
+ end
218
+ end
219
+
220
+ context "With /sys/firmware/dmi/entries/1-0/raw" do
221
+ let :sysfs_dmi_raw do
222
+ my_fixture_read('sysfs_dmi_entries_raw.txt')
223
+ end
224
+
225
+ before :each do
226
+ Facter::Util::Virtual.stubs(:read_sysfs_dmi_entries).returns(sysfs_dmi_raw)
227
+ end
228
+
229
+ it "(#17612) is 'gce'" do
230
+ Facter.fact(:virtual).value.should == "gce"
231
+ end
232
+ end
233
+ end
234
+
235
+ it "(#20236) is vmware when dmidecode contains vmware and lspci returns insufficient information" do
236
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns("garbage\ninformation\n")
237
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns("On Board Device 1 Information\nType: Video\nStatus: Disabled\nDescription: VMware SVGA II")
238
+ Facter.fact(:virtual).value.should eq("vmware")
239
+ end
240
+ end
241
+
242
+ describe "on Solaris" do
243
+ before(:each) do
244
+ Facter::Core::Execution.stubs(:exec).with("vmware -v").returns false
245
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
246
+ end
247
+
248
+ it "should be vmware with VMWare vendor name from prtdiag" do
249
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
250
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
251
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
252
+ Facter::Core::Execution.stubs(:exec).with('prtdiag').returns("System Configuration: VMware, Inc. VMware Virtual Platform")
253
+ Facter.fact(:virtual).value.should == "vmware"
254
+ end
255
+
256
+ it "should be parallels with Parallels vendor name from prtdiag" do
257
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
258
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
259
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
260
+ Facter::Core::Execution.stubs(:exec).with('prtdiag').returns("System Configuration: Parallels Virtual Platform")
261
+ Facter.fact(:virtual).value.should == "parallels"
262
+ end
263
+
264
+ it "should be virtualbox with VirtualBox vendor name from prtdiag" do
265
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
266
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
267
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
268
+ Facter::Core::Execution.stubs(:exec).with('prtdiag').returns("System Configuration: innotek GmbH VirtualBox")
269
+ Facter.fact(:virtual).value.should == "virtualbox"
270
+ end
271
+ end
272
+
273
+ describe "on OpenBSD" do
274
+ before do
275
+ Facter::Core::Execution.stubs(:exec).with("vmware -v").returns false
276
+ Facter.fact(:kernel).stubs(:value).returns("OpenBSD")
277
+ Facter.fact(:hardwaremodel).stubs(:value).returns(nil)
278
+ Facter::Core::Execution.stubs(:exec).with('lspci 2>/dev/null').returns(nil)
279
+ Facter::Core::Execution.stubs(:exec).with('dmidecode 2> /dev/null').returns(nil)
280
+ end
281
+
282
+ it "should be parallels with Parallels product name from sysctl" do
283
+ Facter::Util::POSIX.stubs(:sysctl).with('hw.product').returns("Parallels Virtual Platform")
284
+ Facter.fact(:virtual).value.should == "parallels"
285
+ end
286
+
287
+ it "should be vmware with VMware product name from sysctl" do
288
+ Facter::Util::POSIX.stubs(:sysctl).with('hw.product').returns("VMware Virtual Platform")
289
+ Facter.fact(:virtual).value.should == "vmware"
290
+ end
291
+
292
+ it "should be virtualbox with VirtualBox product name from sysctl" do
293
+ Facter::Util::POSIX.stubs(:sysctl).with('hw.product').returns("VirtualBox")
294
+ Facter.fact(:virtual).value.should == "virtualbox"
295
+ end
296
+
297
+ it "should be xenhvm with Xen HVM product name from sysctl" do
298
+ Facter::Util::POSIX.stubs(:sysctl).with('hw.product').returns("HVM domU")
299
+ Facter.fact(:virtual).value.should == "xenhvm"
300
+ end
301
+
302
+ it "should be ovirt with oVirt Node product name from sysctl" do
303
+ Facter::Util::POSIX.stubs(:sysctl).with('hw.product').returns("oVirt Node")
304
+ Facter.fact(:virtual).value.should == "ovirt"
305
+ end
306
+ end
307
+
308
+ describe "on Windows" do
309
+ require 'facter/util/wmi'
310
+ before do
311
+ Facter.fact(:kernel).stubs(:value).returns("windows")
312
+ Facter.fact(:architecture).stubs(:value).returns("x64")
313
+ end
314
+
315
+ it "should be kvm with KVM model name from Win32_ComputerSystem" do
316
+ computersystem = mock('computersystem', :model => 'KVM')
317
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
318
+ Facter.fact(:virtual).value.should == "kvm"
319
+ end
320
+
321
+ it "should be hyperv with Virtual Machine model name and Microsoft Corporation manufacturer from Win32_ComputerSystem" do
322
+ computersystem = mock('computersystem', :manufacturer => 'Microsoft Corporation', :model => 'Virtual Machine')
323
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
324
+ Facter.fact(:virtual).value.should == "hyperv"
325
+ end
326
+
327
+ it "should be virtualbox with VirtualBox model name from Win32_ComputerSystem" do
328
+ computersystem = mock('computersystem', :model => 'VirtualBox')
329
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
330
+ Facter.fact(:virtual).value.should == "virtualbox"
331
+ end
332
+
333
+ it "should be vmware with VMware like model name from Win32_ComputerSystem" do
334
+ computersystem = mock('computersystem', :model => 'VMware Virtual Platform')
335
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
336
+ Facter.fact(:virtual).value.should == "vmware"
337
+ end
338
+
339
+ it "resolves as Xen with a manufacturer name like xen" do
340
+ computersystem = mock('computersystem', :model => nil, :manufacturer => 'Xen')
341
+ Facter::Util::WMI.expects(:execquery).returns([computersystem])
342
+ Facter.fact(:virtual).value.should == "xen"
343
+ end
344
+ end
345
+
346
+ describe "with the virt-what command available (#8210)" do
347
+ describe "when the output of virt-what disagrees with lower weight facts" do
348
+ virt_what_map = {
349
+ 'xen-hvm' => 'xenhvm',
350
+ 'xen-dom0' => 'xen0',
351
+ 'xen-domU' => 'xenu',
352
+ 'ibm_systemz' => 'zlinux',
353
+ }
354
+
355
+ virt_what_map.each do |input,output|
356
+ it "maps #{input} to #{output}" do
357
+ Facter::Util::Virtual.expects(:virt_what).returns(input)
358
+ Facter.value(:virtual).should == output
359
+ end
360
+ end
361
+ end
362
+
363
+ describe "arbitrary outputs of virt-what" do
364
+ it "returns the last line output from virt-what" do
365
+ Facter::Util::Virtual.expects(:virt_what).returns("one\ntwo\nthree space\n")
366
+ Facter.value(:virtual).should == "three space"
367
+ end
368
+ end
369
+
370
+ describe "when virt-what returns linux_vserver" do
371
+ it "delegates to Facter::Util::Virtual.vserver_type" do
372
+ Facter::Util::Virtual.expects(:virt_what).returns("linux_vserver")
373
+ Facter::Util::Virtual.expects(:vserver_type).returns("fake_vserver_type")
374
+ Facter.value(:virtual).should == "fake_vserver_type"
375
+ end
376
+ end
377
+ end
378
+ end
379
+
380
+ describe "is_virtual fact" do
381
+ it "should be virtual when running on xen" do
382
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
383
+ Facter.fact(:virtual).stubs(:value).returns("xenu")
384
+ Facter.fact(:is_virtual).value.should == "true"
385
+ end
386
+
387
+ it "should be false when running on xen0" do
388
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
389
+ Facter.fact(:virtual).stubs(:value).returns("xen0")
390
+ Facter.fact(:is_virtual).value.should == "false"
391
+ end
392
+
393
+ it "should be true when running on xenhvm" do
394
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
395
+ Facter.fact(:virtual).stubs(:value).returns("xenhvm")
396
+ Facter.fact(:is_virtual).value.should == "true"
397
+ end
398
+
399
+ it "should be false when running on physical" do
400
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
401
+ Facter.fact(:virtual).stubs(:value).returns("physical")
402
+ Facter.fact(:is_virtual).value.should == "false"
403
+ end
404
+
405
+ it "should be true when running on vmware" do
406
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
407
+ Facter.fact(:virtual).stubs(:value).returns("vmware")
408
+ Facter.fact(:is_virtual).value.should == "true"
409
+ end
410
+
411
+ it "should be true when running on virtualbox" do
412
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
413
+ Facter.fact(:virtual).stubs(:value).returns("virtualbox")
414
+ Facter.fact(:is_virtual).value.should == "true"
415
+ end
416
+
417
+ it "should be true when running on openvzve" do
418
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
419
+ Facter.fact(:virtual).stubs(:value).returns("openvzve")
420
+ Facter.fact(:is_virtual).value.should == "true"
421
+ end
422
+
423
+ it "should be true when running on vserver" do
424
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
425
+ Facter.fact(:virtual).stubs(:value).returns("vserver")
426
+ Facter.fact(:is_virtual).value.should == "true"
427
+ end
428
+
429
+ it "should be true when running on kvm" do
430
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
431
+ Facter.fact(:virtual).stubs(:value).returns("kvm")
432
+ Facter.fact(:is_virtual).value.should == "true"
433
+ end
434
+
435
+ it "should be true when running in jail" do
436
+ Facter.fact(:kernel).stubs(:value).returns("FreeBSD")
437
+ Facter.fact(:virtual).stubs(:value).returns("jail")
438
+ Facter.fact(:is_virtual).value.should == "true"
439
+ end
440
+
441
+ it "should be true when running in zone" do
442
+ Facter.fact(:kernel).stubs(:value).returns("SunOS")
443
+ Facter.fact(:virtual).stubs(:value).returns("zone")
444
+ Facter.fact(:is_virtual).value.should == "true"
445
+ end
446
+
447
+ it "should be true when running on hp-vm" do
448
+ Facter.fact(:kernel).stubs(:value).returns("HP-UX")
449
+ Facter.fact(:virtual).stubs(:value).returns("hpvm")
450
+ Facter.fact(:is_virtual).value.should == "true"
451
+ end
452
+
453
+ it "should be true when running on S390" do
454
+ Facter.fact(:architecture).stubs(:value).returns("s390x")
455
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
456
+ Facter.fact(:virtual).stubs(:value).returns("zlinux")
457
+ Facter.fact(:is_virtual).value.should == "true"
458
+ end
459
+
460
+ it "should be true when running on parallels" do
461
+ Facter.fact(:kernel).stubs(:value).returns("Darwin")
462
+ Facter.fact(:virtual).stubs(:value).returns("parallels")
463
+ Facter.fact(:is_virtual).value.should == "true"
464
+ end
465
+
466
+ it "should be false on vmware_server" do
467
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
468
+ Facter.fact(:virtual).stubs(:value).returns("vmware_server")
469
+ Facter.fact(:is_virtual).value.should == "false"
470
+ end
471
+
472
+ it "should be false on openvz host nodes" do
473
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
474
+ Facter.fact(:virtual).stubs(:value).returns("openvzhn")
475
+ Facter.fact(:is_virtual).value.should == "false"
476
+ end
477
+
478
+ it "should be false on vserver host nodes" do
479
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
480
+ Facter.fact(:virtual).stubs(:value).returns("vserver_host")
481
+ Facter.fact(:is_virtual).value.should == "false"
482
+ end
483
+
484
+ it "should be true when running on hyperv" do
485
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
486
+ Facter.fact(:virtual).stubs(:value).returns("hyperv")
487
+ Facter.fact(:is_virtual).value.should == "true"
488
+ end
489
+
490
+ it "should be true when running on rhev" do
491
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
492
+ Facter.fact(:virtual).stubs(:value).returns("rhev")
493
+ Facter.fact(:is_virtual).value.should == "true"
494
+ end
495
+
496
+ it "should be true when running on ovirt" do
497
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
498
+ Facter.fact(:virtual).stubs(:value).returns("ovirt")
499
+ Facter.fact(:is_virtual).value.should == "true"
500
+ end
501
+
502
+ it "should be true when running on ovirt" do
503
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
504
+ Facter.fact(:virtual).stubs(:value).returns("gce")
505
+ Facter.fact(:is_virtual).value.should == "true"
506
+ end
507
+
508
+ it "should be true when running in LXC" do
509
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
510
+ Facter.fact(:virtual).stubs(:value).returns("lxc")
511
+ Facter.fact(:is_virtual).value.should == "true"
512
+ end
513
+
514
+ it "should be true when running in docker" do
515
+ Facter.fact(:kernel).stubs(:value).returns("Linux")
516
+ Facter.fact(:virtual).stubs(:value).returns("docker")
517
+ Facter.fact(:is_virtual).value.should == "true"
518
+ end
519
+ end