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,97 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ describe Facter::Util::Config do
6
+ include PuppetlabsSpec::Files
7
+
8
+ describe "ENV['HOME'] is unset", :unless => Facter::Util::Root.root? do
9
+ around do |example|
10
+ Facter::Core::Execution.with_env('HOME' => nil) do
11
+ example.run
12
+ end
13
+ end
14
+
15
+ it "should not set @external_facts_dirs" do
16
+ Facter::Util::Config.setup_default_ext_facts_dirs
17
+ Facter::Util::Config.external_facts_dirs.should be_empty
18
+ end
19
+ end
20
+
21
+ describe "is_windows? function" do
22
+ it "should detect windows if Ruby RbConfig::CONFIG['host_os'] returns a windows OS" do
23
+ host_os = ["mswin","win32","dos","mingw","cygwin"]
24
+ host_os.each do |h|
25
+ RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
26
+ Facter::Util::Config.is_windows?.should be_true
27
+ end
28
+ end
29
+
30
+ it "should not detect windows if Ruby RbConfig::CONFIG['host_os'] returns a non-windows OS" do
31
+ host_os = ["darwin","linux"]
32
+ host_os.each do |h|
33
+ RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
34
+ Facter::Util::Config.is_windows?.should be_false
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "is_mac? function" do
40
+ it "should detect mac if Ruby RbConfig::CONFIG['host_os'] returns darwin" do
41
+ host_os = ["darwin"]
42
+ host_os.each do |h|
43
+ RbConfig::CONFIG.stubs(:[]).with('host_os').returns(h)
44
+ Facter::Util::Config.is_mac?.should be_true
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "external_facts_dirs" do
50
+ before :each do
51
+ Facter::Util::Root.stubs(:root?).returns(true)
52
+ end
53
+
54
+ it "should return the default value for linux" do
55
+ Facter::Util::Config.stubs(:is_windows?).returns(false)
56
+ Facter::Util::Config.stubs(:windows_data_dir).returns(nil)
57
+ Facter::Util::Config.setup_default_ext_facts_dirs
58
+ Facter::Util::Config.external_facts_dirs.should == ["/etc/facter/facts.d", "/etc/puppetlabs/facter/facts.d"]
59
+ end
60
+
61
+ it "should return the default value for windows 2008" do
62
+ Facter::Util::Config.stubs(:is_windows?).returns(true)
63
+ Facter::Util::Config.stubs(:windows_data_dir).returns("C:\\ProgramData")
64
+ Facter::Util::Config.setup_default_ext_facts_dirs
65
+ Facter::Util::Config.external_facts_dirs.should == [File.join("C:\\ProgramData", 'PuppetLabs', 'facter', 'facts.d')]
66
+ end
67
+
68
+ it "should return the default value for windows 2003R2" do
69
+ Facter::Util::Config.stubs(:is_windows?).returns(true)
70
+ Facter::Util::Config.stubs(:windows_data_dir).returns("C:\\Documents")
71
+ Facter::Util::Config.setup_default_ext_facts_dirs
72
+ Facter::Util::Config.external_facts_dirs.should == [File.join("C:\\Documents", 'PuppetLabs', 'facter', 'facts.d')]
73
+ end
74
+
75
+ it "returns the users home directory when not root" do
76
+ Facter::Util::Root.stubs(:root?).returns(false)
77
+ Facter::Util::Config.setup_default_ext_facts_dirs
78
+ Facter::Util::Config.external_facts_dirs.should == [File.expand_path(File.join("~", ".facter", "facts.d"))]
79
+ end
80
+
81
+ it "includes additional values when user appends to the list" do
82
+ Facter::Util::Config.setup_default_ext_facts_dirs
83
+ original_values = Facter::Util::Config.external_facts_dirs.dup
84
+ new_value = '/usr/share/newdir'
85
+ Facter::Util::Config.external_facts_dirs << new_value
86
+ Facter::Util::Config.external_facts_dirs.should == original_values + [new_value]
87
+ end
88
+
89
+ it "should only output new values when explicitly set" do
90
+ Facter::Util::Config.setup_default_ext_facts_dirs
91
+ new_value = ['/usr/share/newdir']
92
+ Facter::Util::Config.external_facts_dirs = new_value
93
+ Facter::Util::Config.external_facts_dirs.should == new_value
94
+ end
95
+
96
+ end
97
+ end
@@ -0,0 +1,148 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/confine'
5
+ require 'facter/util/values'
6
+
7
+ include Facter::Util::Values
8
+
9
+ describe Facter::Util::Confine do
10
+ it "should require a fact name" do
11
+ Facter::Util::Confine.new("yay", true).fact.should == "yay"
12
+ end
13
+
14
+ it "should accept a value specified individually" do
15
+ Facter::Util::Confine.new("yay", "test").values.should == ["test"]
16
+ end
17
+
18
+ it "should accept multiple values specified at once" do
19
+ Facter::Util::Confine.new("yay", "test", "other").values.should == ["test", "other"]
20
+ end
21
+
22
+ it "should fail if no fact name is provided" do
23
+ lambda { Facter::Util::Confine.new(nil, :test) }.should raise_error(ArgumentError)
24
+ end
25
+
26
+ it "should fail if no values were provided" do
27
+ lambda { Facter::Util::Confine.new("yay") }.should raise_error(ArgumentError)
28
+ end
29
+
30
+ it "should have a method for testing whether it matches" do
31
+ Facter::Util::Confine.new("yay", :test).should respond_to(:true?)
32
+ end
33
+
34
+ describe "when evaluating" do
35
+ def confined(fact_value, *confines)
36
+ @fact.stubs(:value).returns fact_value
37
+ Facter::Util::Confine.new("yay", *confines).true?
38
+ end
39
+
40
+ before do
41
+ @fact = mock 'fact'
42
+ Facter.stubs(:[]).returns @fact
43
+ end
44
+
45
+ it "should return false if the fact does not exist" do
46
+ Facter.expects(:[]).with("yay").returns nil
47
+
48
+ Facter::Util::Confine.new("yay", "test").true?.should be_false
49
+ end
50
+
51
+ it "should use the returned fact to get the value" do
52
+ Facter.expects(:[]).with("yay").returns @fact
53
+
54
+ @fact.expects(:value).returns nil
55
+
56
+ Facter::Util::Confine.new("yay", "test").true?
57
+ end
58
+
59
+ it "should return false if the fact has no value" do
60
+ confined(nil, "test").should be_false
61
+ end
62
+
63
+ it "should return true if any of the provided values matches the fact's value" do
64
+ confined("two", "two").should be_true
65
+ end
66
+
67
+ it "should return true if any of the provided symbol values matches the fact's value" do
68
+ confined(:xy, :xy).should be_true
69
+ end
70
+
71
+ it "should return true if any of the provided integer values matches the fact's value" do
72
+ confined(1, 1).should be_true
73
+ end
74
+
75
+ it "should return true if any of the provided boolan values matches the fact's value" do
76
+ confined(true, true).should be_true
77
+ end
78
+
79
+ it "should return true if any of the provided array values matches the fact's value" do
80
+ confined([3,4], [3,4]).should be_true
81
+ end
82
+
83
+ it "should return true if any of the provided symbol values matches the fact's string value" do
84
+ confined(:one, "one").should be_true
85
+ end
86
+
87
+ it "should return true if any of the provided string values matches case-insensitive the fact's value" do
88
+ confined("four", "Four").should be_true
89
+ end
90
+
91
+ it "should return true if any of the provided symbol values matches case-insensitive the fact's string value" do
92
+ confined(:four, "Four").should be_true
93
+ end
94
+
95
+ it "should return true if any of the provided symbol values matches the fact's string value" do
96
+ confined("xy", :xy).should be_true
97
+ end
98
+
99
+ it "should return true if any of the provided regexp values matches the fact's string value" do
100
+ confined("abc", /abc/).should be_true
101
+ end
102
+
103
+ it "should return true if any of the provided ranges matches the fact's value" do
104
+ confined(6, (5..7)).should be_true
105
+ end
106
+
107
+ it "should return false if none of the provided values matches the fact's value" do
108
+ confined("three", "two", "four").should be_false
109
+ end
110
+
111
+ it "should return false if none of the provided integer values matches the fact's value" do
112
+ confined(2, 1, [3,4], (5..7)).should be_false
113
+ end
114
+
115
+ it "should return false if none of the provided boolan values matches the fact's value" do
116
+ confined(false, true).should be_false
117
+ end
118
+
119
+ it "should return false if none of the provided array values matches the fact's value" do
120
+ confined([1,2], [3,4]).should be_false
121
+ end
122
+
123
+ it "should return false if none of the provided ranges matches the fact's value" do
124
+ confined(8, (5..7)).should be_false
125
+ end
126
+
127
+ it "should accept and evaluate a block argument against the fact" do
128
+ @fact.expects(:value).returns 'foo'
129
+ confine = Facter::Util::Confine.new :yay do |f| f === 'foo' end
130
+ confine.true?.should be_true
131
+ end
132
+
133
+ it "should return false if the block raises a StandardError when checking a fact" do
134
+ @fact.stubs(:value).returns 'foo'
135
+ confine = Facter::Util::Confine.new :yay do |f| raise StandardError end
136
+ confine.true?.should be_false
137
+ end
138
+
139
+ it "should accept and evaluate only a block argument" do
140
+ Facter::Util::Confine.new { true }.true?.should be_true
141
+ Facter::Util::Confine.new { false }.true?.should be_false
142
+ end
143
+
144
+ it "should return false if the block raises a StandardError" do
145
+ Facter::Util::Confine.new { raise StandardError }.true?.should be_false
146
+ end
147
+ end
148
+ end
@@ -0,0 +1,63 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/dhcp_servers'
5
+
6
+ describe Facter::Util::DHCPServers do
7
+
8
+ describe "retrieving the gateway device" do
9
+ it "returns nil when there are no default routes" do
10
+ Facter::Util::FileRead.stubs(:read).with('/proc/net/route').returns(my_fixture_read('route_nogw'))
11
+ described_class.gateway_device.should be_nil
12
+ end
13
+
14
+ it "returns the interface associated with the first default route" do
15
+ Facter::Util::FileRead.stubs(:read).with('/proc/net/route').returns(my_fixture_read('route'))
16
+ described_class.gateway_device.should eq "eth0"
17
+ end
18
+ end
19
+
20
+ describe "nmcli_version" do
21
+ {
22
+ 'nmcli tool, version 0.9.8.0' => [0, 9, 8, 0],
23
+ 'nmcli tool, version 0.9.8.10' => [0, 9, 8, 10],
24
+ 'nmcli tool, version 0.9.8.9' => [0, 9, 8, 9],
25
+ 'nmcli tool, version 0.9.9.0' => [0, 9, 9, 0],
26
+ 'nmcli tool, version 0.9.9.9' => [0, 9, 9, 9],
27
+ 'version 0.9.9.0-20.git20131003.fc20' => [0, 9, 9, 0],
28
+ 'nmcli tool, version 0.9.9' => [0, 9, 9, 0],
29
+ 'nmcli tool, version 0.9' => [0, 9, 0, 0],
30
+ 'nmcli tool, version 1' => [1, 0, 0, 0]
31
+ }.each do |version, expected|
32
+ it "should turn #{version} into the integer #{expected}" do
33
+ Facter::Core::Execution.stubs(:which).with('nmcli').returns('/usr/bin/nmcli')
34
+ Facter::Core::Execution.stubs(:exec).with('nmcli --version').returns(version)
35
+
36
+ result = Facter::Util::DHCPServers.nmcli_version
37
+ result.is_a?(Array).should be true
38
+ result.should == expected
39
+ end
40
+ end
41
+ end
42
+
43
+ describe "device_dhcp_server" do
44
+ {
45
+ '0.1.2.3' => false,
46
+ '0.9.8.10' => false,
47
+ '0.9.9.0' => true,
48
+ '0.9.10.0' => true,
49
+ '0.10.0.0' => true,
50
+ '1.0.0.0' => true
51
+ }.each do |version, uses_show|
52
+ it "should use #{if uses_show then 'show' else 'list' end} for version #{version}" do
53
+ command = if uses_show then 'nmcli -f all d show eth0' else 'nmcli -f all d list iface eth0' end
54
+ Facter::Core::Execution.stubs(:which).with('nmcli').returns('/usr/bin/nmcli')
55
+ Facter::Core::Execution.stubs(:exec).with('nmcli --version').returns "nmcli tool, version #{version}"
56
+ Facter::Core::Execution.stubs(:exec).with(command).returns 'DHCP4.OPTION[1]: dhcp_server_identifier = 192.168.1.1'
57
+ Facter::Util::DHCPServers.device_dhcp_server('eth0').should == '192.168.1.1'
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+
5
+ require 'facter/util/directory_loader'
6
+
7
+ describe Facter::Util::DirectoryLoader do
8
+ include PuppetlabsSpec::Files
9
+ include FacterSpec::ConfigHelper
10
+
11
+ subject { Facter::Util::DirectoryLoader.new(tmpdir('directory_loader')) }
12
+ let(:collection) { Facter::Util::Collection.new(mock("internal loader"), subject) }
13
+
14
+ it "should make the directory available" do
15
+ subject.directory.should be_instance_of(String)
16
+ end
17
+
18
+ it "can be created with a given directory" do
19
+ Facter::Util::DirectoryLoader.loader_for("ext").directory.should == "ext"
20
+ end
21
+
22
+ it "raises an error when the directory does not exist" do
23
+ missing_dir = "missing"
24
+ File.stubs(:directory?).with(missing_dir).returns(false)
25
+ expect { Facter::Util::DirectoryLoader.loader_for(missing_dir) }.to raise_error Facter::Util::DirectoryLoader::NoSuchDirectoryError
26
+ end
27
+
28
+ it "should do nothing bad when dir doesn't exist" do
29
+ fakepath = "/foobar/path"
30
+ my_loader = Facter::Util::DirectoryLoader.new(fakepath)
31
+ FileTest.exists?(my_loader.directory).should be_false
32
+ expect { my_loader.load(collection) }.to_not raise_error
33
+ end
34
+
35
+ describe "when loading facts from disk" do
36
+ it "should be able to load files from disk and set facts" do
37
+ data = {"f1" => "one", "f2" => "two"}
38
+ write_to_file("data.yaml", YAML.dump(data))
39
+
40
+ subject.load(collection)
41
+
42
+ collection.value("f1").should == "one"
43
+ collection.value("f2").should == "two"
44
+ end
45
+
46
+ it "should ignore files that begin with '.'" do
47
+ not_to_be_used_collection = mock("collection should not be used")
48
+ not_to_be_used_collection.expects(:add).never
49
+
50
+ data = {"f1" => "one", "f2" => "two"}
51
+ write_to_file(".data.yaml", YAML.dump(data))
52
+
53
+ subject.load(not_to_be_used_collection)
54
+ end
55
+
56
+ %w{bak orig}.each do |ext|
57
+ it "should ignore files with an extension of '#{ext}'" do
58
+ Facter.expects(:warn).with(regexp_matches(/#{ext}/))
59
+ write_to_file("data" + ".#{ext}", "foo=bar")
60
+
61
+ subject.load(collection)
62
+ end
63
+ end
64
+
65
+ it "should warn when trying to parse unknown file types" do
66
+ write_to_file("file.unknownfiletype", "stuff=bar")
67
+
68
+ Facter.expects(:warn).with(regexp_matches(/file.unknownfiletype/))
69
+
70
+ subject.load(collection)
71
+ end
72
+
73
+ it "external facts should almost always precedence over all other facts" do
74
+ Facter.add("f1", :value => "lower_weight_fact") { has_weight(Facter::Util::DirectoryLoader::EXTERNAL_FACT_WEIGHT - 1) }
75
+ data = {"f1" => "external_fact"}
76
+ write_to_file("data.yaml", YAML.dump(data))
77
+
78
+ subject.load(collection)
79
+
80
+ collection.value("f1").should == "external_fact"
81
+ end
82
+ end
83
+
84
+ def write_to_file(file_name, to_write)
85
+ file = File.join(subject.directory, file_name)
86
+ File.open(file, "w") { |f| f.print to_write}
87
+ end
88
+ end
@@ -0,0 +1,184 @@
1
+ #! /usr/bin/env ruby
2
+
3
+ require 'spec_helper'
4
+ require 'facter/util/ec2'
5
+
6
+ describe Facter::Util::EC2 do
7
+ before do
8
+ # Squelch deprecation notices
9
+ Facter.stubs(:warnonce)
10
+ end
11
+ # This is the standard prefix for making an API call in EC2 (or fake)
12
+ # environments.
13
+ let(:api_prefix) { "http://169.254.169.254" }
14
+
15
+ describe "is_ec2_arp? method" do
16
+ describe "on linux" do
17
+ before :each do
18
+ # Return fake kernel
19
+ Facter.stubs(:value).with(:kernel).returns("linux")
20
+ end
21
+
22
+ it "should succeed if arp table contains fe:ff:ff:ff:ff:ff" do
23
+ ec2arp = my_fixture_read("linux-arp-ec2.out")
24
+ Facter::Core::Execution.expects(:exec).with("arp -an").\
25
+ at_least_once.returns(ec2arp)
26
+ Facter::Util::EC2.has_ec2_arp?.should == true
27
+ end
28
+
29
+ it "should succeed if arp table contains FE:FF:FF:FF:FF:FF" do
30
+ ec2arp = my_fixture_read("centos-arp-ec2.out")
31
+ Facter::Core::Execution.expects(:exec).with("arp -an").\
32
+ at_least_once.returns(ec2arp)
33
+ Facter::Util::EC2.has_ec2_arp?.should == true
34
+ end
35
+
36
+ it "should fail if arp table does not contain fe:ff:ff:ff:ff:ff" do
37
+ ec2arp = my_fixture_read("linux-arp-not-ec2.out")
38
+ Facter::Core::Execution.expects(:exec).with("arp -an").
39
+ at_least_once.returns(ec2arp)
40
+ Facter::Util::EC2.has_ec2_arp?.should == false
41
+ end
42
+ end
43
+
44
+ describe "on windows" do
45
+ before :each do
46
+ # Return fake kernel
47
+ Facter.stubs(:value).with(:kernel).returns("windows")
48
+ end
49
+
50
+ it "should succeed if arp table contains fe-ff-ff-ff-ff-ff" do
51
+ ec2arp = my_fixture_read("windows-2008-arp-a.out")
52
+ Facter::Core::Execution.expects(:exec).with("arp -a").\
53
+ at_least_once.returns(ec2arp)
54
+ Facter::Util::EC2.has_ec2_arp?.should == true
55
+ end
56
+
57
+ it "should fail if arp table does not contain fe-ff-ff-ff-ff-ff" do
58
+ ec2arp = my_fixture_read("windows-2008-arp-a-not-ec2.out")
59
+ Facter::Core::Execution.expects(:exec).with("arp -a").
60
+ at_least_once.returns(ec2arp)
61
+ Facter::Util::EC2.has_ec2_arp?.should == false
62
+ end
63
+ end
64
+
65
+ describe "on solaris" do
66
+ before :each do
67
+ Facter.stubs(:value).with(:kernel).returns("SunOS")
68
+ end
69
+
70
+ it "should fail if arp table does not contain fe:ff:ff:ff:ff:ff" do
71
+ ec2arp = my_fixture_read("solaris8_arp_a_not_ec2.out")
72
+
73
+ Facter::Core::Execution.expects(:exec).with("arp -a").
74
+ at_least_once.returns(ec2arp)
75
+
76
+ Facter::Util::EC2.has_ec2_arp?.should == false
77
+ end
78
+ end
79
+ end
80
+
81
+ describe "is_euca_mac? method" do
82
+ it "should return true when the mac is a eucalyptus one" do
83
+ Facter.expects(:value).with(:macaddress).\
84
+ at_least_once.returns("d0:0d:1a:b0:a1:00")
85
+
86
+ Facter::Util::EC2.has_euca_mac?.should == true
87
+ end
88
+
89
+ it "should return false when the mac is not a eucalyptus one" do
90
+ Facter.expects(:value).with(:macaddress).\
91
+ at_least_once.returns("0c:1d:a0:bc:aa:02")
92
+
93
+ Facter::Util::EC2.has_euca_mac?.should == false
94
+ end
95
+ end
96
+
97
+ describe "is_openstack_mac? method" do
98
+ it "should return true when the mac is an openstack one" do
99
+ Facter.expects(:value).with(:macaddress).\
100
+ at_least_once.returns("02:16:3e:54:89:fd")
101
+
102
+ Facter::Util::EC2.has_openstack_mac?.should == true
103
+ end
104
+
105
+ it "should return true when the mac is a newer openstack mac" do
106
+ # https://github.com/openstack/nova/commit/b684d651f540fc512ced58acd5ae2ef4d55a885c#nova/utils.py
107
+ Facter.expects(:value).with(:macaddress).\
108
+ at_least_once.returns("fa:16:3e:54:89:fd")
109
+
110
+ Facter::Util::EC2.has_openstack_mac?.should == true
111
+ end
112
+
113
+ it "should return true when the mac is a newer openstack mac and returned in upper case" do
114
+ # https://github.com/openstack/nova/commit/b684d651f540fc512ced58acd5ae2ef4d55a885c#nova/utils.py
115
+ Facter.expects(:value).with(:macaddress).\
116
+ at_least_once.returns("FA:16:3E:54:89:FD")
117
+
118
+ Facter::Util::EC2.has_openstack_mac?.should == true
119
+ end
120
+
121
+ it "should return false when the mac is not a openstack one" do
122
+ Facter.expects(:value).with(:macaddress).\
123
+ at_least_once.returns("0c:1d:a0:bc:aa:02")
124
+
125
+ Facter::Util::EC2.has_openstack_mac?.should == false
126
+ end
127
+ end
128
+
129
+ describe "can_connect? method" do
130
+ it "returns true if api responds" do
131
+ # Return something upon connecting to the root
132
+ Module.any_instance.expects(:open).with("#{api_prefix}:80/").
133
+ at_least_once.returns("2008-02-01\nlatest")
134
+
135
+ Facter::Util::EC2.can_connect?.should be_true
136
+ end
137
+
138
+ describe "when connection times out" do
139
+ it "should return false" do
140
+ # Emulate a timeout when connecting by throwing an exception
141
+ Module.any_instance.expects(:open).with("#{api_prefix}:80/").
142
+ at_least_once.raises(RuntimeError)
143
+
144
+ Facter::Util::EC2.can_connect?.should be_false
145
+ end
146
+ end
147
+
148
+ describe "when connection is refused" do
149
+ it "should return false" do
150
+ # Emulate a connection refused
151
+ Module.any_instance.expects(:open).with("#{api_prefix}:80/").
152
+ at_least_once.raises(Errno::ECONNREFUSED)
153
+
154
+ Facter::Util::EC2.can_connect?.should be_false
155
+ end
156
+ end
157
+ end
158
+
159
+ describe "Facter::Util::EC2.userdata" do
160
+ let :not_found_error do
161
+ OpenURI::HTTPError.new("404 Not Found", StringIO.new)
162
+ end
163
+
164
+ let :example_userdata do
165
+ "owner=jeff@puppetlabs.com\ngroup=platform_team"
166
+ end
167
+
168
+ it 'returns nil when no userdata is present' do
169
+ Facter::Util::EC2.stubs(:read_uri).raises(not_found_error)
170
+ Facter::Util::EC2.userdata.should be_nil
171
+ end
172
+
173
+ it "returns the string containing the body" do
174
+ Facter::Util::EC2.stubs(:read_uri).returns(example_userdata)
175
+ Facter::Util::EC2.userdata.should == example_userdata
176
+ end
177
+
178
+ it "uses the specified API version" do
179
+ expected_uri = "http://169.254.169.254/2008-02-01/user-data/"
180
+ Facter::Util::EC2.expects(:read_uri).with(expected_uri).returns(example_userdata)
181
+ Facter::Util::EC2.userdata('2008-02-01').should == example_userdata
182
+ end
183
+ end
184
+ end