specinfra-rb19 2.44.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (406) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.gitmodules +3 -0
  4. data/.travis.yml +19 -0
  5. data/Gemfile +4 -0
  6. data/Guardfile +7 -0
  7. data/LICENSE.txt +22 -0
  8. data/README.md +39 -0
  9. data/Rakefile +43 -0
  10. data/appveyor.yml +56 -0
  11. data/examples/multiple_backends.rb +46 -0
  12. data/lib/specinfra.rb +45 -0
  13. data/lib/specinfra/backend.rb +12 -0
  14. data/lib/specinfra/backend/base.rb +55 -0
  15. data/lib/specinfra/backend/cmd.rb +68 -0
  16. data/lib/specinfra/backend/docker.rb +113 -0
  17. data/lib/specinfra/backend/dockerfile.rb +32 -0
  18. data/lib/specinfra/backend/exec.rb +152 -0
  19. data/lib/specinfra/backend/lxc.rb +45 -0
  20. data/lib/specinfra/backend/powershell/command.rb +40 -0
  21. data/lib/specinfra/backend/powershell/script_helper.rb +86 -0
  22. data/lib/specinfra/backend/powershell/support/check_file_access_rules.ps1 +8 -0
  23. data/lib/specinfra/backend/powershell/support/crop_text.ps1 +11 -0
  24. data/lib/specinfra/backend/powershell/support/find_group.ps1 +8 -0
  25. data/lib/specinfra/backend/powershell/support/find_iis_component.ps1 +90 -0
  26. data/lib/specinfra/backend/powershell/support/find_installed_application.ps1 +37 -0
  27. data/lib/specinfra/backend/powershell/support/find_installed_hot_fix.ps1 +18 -0
  28. data/lib/specinfra/backend/powershell/support/find_scheduled_task.ps1 +7 -0
  29. data/lib/specinfra/backend/powershell/support/find_service.ps1 +5 -0
  30. data/lib/specinfra/backend/powershell/support/find_user.ps1 +8 -0
  31. data/lib/specinfra/backend/powershell/support/find_usergroup.ps1 +9 -0
  32. data/lib/specinfra/backend/powershell/support/is_port_listening.ps1 +15 -0
  33. data/lib/specinfra/backend/powershell/support/is_remote_port_listening.ps1 +51 -0
  34. data/lib/specinfra/backend/powershell/support/list_windows_features.ps1 +68 -0
  35. data/lib/specinfra/backend/shell_script.rb +29 -0
  36. data/lib/specinfra/backend/ssh.rb +185 -0
  37. data/lib/specinfra/backend/telnet.rb +111 -0
  38. data/lib/specinfra/backend/winrm.rb +29 -0
  39. data/lib/specinfra/command.rb +311 -0
  40. data/lib/specinfra/command/aix.rb +1 -0
  41. data/lib/specinfra/command/aix/base.rb +2 -0
  42. data/lib/specinfra/command/aix/base/file.rb +21 -0
  43. data/lib/specinfra/command/aix/base/group.rb +8 -0
  44. data/lib/specinfra/command/aix/base/host.rb +17 -0
  45. data/lib/specinfra/command/aix/base/inventory.rb +38 -0
  46. data/lib/specinfra/command/aix/base/package.rb +11 -0
  47. data/lib/specinfra/command/aix/base/port.rb +8 -0
  48. data/lib/specinfra/command/aix/base/service.rb +11 -0
  49. data/lib/specinfra/command/aix/base/user.rb +15 -0
  50. data/lib/specinfra/command/alpine.rb +1 -0
  51. data/lib/specinfra/command/alpine/base.rb +2 -0
  52. data/lib/specinfra/command/alpine/base/package.rb +19 -0
  53. data/lib/specinfra/command/alpine/base/process.rb +20 -0
  54. data/lib/specinfra/command/alpine/base/service.rb +11 -0
  55. data/lib/specinfra/command/amazon.rb +2 -0
  56. data/lib/specinfra/command/amazon/base.rb +2 -0
  57. data/lib/specinfra/command/arch.rb +1 -0
  58. data/lib/specinfra/command/arch/base.rb +11 -0
  59. data/lib/specinfra/command/arch/base/file.rb +14 -0
  60. data/lib/specinfra/command/arch/base/package.rb +30 -0
  61. data/lib/specinfra/command/arch/base/service.rb +5 -0
  62. data/lib/specinfra/command/base.rb +21 -0
  63. data/lib/specinfra/command/base/bond.rb +2 -0
  64. data/lib/specinfra/command/base/bridge.rb +2 -0
  65. data/lib/specinfra/command/base/cron.rb +17 -0
  66. data/lib/specinfra/command/base/file.rb +179 -0
  67. data/lib/specinfra/command/base/fstab.rb +2 -0
  68. data/lib/specinfra/command/base/group.rb +26 -0
  69. data/lib/specinfra/command/base/host.rb +36 -0
  70. data/lib/specinfra/command/base/interface.rb +2 -0
  71. data/lib/specinfra/command/base/inventory.rb +2 -0
  72. data/lib/specinfra/command/base/ip6tables.rb +2 -0
  73. data/lib/specinfra/command/base/ipfilter.rb +2 -0
  74. data/lib/specinfra/command/base/ipnat.rb +2 -0
  75. data/lib/specinfra/command/base/iptables.rb +2 -0
  76. data/lib/specinfra/command/base/kernel_module.rb +2 -0
  77. data/lib/specinfra/command/base/localhost.rb +7 -0
  78. data/lib/specinfra/command/base/lxc_container.rb +2 -0
  79. data/lib/specinfra/command/base/mail_alias.rb +15 -0
  80. data/lib/specinfra/command/base/package.rb +51 -0
  81. data/lib/specinfra/command/base/port.rb +10 -0
  82. data/lib/specinfra/command/base/ppa.rb +2 -0
  83. data/lib/specinfra/command/base/process.rb +15 -0
  84. data/lib/specinfra/command/base/routing_table.rb +9 -0
  85. data/lib/specinfra/command/base/selinux.rb +2 -0
  86. data/lib/specinfra/command/base/selinux_module.rb +2 -0
  87. data/lib/specinfra/command/base/service.rb +15 -0
  88. data/lib/specinfra/command/base/user.rb +94 -0
  89. data/lib/specinfra/command/base/yumrepo.rb +3 -0
  90. data/lib/specinfra/command/base/zfs.rb +1 -0
  91. data/lib/specinfra/command/coreos.rb +1 -0
  92. data/lib/specinfra/command/coreos/base.rb +2 -0
  93. data/lib/specinfra/command/coreos/base/service.rb +5 -0
  94. data/lib/specinfra/command/cumulus.rb +11 -0
  95. data/lib/specinfra/command/cumulus/base.rb +2 -0
  96. data/lib/specinfra/command/cumulus/base/ppa.rb +17 -0
  97. data/lib/specinfra/command/cumulus/base/service.rb +7 -0
  98. data/lib/specinfra/command/darwin.rb +1 -0
  99. data/lib/specinfra/command/darwin/base.rb +2 -0
  100. data/lib/specinfra/command/darwin/base/file.rb +47 -0
  101. data/lib/specinfra/command/darwin/base/host.rb +39 -0
  102. data/lib/specinfra/command/darwin/base/interface.rb +42 -0
  103. data/lib/specinfra/command/darwin/base/inventory.rb +28 -0
  104. data/lib/specinfra/command/darwin/base/package.rb +51 -0
  105. data/lib/specinfra/command/darwin/base/port.rb +8 -0
  106. data/lib/specinfra/command/darwin/base/process.rb +7 -0
  107. data/lib/specinfra/command/darwin/base/service.rb +11 -0
  108. data/lib/specinfra/command/darwin/base/user.rb +15 -0
  109. data/lib/specinfra/command/debian.rb +1 -0
  110. data/lib/specinfra/command/debian/base.rb +11 -0
  111. data/lib/specinfra/command/debian/base/package.rb +33 -0
  112. data/lib/specinfra/command/debian/base/ppa.rb +2 -0
  113. data/lib/specinfra/command/debian/base/service.rb +32 -0
  114. data/lib/specinfra/command/debian/v8.rb +2 -0
  115. data/lib/specinfra/command/debian/v8/service.rb +5 -0
  116. data/lib/specinfra/command/esxi.rb +1 -0
  117. data/lib/specinfra/command/esxi/base.rb +2 -0
  118. data/lib/specinfra/command/esxi/base/package.rb +7 -0
  119. data/lib/specinfra/command/fedora.rb +1 -0
  120. data/lib/specinfra/command/fedora/base.rb +2 -0
  121. data/lib/specinfra/command/fedora/base/service.rb +11 -0
  122. data/lib/specinfra/command/fedora/v15.rb +2 -0
  123. data/lib/specinfra/command/fedora/v15/service.rb +5 -0
  124. data/lib/specinfra/command/freebsd.rb +1 -0
  125. data/lib/specinfra/command/freebsd/base.rb +3 -0
  126. data/lib/specinfra/command/freebsd/base/file.rb +49 -0
  127. data/lib/specinfra/command/freebsd/base/host.rb +24 -0
  128. data/lib/specinfra/command/freebsd/base/interface.rb +42 -0
  129. data/lib/specinfra/command/freebsd/base/inventory.rb +28 -0
  130. data/lib/specinfra/command/freebsd/base/package.rb +19 -0
  131. data/lib/specinfra/command/freebsd/base/port.rb +8 -0
  132. data/lib/specinfra/command/freebsd/base/routing_table.rb +9 -0
  133. data/lib/specinfra/command/freebsd/base/service.rb +11 -0
  134. data/lib/specinfra/command/freebsd/base/user.rb +20 -0
  135. data/lib/specinfra/command/freebsd/v10.rb +2 -0
  136. data/lib/specinfra/command/freebsd/v10/package.rb +31 -0
  137. data/lib/specinfra/command/freebsd/v6.rb +2 -0
  138. data/lib/specinfra/command/freebsd/v6/user.rb +19 -0
  139. data/lib/specinfra/command/gentoo.rb +1 -0
  140. data/lib/specinfra/command/gentoo/base.rb +2 -0
  141. data/lib/specinfra/command/gentoo/base/package.rb +7 -0
  142. data/lib/specinfra/command/gentoo/base/service.rb +19 -0
  143. data/lib/specinfra/command/linux.rb +1 -0
  144. data/lib/specinfra/command/linux/base.rb +2 -0
  145. data/lib/specinfra/command/linux/base/bond.rb +11 -0
  146. data/lib/specinfra/command/linux/base/bridge.rb +11 -0
  147. data/lib/specinfra/command/linux/base/file.rb +20 -0
  148. data/lib/specinfra/command/linux/base/fstab.rb +9 -0
  149. data/lib/specinfra/command/linux/base/interface.rb +38 -0
  150. data/lib/specinfra/command/linux/base/inventory.rb +41 -0
  151. data/lib/specinfra/command/linux/base/ip6tables.rb +15 -0
  152. data/lib/specinfra/command/linux/base/iptables.rb +12 -0
  153. data/lib/specinfra/command/linux/base/kernel_module.rb +7 -0
  154. data/lib/specinfra/command/linux/base/lxc_container.rb +11 -0
  155. data/lib/specinfra/command/linux/base/package.rb +2 -0
  156. data/lib/specinfra/command/linux/base/ppa.rb +2 -0
  157. data/lib/specinfra/command/linux/base/selinux.rb +13 -0
  158. data/lib/specinfra/command/linux/base/selinux_module.rb +16 -0
  159. data/lib/specinfra/command/linux/base/service.rb +2 -0
  160. data/lib/specinfra/command/linux/base/yumrepo.rb +2 -0
  161. data/lib/specinfra/command/linux/base/zfs.rb +5 -0
  162. data/lib/specinfra/command/module.rb +7 -0
  163. data/lib/specinfra/command/module/service/daemontools.rb +46 -0
  164. data/lib/specinfra/command/module/service/delegator.rb +20 -0
  165. data/lib/specinfra/command/module/service/god.rb +13 -0
  166. data/lib/specinfra/command/module/service/init.rb +42 -0
  167. data/lib/specinfra/command/module/service/monit.rb +13 -0
  168. data/lib/specinfra/command/module/service/runit.rb +13 -0
  169. data/lib/specinfra/command/module/service/supervisor.rb +13 -0
  170. data/lib/specinfra/command/module/service/systemd.rb +41 -0
  171. data/lib/specinfra/command/module/service/upstart.rb +13 -0
  172. data/lib/specinfra/command/module/ss.rb +39 -0
  173. data/lib/specinfra/command/module/systemd.rb +12 -0
  174. data/lib/specinfra/command/module/zfs.rb +25 -0
  175. data/lib/specinfra/command/nixos.rb +1 -0
  176. data/lib/specinfra/command/nixos/base.rb +2 -0
  177. data/lib/specinfra/command/nixos/base/package.rb +17 -0
  178. data/lib/specinfra/command/nixos/base/service.rb +5 -0
  179. data/lib/specinfra/command/openbsd.rb +1 -0
  180. data/lib/specinfra/command/openbsd/base.rb +4 -0
  181. data/lib/specinfra/command/openbsd/base/bond.rb +11 -0
  182. data/lib/specinfra/command/openbsd/base/bridge.rb +11 -0
  183. data/lib/specinfra/command/openbsd/base/file.rb +47 -0
  184. data/lib/specinfra/command/openbsd/base/fstab.rb +9 -0
  185. data/lib/specinfra/command/openbsd/base/host.rb +17 -0
  186. data/lib/specinfra/command/openbsd/base/interface.rb +47 -0
  187. data/lib/specinfra/command/openbsd/base/inventory.rb +33 -0
  188. data/lib/specinfra/command/openbsd/base/mail_alias.rb +8 -0
  189. data/lib/specinfra/command/openbsd/base/package.rb +15 -0
  190. data/lib/specinfra/command/openbsd/base/port.rb +7 -0
  191. data/lib/specinfra/command/openbsd/base/routing_table.rb +9 -0
  192. data/lib/specinfra/command/openbsd/base/service.rb +19 -0
  193. data/lib/specinfra/command/openbsd/base/user.rb +11 -0
  194. data/lib/specinfra/command/openbsd/v57.rb +2 -0
  195. data/lib/specinfra/command/openbsd/v57/service.rb +35 -0
  196. data/lib/specinfra/command/opensuse.rb +1 -0
  197. data/lib/specinfra/command/opensuse/base.rb +3 -0
  198. data/lib/specinfra/command/opensuse/base/service.rb +12 -0
  199. data/lib/specinfra/command/plamo.rb +1 -0
  200. data/lib/specinfra/command/plamo/base.rb +3 -0
  201. data/lib/specinfra/command/plamo/base/package.rb +11 -0
  202. data/lib/specinfra/command/plamo/base/service.rb +14 -0
  203. data/lib/specinfra/command/poky.rb +1 -0
  204. data/lib/specinfra/command/poky/base.rb +2 -0
  205. data/lib/specinfra/command/poky/base/interface.rb +2 -0
  206. data/lib/specinfra/command/poky/base/inventory.rb +2 -0
  207. data/lib/specinfra/command/poky/base/package.rb +26 -0
  208. data/lib/specinfra/command/poky/base/service.rb +5 -0
  209. data/lib/specinfra/command/raspbian.rb +1 -0
  210. data/lib/specinfra/command/redhat.rb +1 -0
  211. data/lib/specinfra/command/redhat/base.rb +2 -0
  212. data/lib/specinfra/command/redhat/base/file.rb +8 -0
  213. data/lib/specinfra/command/redhat/base/host.rb +2 -0
  214. data/lib/specinfra/command/redhat/base/iptables.rb +11 -0
  215. data/lib/specinfra/command/redhat/base/package.rb +39 -0
  216. data/lib/specinfra/command/redhat/base/port.rb +2 -0
  217. data/lib/specinfra/command/redhat/base/service.rb +2 -0
  218. data/lib/specinfra/command/redhat/base/yumrepo.rb +13 -0
  219. data/lib/specinfra/command/redhat/v5.rb +3 -0
  220. data/lib/specinfra/command/redhat/v5/iptables.rb +10 -0
  221. data/lib/specinfra/command/redhat/v7.rb +3 -0
  222. data/lib/specinfra/command/redhat/v7/host.rb +15 -0
  223. data/lib/specinfra/command/redhat/v7/port.rb +5 -0
  224. data/lib/specinfra/command/redhat/v7/service.rb +5 -0
  225. data/lib/specinfra/command/smartos.rb +1 -0
  226. data/lib/specinfra/command/smartos/base.rb +3 -0
  227. data/lib/specinfra/command/smartos/base/file.rb +11 -0
  228. data/lib/specinfra/command/smartos/base/package.rb +15 -0
  229. data/lib/specinfra/command/smartos/base/service.rb +11 -0
  230. data/lib/specinfra/command/solaris.rb +1 -0
  231. data/lib/specinfra/command/solaris/base.rb +2 -0
  232. data/lib/specinfra/command/solaris/base/cron.rb +12 -0
  233. data/lib/specinfra/command/solaris/base/file.rb +20 -0
  234. data/lib/specinfra/command/solaris/base/group.rb +8 -0
  235. data/lib/specinfra/command/solaris/base/host.rb +14 -0
  236. data/lib/specinfra/command/solaris/base/inventory.rb +42 -0
  237. data/lib/specinfra/command/solaris/base/ipfilter.rb +7 -0
  238. data/lib/specinfra/command/solaris/base/ipnat.rb +14 -0
  239. data/lib/specinfra/command/solaris/base/package.rb +14 -0
  240. data/lib/specinfra/command/solaris/base/port.rb +13 -0
  241. data/lib/specinfra/command/solaris/base/service.rb +24 -0
  242. data/lib/specinfra/command/solaris/base/user.rb +15 -0
  243. data/lib/specinfra/command/solaris/base/zfs.rb +13 -0
  244. data/lib/specinfra/command/solaris/v10.rb +2 -0
  245. data/lib/specinfra/command/solaris/v10/file.rb +42 -0
  246. data/lib/specinfra/command/solaris/v10/group.rb +7 -0
  247. data/lib/specinfra/command/solaris/v10/host.rb +13 -0
  248. data/lib/specinfra/command/solaris/v10/package.rb +11 -0
  249. data/lib/specinfra/command/solaris/v10/user.rb +18 -0
  250. data/lib/specinfra/command/suse.rb +1 -0
  251. data/lib/specinfra/command/suse/base.rb +2 -0
  252. data/lib/specinfra/command/suse/base/package.rb +21 -0
  253. data/lib/specinfra/command/suse/base/service.rb +14 -0
  254. data/lib/specinfra/command/ubuntu.rb +11 -0
  255. data/lib/specinfra/command/ubuntu/base.rb +2 -0
  256. data/lib/specinfra/command/ubuntu/base/ppa.rb +17 -0
  257. data/lib/specinfra/command/ubuntu/base/service.rb +7 -0
  258. data/lib/specinfra/command/ubuntu/v15.rb +1 -0
  259. data/lib/specinfra/command/ubuntu/v15/service.rb +5 -0
  260. data/lib/specinfra/command/windows.rb +1 -0
  261. data/lib/specinfra/command/windows/base.rb +22 -0
  262. data/lib/specinfra/command/windows/base/feature.rb +17 -0
  263. data/lib/specinfra/command/windows/base/file.rb +120 -0
  264. data/lib/specinfra/command/windows/base/group.rb +11 -0
  265. data/lib/specinfra/command/windows/base/host.rb +25 -0
  266. data/lib/specinfra/command/windows/base/hot_fix.rb +19 -0
  267. data/lib/specinfra/command/windows/base/iis_app_pool.rb +66 -0
  268. data/lib/specinfra/command/windows/base/iis_website.rb +59 -0
  269. data/lib/specinfra/command/windows/base/package.rb +11 -0
  270. data/lib/specinfra/command/windows/base/port.rb +17 -0
  271. data/lib/specinfra/command/windows/base/process.rb +31 -0
  272. data/lib/specinfra/command/windows/base/registry_key.rb +53 -0
  273. data/lib/specinfra/command/windows/base/scheduled_task.rb +10 -0
  274. data/lib/specinfra/command/windows/base/service.rb +31 -0
  275. data/lib/specinfra/command/windows/base/user.rb +22 -0
  276. data/lib/specinfra/command_factory.rb +87 -0
  277. data/lib/specinfra/command_result.rb +28 -0
  278. data/lib/specinfra/configuration.rb +62 -0
  279. data/lib/specinfra/core.rb +18 -0
  280. data/lib/specinfra/ec2_metadata.rb +93 -0
  281. data/lib/specinfra/ext.rb +2 -0
  282. data/lib/specinfra/ext/class.rb +9 -0
  283. data/lib/specinfra/ext/string.rb +14 -0
  284. data/lib/specinfra/helper.rb +6 -0
  285. data/lib/specinfra/helper/configuration.rb +41 -0
  286. data/lib/specinfra/helper/detect_os.rb +38 -0
  287. data/lib/specinfra/helper/detect_os/aix.rb +12 -0
  288. data/lib/specinfra/helper/detect_os/alpine.rb +8 -0
  289. data/lib/specinfra/helper/detect_os/arch.rb +7 -0
  290. data/lib/specinfra/helper/detect_os/coreos.rb +18 -0
  291. data/lib/specinfra/helper/detect_os/darwin.rb +11 -0
  292. data/lib/specinfra/helper/detect_os/debian.rb +26 -0
  293. data/lib/specinfra/helper/detect_os/esxi.rb +10 -0
  294. data/lib/specinfra/helper/detect_os/freebsd.rb +11 -0
  295. data/lib/specinfra/helper/detect_os/gentoo.rb +7 -0
  296. data/lib/specinfra/helper/detect_os/nixos.rb +7 -0
  297. data/lib/specinfra/helper/detect_os/openbsd.rb +11 -0
  298. data/lib/specinfra/helper/detect_os/plamo.rb +7 -0
  299. data/lib/specinfra/helper/detect_os/poky.rb +7 -0
  300. data/lib/specinfra/helper/detect_os/redhat.rb +31 -0
  301. data/lib/specinfra/helper/detect_os/solaris.rb +17 -0
  302. data/lib/specinfra/helper/detect_os/suse.rb +15 -0
  303. data/lib/specinfra/helper/docker.rb +11 -0
  304. data/lib/specinfra/helper/host_inventory.rb +12 -0
  305. data/lib/specinfra/helper/lxc.rb +11 -0
  306. data/lib/specinfra/helper/os.rb +35 -0
  307. data/lib/specinfra/helper/properties.rb +14 -0
  308. data/lib/specinfra/helper/set.rb +10 -0
  309. data/lib/specinfra/host_inventory.rb +69 -0
  310. data/lib/specinfra/host_inventory/base.rb +14 -0
  311. data/lib/specinfra/host_inventory/block_device.rb +35 -0
  312. data/lib/specinfra/host_inventory/cpu.rb +77 -0
  313. data/lib/specinfra/host_inventory/domain.rb +16 -0
  314. data/lib/specinfra/host_inventory/ec2.rb +11 -0
  315. data/lib/specinfra/host_inventory/filesystem.rb +31 -0
  316. data/lib/specinfra/host_inventory/fqdn.rb +16 -0
  317. data/lib/specinfra/host_inventory/hostname.rb +16 -0
  318. data/lib/specinfra/host_inventory/kernel.rb +27 -0
  319. data/lib/specinfra/host_inventory/memory.rb +83 -0
  320. data/lib/specinfra/host_inventory/platform.rb +9 -0
  321. data/lib/specinfra/host_inventory/platform_version.rb +15 -0
  322. data/lib/specinfra/host_inventory/virtualization.rb +45 -0
  323. data/lib/specinfra/processor.rb +229 -0
  324. data/lib/specinfra/properties.rb +17 -0
  325. data/lib/specinfra/runner.rb +35 -0
  326. data/lib/specinfra/version.rb +3 -0
  327. data/spec/backend/exec/build_command_spec.rb +152 -0
  328. data/spec/backend/exec/child_process_spec.rb +18 -0
  329. data/spec/backend/exec/env_spec.rb +16 -0
  330. data/spec/backend/exec/read_noblock_spec.rb +50 -0
  331. data/spec/backend/exec/stdxxx_handler_spec.rb +25 -0
  332. data/spec/backend/ssh/build_command_spec.rb +115 -0
  333. data/spec/command/amazon/interface_spec.rb +9 -0
  334. data/spec/command/amazon/package_spec.rb +7 -0
  335. data/spec/command/amazon/service_spec.rb +28 -0
  336. data/spec/command/base/file_spec.rb +91 -0
  337. data/spec/command/base/group_spec.rb +16 -0
  338. data/spec/command/base/host_spec.rb +23 -0
  339. data/spec/command/base/localhost_spec.rb +7 -0
  340. data/spec/command/base/mail_alias.rb +17 -0
  341. data/spec/command/base/package_spec.rb +11 -0
  342. data/spec/command/base/user_spec.rb +59 -0
  343. data/spec/command/darwin/file_spec.rb +16 -0
  344. data/spec/command/darwin/host_spec.rb +38 -0
  345. data/spec/command/darwin/interface_spec.rb +38 -0
  346. data/spec/command/darwin/process_spec.rb +7 -0
  347. data/spec/command/darwin/user_spec.rb +15 -0
  348. data/spec/command/debian/service_spec.rb +28 -0
  349. data/spec/command/esxi/package_spec.rb +8 -0
  350. data/spec/command/factory_spec.rb +30 -0
  351. data/spec/command/freebsd/file_spec.rb +12 -0
  352. data/spec/command/freebsd/host_spec.rb +24 -0
  353. data/spec/command/freebsd/interface_spec.rb +32 -0
  354. data/spec/command/linux/bond_spec.rb +12 -0
  355. data/spec/command/linux/bridge_spec.rb +12 -0
  356. data/spec/command/linux/file_spec.rb +12 -0
  357. data/spec/command/linux/interface_spec.rb +24 -0
  358. data/spec/command/linux/inventory_spec.rb +20 -0
  359. data/spec/command/linux/ip6tables_spec.rb +7 -0
  360. data/spec/command/linux/selinux_module_spec.rb +12 -0
  361. data/spec/command/linux/selinux_spec.rb +27 -0
  362. data/spec/command/module/service/daemontools_spec.rb +18 -0
  363. data/spec/command/module/service/init_spec.rb +18 -0
  364. data/spec/command/module/service/systemd_spec.rb +16 -0
  365. data/spec/command/module/ss_spec.rb +28 -0
  366. data/spec/command/module/systemd_spec.rb +19 -0
  367. data/spec/command/module/zfs_spec.rb +6 -0
  368. data/spec/command/openbsd/file_spec.rb +12 -0
  369. data/spec/command/openbsd/host_spec.rb +24 -0
  370. data/spec/command/openbsd/interface_spec.rb +38 -0
  371. data/spec/command/openbsd/mail_alias_spec.rb +19 -0
  372. data/spec/command/openbsd/service_spec.rb +12 -0
  373. data/spec/command/openbsd57/service_spec.rb +36 -0
  374. data/spec/command/redhat/package_spec.rb +8 -0
  375. data/spec/command/redhat/service_spec.rb +28 -0
  376. data/spec/command/redhat7/host_spec.rb +25 -0
  377. data/spec/command/redhat7/interface_spec.rb +9 -0
  378. data/spec/command/redhat7/port_spec.rb +8 -0
  379. data/spec/command/redhat7/service_spec.rb +32 -0
  380. data/spec/command/ubuntu/ppa_spec.rb +12 -0
  381. data/spec/command/windows/registry_key_spec.rb +36 -0
  382. data/spec/configuration_spec.rb +14 -0
  383. data/spec/helper/detect_os/aix_spec.rb +58 -0
  384. data/spec/helper/detect_os/darwin_spec.rb +42 -0
  385. data/spec/helper/detect_os/esxi_spec.rb +22 -0
  386. data/spec/helper/detect_os/freebsd_spec.rb +42 -0
  387. data/spec/helper/detect_os/openbsd_spec.rb +42 -0
  388. data/spec/helper/os_spec.rb +58 -0
  389. data/spec/helper/properties_spec.rb +11 -0
  390. data/spec/helper/set_spec.rb +14 -0
  391. data/spec/host_inventory/aix/filesystem_spec.rb +107 -0
  392. data/spec/host_inventory/darwin/filesystem_spec.rb +63 -0
  393. data/spec/host_inventory/freebsd/filesystem_spec.rb +123 -0
  394. data/spec/host_inventory/linux/block_device_spec.rb +46 -0
  395. data/spec/host_inventory/linux/cpu_spec.rb +123 -0
  396. data/spec/host_inventory/linux/filesystem_spec.rb +53 -0
  397. data/spec/host_inventory/linux/kernel_spec.rb +33 -0
  398. data/spec/host_inventory/linux/memory_spec.rb +145 -0
  399. data/spec/host_inventory/linux/virtualization_spec.rb +44 -0
  400. data/spec/host_inventory/openbsd/filesystem_spec.rb +43 -0
  401. data/spec/host_inventory/openbsd/virtualization_spec.rb +27 -0
  402. data/spec/host_inventory/solaris/filesystem_spec.rb +137 -0
  403. data/spec/host_inventory/solaris/virtualization_spec.rb +28 -0
  404. data/spec/spec_helper.rb +26 -0
  405. data/specinfra.gemspec +31 -0
  406. metadata +638 -0
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ ## Output from 'df -P'
4
+ str = <<-EOH
5
+ Filesystem 1024-blocks Used Available Capacity Mounted on
6
+ /dev/mapper/vg_idefix-lv_root 51475068 8840540 40013088 19% /
7
+ tmpfs 509696 872 508824 1% /dev/shm
8
+ /dev/sdb3 487652 124828 337224 28% /boot
9
+ /dev/mapper/vg_idefix-lv_home 20857444 17905852 1885404 91% /home
10
+ EOH
11
+
12
+ describe Specinfra::HostInventory::Filesystem do
13
+ let(:host_inventory) { nil }
14
+ describe 'Example of CentOS 6.6 Kernel version 2.6.32-504.23.4.el6.i686' do
15
+ ret = Specinfra::HostInventory::Filesystem.new(host_inventory).parse(str)
16
+ example "/dev/mapper/vg_idefix-lv_home" do
17
+ expect(ret["/dev/mapper/vg_idefix-lv_home"]).to include(
18
+ "kb_used" => "17905852",
19
+ "kb_size" => "20857444",
20
+ "kb_available" => "1885404",
21
+ "mount" => "/home",
22
+ "percent_used" => "91%"
23
+ )
24
+ end
25
+ example "/dev/mapper/vg_idefix-lv_root" do
26
+ expect(ret["/dev/mapper/vg_idefix-lv_root"]).to include(
27
+ "kb_used" => "8840540",
28
+ "kb_size" => "51475068",
29
+ "kb_available" => "40013088",
30
+ "mount" => "/",
31
+ "percent_used" => "19%"
32
+ )
33
+ end
34
+ example "/dev/sdb3" do
35
+ expect(ret["/dev/sdb3"]).to include(
36
+ "kb_used" => "124828",
37
+ "kb_size" => "487652",
38
+ "kb_available" => "337224",
39
+ "mount" => "/boot",
40
+ "percent_used" => "28%"
41
+ )
42
+ end
43
+ example "tmpfs" do
44
+ expect(ret["tmpfs"]).to include(
45
+ "kb_used" => "872",
46
+ "kb_size" => "509696",
47
+ "kb_available" => "508824",
48
+ "mount" => "/dev/shm",
49
+ "percent_used" => "1%"
50
+ )
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Specinfra::HostInventory::Kernel do
4
+ describe 'Example of CentOS 6.6 Kernel version 2.6.32-504.30.3.el6.x86_64' do
5
+ str = 'Linux 2.6.32-504.30.3.el6.x86_64'
6
+
7
+ let(:host_inventory) { nil }
8
+ ret = Specinfra::HostInventory::Kernel.new(host_inventory).parse_uname(str)
9
+ example "name" do
10
+ expect(ret["name"]).to eq("Linux")
11
+ end
12
+ example "release" do
13
+ expect(ret["release"]).to eq("2.6.32-504.30.3.el6.x86_64")
14
+ end
15
+ example "version" do
16
+ expect(ret["version"]).to eq("2.6.32")
17
+ end
18
+ example "major" do
19
+ expect(ret["version_major"]).to eq("2.6")
20
+ end
21
+ end
22
+
23
+ describe 'Example of unparseable output' do
24
+ str = 'unparseable output'
25
+
26
+ let(:host_inventory) { nil }
27
+ ret = Specinfra::HostInventory::Kernel.new(host_inventory).parse_uname(str)
28
+
29
+ example 'is nil' do
30
+ expect(ret).to be(nil)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,145 @@
1
+ require 'spec_helper'
2
+
3
+ str = <<-EOH
4
+ MemTotal: 1019392 kB
5
+ MemFree: 88248 kB
6
+ Buffers: 26016 kB
7
+ Cached: 312856 kB
8
+ SwapCached: 87708 kB
9
+ Active: 396664 kB
10
+ Inactive: 444580 kB
11
+ Active(anon): 242816 kB
12
+ Inactive(anon): 308412 kB
13
+ Active(file): 153848 kB
14
+ Inactive(file): 136168 kB
15
+ Unevictable: 16 kB
16
+ Mlocked: 16 kB
17
+ HighTotal: 131912 kB
18
+ HighFree: 312 kB
19
+ LowTotal: 887480 kB
20
+ LowFree: 87936 kB
21
+ SwapTotal: 2064380 kB
22
+ SwapFree: 1760500 kB
23
+ Dirty: 0 kB
24
+ Writeback: 0 kB
25
+ AnonPages: 473868 kB
26
+ Mapped: 68192 kB
27
+ Shmem: 48856 kB
28
+ Slab: 57696 kB
29
+ SReclaimable: 14152 kB
30
+ SUnreclaim: 43544 kB
31
+ KernelStack: 3240 kB
32
+ PageTables: 12144 kB
33
+ NFS_Unstable: 0 kB
34
+ Bounce: 0 kB
35
+ WritebackTmp: 0 kB
36
+ CommitLimit: 2574076 kB
37
+ Committed_AS: 2517964 kB
38
+ VmallocTotal: 122880 kB
39
+ VmallocUsed: 11204 kB
40
+ VmallocChunk: 95432 kB
41
+ AnonHugePages: 92160 kB
42
+ HugePages_Total: 189440
43
+ HugePages_Free: 189440
44
+ HugePages_Rsvd: 0
45
+ HugePages_Surp: 0
46
+ Hugepagesize: 2048 kB
47
+ DirectMap4k: 907256 kB
48
+ DirectMap2M: 0 kB
49
+ EOH
50
+
51
+
52
+ describe Specinfra::HostInventory::Memory do
53
+ let(:host_inventory) { nil }
54
+ describe 'Example of CentOS 6.6 Kernel version 2.6.32-504.23.4.el6.i686' do
55
+ ret = Specinfra::HostInventory::Memory.new(host_inventory).parse(str)
56
+ example "active" do
57
+ expect(ret["active"]).to include("396664kB")
58
+ end
59
+ example "anon_pages" do
60
+ expect(ret["anon_pages"]).to include("473868kB")
61
+ end
62
+ example "bounce" do
63
+ expect(ret["bounce"]).to include("0kB")
64
+ end
65
+ example "buffers" do
66
+ expect(ret["buffers"]).to include("26016kB")
67
+ end
68
+ example "cached" do
69
+ expect(ret["cached"]).to include("312856kB")
70
+ end
71
+ example "commited_as" do
72
+ expect(ret["committed_as"]).to include("2517964kB")
73
+ end
74
+ example "commit_limit" do
75
+ expect(ret["commit_limit"]).to include("2574076kB")
76
+ end
77
+ example "dirty" do
78
+ expect(ret["dirty"]).to include("0kB")
79
+ end
80
+ example "free" do
81
+ expect(ret["free"]).to include("88248kB")
82
+ end
83
+ example "inactive" do
84
+ expect(ret["inactive"]).to include("444580kB")
85
+ end
86
+ example "mapped" do
87
+ expect(ret["mapped"]).to include("68192kB")
88
+ end
89
+ example "nfs_unstable" do
90
+ expect(ret["nfs_unstable"]).to include("0kB")
91
+ end
92
+ example "page_tables" do
93
+ expect(ret["page_tables"]).to include("12144kB")
94
+ end
95
+ example "slab" do
96
+ expect(ret["slab"]).to include("57696kB")
97
+ end
98
+ example "slab_reclaimable" do
99
+ expect(ret["slab_reclaimable"]).to include("14152kB")
100
+ end
101
+ example "slab_unreclaim" do
102
+ expect(ret["slab_unreclaim"]).to include("43544kB")
103
+ end
104
+ example "swap" do
105
+ expect(ret["swap"]).to include(
106
+ "free" => "1760500kB",
107
+ "total" => "2064380kB",
108
+ "cached" => "87708kB"
109
+ )
110
+ end
111
+ example "total" do
112
+ expect(ret["total"]).to include("1019392kB")
113
+ end
114
+ example "vmalloc_chunk" do
115
+ expect(ret["vmalloc_chunk"]).to include("95432kB")
116
+ end
117
+ example "vmalloc_total" do
118
+ expect(ret["vmalloc_total"]).to include("122880kB")
119
+ end
120
+ example "vmalloc_used" do
121
+ expect(ret["vmalloc_used"]).to include("11204kB")
122
+ end
123
+ example "writeback" do
124
+ expect(ret["writeback"]).to include("0kB")
125
+ end
126
+ example "annon_huge_pages" do
127
+ expect(ret["annon_huge_pages"]).to include("92160kB")
128
+ end
129
+ example "huge_pages_total" do
130
+ expect(ret["huge_pages_total"]).to include("189440")
131
+ end
132
+ example "huge_pages_free" do
133
+ expect(ret["huge_pages_free"]).to include("189440")
134
+ end
135
+ example "huge_pages_rsvd" do
136
+ expect(ret["huge_pages_rsvd"]).to include("0")
137
+ end
138
+ example "huge_pages_surp" do
139
+ expect(ret["huge_pages_surp"]).to include("0")
140
+ end
141
+ example "huge_page_size" do
142
+ expect(ret["huge_page_size"]).to include("2048kB")
143
+ end
144
+ end
145
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, { :family => 'linux' }
4
+
5
+ describe Specinfra::HostInventory::Virtualization do
6
+ virt = Specinfra::HostInventory::Virtualization.new(host_inventory)
7
+ let(:host_inventory) { nil }
8
+ it 'Docker Image should return :system => "docker"' do
9
+ allow(virt.backend).to receive(:run_command).with('ls /.dockerinit') do
10
+ CommandResult.new(:stdout => '/.dockerinit', :exit_status => 0)
11
+ end
12
+ expect(virt.get).to include(:system => 'docker')
13
+ end
14
+
15
+ let(:host_inventory) { nil }
16
+ it 'Debian Wheezy on OpenVZ should return :system => "openvz"' do
17
+ allow(virt.backend).to receive(:run_command).with('ls /.dockerinit') do
18
+ CommandResult.new(:stdout => '', :exit_status => 2)
19
+ end
20
+ allow(virt.backend).to receive(:run_command).with('test -d /proc/vz -a ! -d /proc/bc') do
21
+ CommandResult.new(:stdout => '', :exit_status => 0)
22
+ end
23
+ expect(virt.get).to include(:system => 'openvz')
24
+ end
25
+
26
+ let(:host_inventory) { nil }
27
+ it 'Debian Jessie on KVM should return :system => "kvm"' do
28
+ ret = virt.parse_system_product_name("KVM\n")
29
+ expect(ret).to include('kvm')
30
+ end
31
+
32
+ let(:host_inventory) { nil }
33
+ it 'CentOS 6.7 on VMware should return :system => "vmware"' do
34
+ ret = virt.parse_system_product_name("VMware Virtual Platform\n")
35
+ expect(ret).to include('vmware')
36
+ end
37
+
38
+ let(:host_inventory) { nil }
39
+ it 'Ubuntu 14.04 on VirtualBox should return :system => "vbox"' do
40
+ ret = virt.parse_system_product_name("VirtualBox\n")
41
+ expect(ret).to include('vbox')
42
+ end
43
+
44
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ ## Output from 'df -kP'
4
+ str = <<-EOH
5
+ Filesystem 1024-blocks Used Available Capacity Mounted on
6
+ /dev/sd0a 1013006 58408 903948 6% /
7
+ /dev/sd0e 1822574 18 1731428 0% /home
8
+ /dev/sd0d 3093230 372244 2566326 13% /usr
9
+ EOH
10
+
11
+ describe Specinfra::HostInventory::Filesystem do
12
+ let(:host_inventory) { nil }
13
+ describe 'Example OpenBSD release 5.7' do
14
+ ret = Specinfra::HostInventory::Filesystem.new(host_inventory).parse(str)
15
+ example "/dev/sd0a" do
16
+ expect(ret["/dev/sd0a"]).to include(
17
+ "kb_available" => "903948",
18
+ "kb_size" => "1013006",
19
+ "kb_used" => "58408",
20
+ "mount" => "/",
21
+ "percent_used" => "6%"
22
+ )
23
+ end
24
+ example "/dev/sd0d" do
25
+ expect(ret["/dev/sd0d"]).to include(
26
+ "kb_available" => "2566326",
27
+ "kb_size" => "3093230",
28
+ "kb_used" => "372244",
29
+ "mount" => "/usr",
30
+ "percent_used" => "13%"
31
+ )
32
+ end
33
+ example "/dev/sd0e" do
34
+ expect(ret["/dev/sd0e"]).to include(
35
+ "kb_available" => "1731428",
36
+ "kb_size" => "1822574",
37
+ "kb_used" => "18",
38
+ "mount" => "/home",
39
+ "percent_used" => "0%"
40
+ )
41
+ end
42
+ end
43
+ end
@@ -0,0 +1,27 @@
1
+ require 'spec_helper'
2
+
3
+ set :os, { :family => 'openbsd' }
4
+
5
+ describe Specinfra::HostInventory::Virtualization do
6
+ virt = Specinfra::HostInventory::Virtualization.new(host_inventory)
7
+
8
+ let(:host_inventory) { nil }
9
+ it 'OpenBSD 5.7 on KVM should return :system => "kvm"' do
10
+ ret = virt.parse_system_product_name("KVM\n")
11
+ expect(ret).to include('kvm')
12
+ end
13
+
14
+ let(:host_inventory) { nil }
15
+ it 'OpenBSD 5.7 on VMware should return :system => "vmware"' do
16
+ ret = virt.parse_system_product_name("VMware Virtual Platform\n")
17
+ expect(ret).to include('vmware')
18
+ end
19
+
20
+ let(:host_inventory) { nil }
21
+ it 'OpenBSD 5.7 on VirtualBox should return :system => "vbox"' do
22
+ ret = virt.parse_system_product_name("VirtualBox\n")
23
+ expect(ret).to include('vbox')
24
+ end
25
+
26
+
27
+ end
@@ -0,0 +1,137 @@
1
+ require 'spec_helper'
2
+
3
+ # Output from df -k | nawk -v i=0 '$1 == "swap" { $1=$1i; i++ }; NF == 1 { printf($1); next }; { print }'
4
+ str = <<-EOH
5
+ Filesystem kbytes used avail capacity Mounted on
6
+ / 32769183 5637051 27132132 18% /
7
+ /dev 32769183 5637051 27132132 18% /dev
8
+ proc 0 0 0 0% /proc
9
+ ctfs 0 0 0 0% /system/contract
10
+ mnttab 0 0 0 0% /etc/mnttab
11
+ objfs 0 0 0 0% /system/object
12
+ swap0 8664048 312 8663736 1% /etc/svc/volatile
13
+ /platform/sun4v/lib/libc_psr/libc_psr_hwcap3.so.1 32769183 5637051 27132132 18% /platform/sun4v/lib/libc_psr.so.1
14
+ /platform/sun4v/lib/sparc9/libc_psr/lib_psr_hwcap3.so.1 32769183 5637051 27132132 18% /platform/sun4v/lib/sparcv9/libc_psr.so.1
15
+ fd 0 0 0 0% /dev/fd
16
+ swap1 2097152 160 2096992 1% /tmp
17
+ swap2 8663784 48 8663736 1% /var/run
18
+ EOH
19
+
20
+ ## Houston we have problem!
21
+ ## there are multiple entries called 'swap' in Solaris
22
+ ## with the current parser they are not getting reported correctly
23
+ ## only the last entry is being reported!
24
+ describe Specinfra::HostInventory::Filesystem do
25
+ let(:host_inventory) { nil }
26
+ describe 'Example of Solaris 10' do
27
+ ret = Specinfra::HostInventory::Filesystem.new(host_inventory).parse(str)
28
+ example "/" do
29
+ expect(ret["/"]).to include(
30
+ "kb_available" => "27132132",
31
+ "kb_size" => "32769183",
32
+ "kb_used" => "5637051",
33
+ "mount" => "/",
34
+ "percent_used" => "18%"
35
+ )
36
+ end
37
+ example "/dev" do
38
+ expect(ret["/dev"]).to include(
39
+ "kb_available" => "27132132",
40
+ "kb_size" => "32769183",
41
+ "kb_used" => "5637051",
42
+ "mount" => "/dev",
43
+ "percent_used" => "18%"
44
+ )
45
+ end
46
+ example "/platform/sun4v/lib/libc_psr/libc_psr_hwcap3.so.1" do
47
+ expect(ret["/platform/sun4v/lib/libc_psr/libc_psr_hwcap3.so.1"]).to include(
48
+ "kb_available" => "27132132",
49
+ "kb_size" => "32769183",
50
+ "kb_used" => "5637051",
51
+ "mount" => "/platform/sun4v/lib/libc_psr.so.1",
52
+ "percent_used" => "18%"
53
+ )
54
+ end
55
+ example "/platform/sun4v/lib/sparc9/libc_psr/lib_psr_hwcap3.so.1" do
56
+ expect(ret["/platform/sun4v/lib/sparc9/libc_psr/lib_psr_hwcap3.so.1"]).to include(
57
+ "kb_available" => "27132132",
58
+ "kb_size" => "32769183",
59
+ "kb_used" => "5637051",
60
+ "mount" => "/platform/sun4v/lib/sparcv9/libc_psr.so.1",
61
+ "percent_used" => "18%"
62
+ )
63
+ end
64
+ example "ctfs" do
65
+ expect(ret["ctfs"]).to include(
66
+ "kb_available" => "0",
67
+ "kb_size" => "0",
68
+ "kb_used" => "0",
69
+ "mount" => "/system/contract",
70
+ "percent_used" => "0%"
71
+ )
72
+ end
73
+ example "fd" do
74
+ expect(ret["fd"]).to include(
75
+ "kb_available" => "0",
76
+ "kb_size" => "0",
77
+ "kb_used" => "0",
78
+ "mount" => "/dev/fd",
79
+ "percent_used" => "0%"
80
+ )
81
+ end
82
+ example "mnttab" do
83
+ expect(ret["mnttab"]).to include(
84
+ "kb_available" => "0",
85
+ "kb_size" => "0",
86
+ "kb_used" => "0",
87
+ "mount" => "/etc/mnttab",
88
+ "percent_used" => "0%"
89
+ )
90
+ end
91
+ example "objfs" do
92
+ expect(ret["objfs"]).to include(
93
+ "kb_available" => "0",
94
+ "kb_size" => "0",
95
+ "kb_used" => "0",
96
+ "mount" => "/system/object",
97
+ "percent_used" => "0%"
98
+ )
99
+ end
100
+ example "proc" do
101
+ expect(ret["proc"]).to include(
102
+ "kb_available" => "0",
103
+ "kb_size" => "0",
104
+ "kb_used" => "0",
105
+ "mount" => "/proc",
106
+ "percent_used" => "0%"
107
+ )
108
+ end
109
+ example "swap0" do
110
+ expect(ret["swap0"]).to include(
111
+ "kb_available" => "8663736",
112
+ "kb_size" => "8664048",
113
+ "kb_used" => "312",
114
+ "mount" => "/etc/svc/volatile",
115
+ "percent_used" => "1%"
116
+ )
117
+ end
118
+ example "swap1" do
119
+ expect(ret["swap1"]).to include(
120
+ "kb_available" => "2096992",
121
+ "kb_size" => "2097152",
122
+ "kb_used" => "160",
123
+ "mount" => "/tmp",
124
+ "percent_used" => "1%"
125
+ )
126
+ end
127
+ example "swap2" do
128
+ expect(ret["swap2"]).to include(
129
+ "kb_available" => "8663736",
130
+ "kb_size" => "8663784",
131
+ "kb_used" => "48",
132
+ "mount" => "/var/run",
133
+ "percent_used" => "1%"
134
+ )
135
+ end
136
+ end
137
+ end