vagrant-clone 0.0.1 → 0.0.3

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 (306) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/.rakeTasks +7 -0
  3. data/.idea/inspectionProfiles/Project_Default.xml +6 -0
  4. data/.idea/misc.xml +4 -0
  5. data/.idea/modules.xml +8 -0
  6. data/.idea/runConfigurations/clone.xml +21 -0
  7. data/.idea/runConfigurations/libvirt.xml +21 -0
  8. data/.idea/vagrant-clone.iml +114 -0
  9. data/.idea/vcs.xml +6 -0
  10. data/.idea/workspace.xml +948 -0
  11. data/Gemfile +9 -3
  12. data/Gemfile.lock +123 -37
  13. data/Rakefile +2 -1
  14. data/Vagrantfile +9 -0
  15. data/cookbooks/apt/CHANGELOG.md +321 -0
  16. data/cookbooks/apt/CONTRIBUTING.md +2 -0
  17. data/cookbooks/apt/MAINTAINERS.md +15 -0
  18. data/cookbooks/apt/README.md +250 -0
  19. data/cookbooks/apt/attributes/default.rb +57 -0
  20. data/cookbooks/apt/files/15update-stamp +1 -0
  21. data/cookbooks/apt/files/apt-proxy-v2.conf +50 -0
  22. data/cookbooks/apt/libraries/helpers.rb +49 -0
  23. data/cookbooks/apt/libraries/matchers.rb +16 -0
  24. data/cookbooks/apt/metadata.json +1 -0
  25. data/cookbooks/apt/recipes/cacher-client.rb +52 -0
  26. data/cookbooks/apt/recipes/cacher-ng.rb +39 -0
  27. data/cookbooks/apt/recipes/default.rb +93 -0
  28. data/cookbooks/apt/recipes/unattended-upgrades.rb +47 -0
  29. data/cookbooks/apt/resources/preference.rb +90 -0
  30. data/cookbooks/apt/templates/01proxy.erb +11 -0
  31. data/cookbooks/apt/templates/10dpkg-options.erb +8 -0
  32. data/cookbooks/apt/templates/10recommends.erb +3 -0
  33. data/cookbooks/apt/templates/20auto-upgrades.erb +5 -0
  34. data/cookbooks/apt/templates/50unattended-upgrades.erb +75 -0
  35. data/cookbooks/apt/templates/acng.conf.erb +275 -0
  36. data/cookbooks/apt/templates/unattended-upgrades.seed.erb +1 -0
  37. data/cookbooks/build-essential/.foodcritic +1 -0
  38. data/cookbooks/build-essential/CHANGELOG.md +257 -0
  39. data/cookbooks/build-essential/CONTRIBUTING.md +2 -0
  40. data/cookbooks/build-essential/MAINTAINERS.md +15 -0
  41. data/cookbooks/build-essential/README.md +134 -0
  42. data/cookbooks/build-essential/attributes/default.rb +21 -0
  43. data/cookbooks/build-essential/libraries/matchers.rb +9 -0
  44. data/cookbooks/build-essential/metadata.json +1 -0
  45. data/cookbooks/build-essential/recipes/_windows.rb +53 -0
  46. data/cookbooks/build-essential/recipes/default.rb +24 -0
  47. data/cookbooks/build-essential/resources/build_essential.rb +106 -0
  48. data/cookbooks/build-essential/resources/xcode_command_line_tools.rb +61 -0
  49. data/cookbooks/compat_resource/CHANGELOG.md +53 -0
  50. data/cookbooks/compat_resource/CONTRIBUTING.md +2 -0
  51. data/cookbooks/compat_resource/MAINTAINERS.md +16 -0
  52. data/cookbooks/compat_resource/README.md +60 -0
  53. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/constants.rb +47 -0
  54. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/delayed_evaluator.rb +40 -0
  55. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/core.rb +73 -0
  56. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/declare_resource.rb +315 -0
  57. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/platform_introspection.rb +292 -0
  58. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/recipe.rb +37 -0
  59. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/universal.rb +70 -0
  60. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/lazy_module_include.rb +98 -0
  61. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/notifying_block.rb +74 -0
  62. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/params_validate.rb +510 -0
  63. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/powershell_out.rb +117 -0
  64. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/properties.rb +328 -0
  65. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/property.rb +713 -0
  66. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/apt_repository.rb +269 -0
  67. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/apt_update.rb +105 -0
  68. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/noop.rb +56 -0
  69. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/support/yum_repo.erb +132 -0
  70. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/systemd_unit.rb +253 -0
  71. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/yum_repository.rb +136 -0
  72. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider.rb +164 -0
  73. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/action_class.rb +114 -0
  74. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/apt_repository.rb +65 -0
  75. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/apt_update.rb +52 -0
  76. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/systemd_unit.rb +81 -0
  77. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/yum_repository.rb +97 -0
  78. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource.rb +214 -0
  79. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource_builder.rb +174 -0
  80. data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef.rb +29 -0
  81. data/cookbooks/compat_resource/files/lib/chef_compat/mixin/properties.rb +8 -0
  82. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/exceptions.rb +10 -0
  83. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/log.rb +30 -0
  84. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/mixin/params_validate.rb +17 -0
  85. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/node.rb +9 -0
  86. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/property.rb +15 -0
  87. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/provider.rb +65 -0
  88. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/recipe.rb +118 -0
  89. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/recipe_hook.rb +20 -0
  90. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource/lwrp_base.rb +60 -0
  91. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource.rb +156 -0
  92. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_builder.rb +167 -0
  93. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_collection/resource_list.rb +49 -0
  94. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_collection/resource_set.rb +49 -0
  95. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_collection.rb +103 -0
  96. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb +691 -0
  97. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb +153 -0
  98. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef.rb +33 -0
  99. data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches.rb +41 -0
  100. data/cookbooks/compat_resource/files/lib/chef_compat/property.rb +6 -0
  101. data/cookbooks/compat_resource/files/lib/chef_compat/recipe.rb +8 -0
  102. data/cookbooks/compat_resource/files/lib/chef_compat/resource/lwrp_base.rb +44 -0
  103. data/cookbooks/compat_resource/files/lib/chef_compat/resource.rb +56 -0
  104. data/cookbooks/compat_resource/files/lib/chef_upstream_version.rb +3 -0
  105. data/cookbooks/compat_resource/files/lib/compat_resource.rb +35 -0
  106. data/cookbooks/compat_resource/libraries/autoload.rb +31 -0
  107. data/cookbooks/compat_resource/metadata.json +1 -0
  108. data/cookbooks/inifile_chef_gem/CHANGELOG.md +11 -0
  109. data/cookbooks/inifile_chef_gem/README.md +46 -0
  110. data/cookbooks/inifile_chef_gem/metadata.json +51 -0
  111. data/cookbooks/inifile_chef_gem/metadata.rb +11 -0
  112. data/cookbooks/inifile_chef_gem/resources/default.rb +28 -0
  113. data/cookbooks/mariadb/CHANGELOG.md +332 -0
  114. data/cookbooks/mariadb/README.md +225 -0
  115. data/cookbooks/mariadb/attributes/default.rb +199 -0
  116. data/cookbooks/mariadb/libraries/mariadb_conn_helper.rb +53 -0
  117. data/cookbooks/mariadb/libraries/mariadb_helper.rb +216 -0
  118. data/cookbooks/mariadb/libraries/matchers.rb +21 -0
  119. data/cookbooks/mariadb/metadata.json +1 -0
  120. data/cookbooks/mariadb/providers/configuration.rb +39 -0
  121. data/cookbooks/mariadb/recipes/_audit_plugin.rb +63 -0
  122. data/cookbooks/mariadb/recipes/_debian_galera.rb +62 -0
  123. data/cookbooks/mariadb/recipes/_debian_server.rb +78 -0
  124. data/cookbooks/mariadb/recipes/_mariadb_repository.rb +29 -0
  125. data/cookbooks/mariadb/recipes/_redhat_client.rb +27 -0
  126. data/cookbooks/mariadb/recipes/_redhat_galera.rb +55 -0
  127. data/cookbooks/mariadb/recipes/_redhat_server.rb +58 -0
  128. data/cookbooks/mariadb/recipes/client.rb +47 -0
  129. data/cookbooks/mariadb/recipes/config.rb +115 -0
  130. data/cookbooks/mariadb/recipes/default.rb +46 -0
  131. data/cookbooks/mariadb/recipes/devel.rb +41 -0
  132. data/cookbooks/mariadb/recipes/galera.rb +324 -0
  133. data/cookbooks/mariadb/recipes/plugins.rb +3 -0
  134. data/cookbooks/mariadb/recipes/repository.rb +45 -0
  135. data/cookbooks/mariadb/recipes/server.rb +157 -0
  136. data/cookbooks/mariadb/resources/configuration.rb +13 -0
  137. data/cookbooks/mariadb/resources/mysql2_gem.rb +25 -0
  138. data/cookbooks/mariadb/resources/replication.rb +192 -0
  139. data/cookbooks/mariadb/templates/default/conf.d.generic.erb +19 -0
  140. data/cookbooks/mariadb/templates/default/debian.cnf.erb +12 -0
  141. data/cookbooks/mariadb/templates/default/mariadb-server.seed.erb +13 -0
  142. data/cookbooks/mariadb/templates/default/mariadb_grants.erb +42 -0
  143. data/cookbooks/mariadb/templates/default/my.cnf.erb +210 -0
  144. data/cookbooks/mariadb/templates/default/root.cnf.erb +5 -0
  145. data/cookbooks/mingw/.foodcritic +1 -0
  146. data/cookbooks/mingw/CHANGELOG.md +50 -0
  147. data/cookbooks/mingw/CONTRIBUTING.md +2 -0
  148. data/cookbooks/mingw/MAINTAINERS.md +14 -0
  149. data/cookbooks/mingw/README.md +133 -0
  150. data/cookbooks/mingw/files/default/bash.bat +17 -0
  151. data/cookbooks/mingw/files/default/custom-upgrade.sh +23 -0
  152. data/cookbooks/mingw/files/default/custom_prefix.sh +13 -0
  153. data/cookbooks/mingw/files/default/pthread.h +719 -0
  154. data/cookbooks/mingw/files/default/time.h +297 -0
  155. data/cookbooks/mingw/libraries/_helper.rb +38 -0
  156. data/cookbooks/mingw/metadata.json +1 -0
  157. data/cookbooks/mingw/recipes/default.rb +19 -0
  158. data/cookbooks/mingw/resources/get.rb +56 -0
  159. data/cookbooks/mingw/resources/msys2_package.rb +139 -0
  160. data/cookbooks/mingw/resources/tdm_gcc.rb +114 -0
  161. data/cookbooks/ohai/.foodcritic +2 -0
  162. data/cookbooks/ohai/CHANGELOG.md +166 -0
  163. data/cookbooks/ohai/CONTRIBUTING.md +2 -0
  164. data/cookbooks/ohai/MAINTAINERS.md +15 -0
  165. data/cookbooks/ohai/README.md +134 -0
  166. data/cookbooks/ohai/libraries/matchers.rb +41 -0
  167. data/cookbooks/ohai/metadata.json +1 -0
  168. data/cookbooks/ohai/recipes/default.rb +20 -0
  169. data/cookbooks/ohai/resources/hint.rb +55 -0
  170. data/cookbooks/ohai/resources/plugin.rb +117 -0
  171. data/cookbooks/selinux_policy/.gitignore +51 -0
  172. data/cookbooks/selinux_policy/.kitchen.yml +25 -0
  173. data/cookbooks/selinux_policy/.rubocop.yml +2 -0
  174. data/cookbooks/selinux_policy/.travis.yml +26 -0
  175. data/cookbooks/selinux_policy/Berksfile +8 -0
  176. data/cookbooks/selinux_policy/CHANGELOG.md +155 -0
  177. data/cookbooks/selinux_policy/LICENSE +13 -0
  178. data/cookbooks/selinux_policy/README.md +217 -0
  179. data/cookbooks/selinux_policy/Rakefile +68 -0
  180. data/cookbooks/selinux_policy/TESTING.md +2 -0
  181. data/cookbooks/selinux_policy/Thorfile +12 -0
  182. data/cookbooks/selinux_policy/attributes/default.rb +5 -0
  183. data/cookbooks/selinux_policy/chefignore +102 -0
  184. data/cookbooks/selinux_policy/libraries/helper-disabled.rb +29 -0
  185. data/cookbooks/selinux_policy/libraries/matchers.rb +57 -0
  186. data/cookbooks/selinux_policy/metadata.json +58 -0
  187. data/cookbooks/selinux_policy/metadata.rb +20 -0
  188. data/cookbooks/selinux_policy/providers/boolean.rb +28 -0
  189. data/cookbooks/selinux_policy/providers/fcontext.rb +78 -0
  190. data/cookbooks/selinux_policy/providers/module.rb +81 -0
  191. data/cookbooks/selinux_policy/providers/permissive.rb +26 -0
  192. data/cookbooks/selinux_policy/providers/port.rb +58 -0
  193. data/cookbooks/selinux_policy/recipes/default.rb +9 -0
  194. data/cookbooks/selinux_policy/recipes/install.rb +32 -0
  195. data/cookbooks/selinux_policy/resources/boolean.rb +8 -0
  196. data/cookbooks/selinux_policy/resources/fcontext.rb +8 -0
  197. data/cookbooks/selinux_policy/resources/module.rb +21 -0
  198. data/cookbooks/selinux_policy/resources/permissive.rb +6 -0
  199. data/cookbooks/selinux_policy/resources/port.rb +9 -0
  200. data/cookbooks/seven_zip/CHANGELOG.md +30 -0
  201. data/cookbooks/seven_zip/README.md +108 -0
  202. data/cookbooks/seven_zip/attributes/default.rb +31 -0
  203. data/cookbooks/seven_zip/libraries/matchers.rb +33 -0
  204. data/cookbooks/seven_zip/metadata.json +1 -0
  205. data/cookbooks/seven_zip/providers/archive.rb +68 -0
  206. data/cookbooks/seven_zip/recipes/default.rb +41 -0
  207. data/cookbooks/seven_zip/resources/archive.rb +29 -0
  208. data/cookbooks/windows/.foodcritic +2 -0
  209. data/cookbooks/windows/CHANGELOG.md +528 -0
  210. data/cookbooks/windows/CONTRIBUTING.md +2 -0
  211. data/cookbooks/windows/MAINTAINERS.md +21 -0
  212. data/cookbooks/windows/README.md +803 -0
  213. data/cookbooks/windows/attributes/default.rb +21 -0
  214. data/cookbooks/windows/files/dism_features.rb +45 -0
  215. data/cookbooks/windows/libraries/matchers.rb +586 -0
  216. data/cookbooks/windows/libraries/powershell_helper.rb +53 -0
  217. data/cookbooks/windows/libraries/registry_helper.rb +356 -0
  218. data/cookbooks/windows/libraries/version.rb +207 -0
  219. data/cookbooks/windows/libraries/version_helper.rb +79 -0
  220. data/cookbooks/windows/libraries/windows_helper.rb +174 -0
  221. data/cookbooks/windows/libraries/windows_privileged.rb +103 -0
  222. data/cookbooks/windows/libraries/wmi_helper.rb +32 -0
  223. data/cookbooks/windows/metadata.json +1 -0
  224. data/cookbooks/windows/recipes/default.rb +21 -0
  225. data/cookbooks/windows/resources/auto_run.rb +46 -0
  226. data/cookbooks/windows/resources/certificate.rb +166 -0
  227. data/cookbooks/windows/resources/certificate_binding.rb +128 -0
  228. data/cookbooks/windows/resources/feature.rb +82 -0
  229. data/cookbooks/windows/resources/feature_dism.rb +108 -0
  230. data/cookbooks/windows/resources/feature_powershell.rb +70 -0
  231. data/cookbooks/windows/resources/feature_servermanagercmd.rb +76 -0
  232. data/cookbooks/windows/resources/font.rb +80 -0
  233. data/cookbooks/windows/resources/http_acl.rb +110 -0
  234. data/cookbooks/windows/resources/pagefile.rb +152 -0
  235. data/cookbooks/windows/resources/path.rb +54 -0
  236. data/cookbooks/windows/resources/printer.rb +103 -0
  237. data/cookbooks/windows/resources/printer_port.rb +101 -0
  238. data/cookbooks/windows/resources/share.rb +291 -0
  239. data/cookbooks/windows/resources/shortcut.rb +53 -0
  240. data/cookbooks/windows/resources/task.rb +384 -0
  241. data/cookbooks/windows/resources/zipfile.rb +125 -0
  242. data/cookbooks/yum/.foodcritic +1 -0
  243. data/cookbooks/yum/CHANGELOG.md +351 -0
  244. data/cookbooks/yum/CONTRIBUTING.md +2 -0
  245. data/cookbooks/yum/MAINTAINERS.md +16 -0
  246. data/cookbooks/yum/README.md +125 -0
  247. data/cookbooks/yum/attributes/main.rb +103 -0
  248. data/cookbooks/yum/libraries/matchers.rb +9 -0
  249. data/cookbooks/yum/metadata.json +1 -0
  250. data/cookbooks/yum/recipes/default.rb +26 -0
  251. data/cookbooks/yum/recipes/dnf_yum_compat.rb +29 -0
  252. data/cookbooks/yum/resources/globalconfig.rb +119 -0
  253. data/cookbooks/yum/templates/.DS_Store +0 -0
  254. data/cookbooks/yum/templates/main.erb +276 -0
  255. data/cookbooks/yum-epel/CHANGELOG.md +138 -0
  256. data/cookbooks/yum-epel/CONTRIBUTING.md +2 -0
  257. data/cookbooks/yum-epel/MAINTAINERS.md +19 -0
  258. data/cookbooks/yum-epel/README.md +172 -0
  259. data/cookbooks/yum-epel/attributes/default.rb +8 -0
  260. data/cookbooks/yum-epel/attributes/epel-debuginfo.rb +15 -0
  261. data/cookbooks/yum-epel/attributes/epel-source.rb +15 -0
  262. data/cookbooks/yum-epel/attributes/epel-testing-debuginfo.rb +15 -0
  263. data/cookbooks/yum-epel/attributes/epel-testing-source.rb +15 -0
  264. data/cookbooks/yum-epel/attributes/epel-testing.rb +15 -0
  265. data/cookbooks/yum-epel/attributes/epel.rb +21 -0
  266. data/cookbooks/yum-epel/metadata.json +1 -0
  267. data/cookbooks/yum-epel/recipes/default.rb +27 -0
  268. data/cookbooks/yum-scl/.kitchen.dokken.yml +24 -0
  269. data/cookbooks/yum-scl/.kitchen.yml +24 -0
  270. data/cookbooks/yum-scl/.rubocop.yml +6 -0
  271. data/cookbooks/yum-scl/.travis.yml +28 -0
  272. data/cookbooks/yum-scl/Berksfile +3 -0
  273. data/cookbooks/yum-scl/Berksfile.lock +25 -0
  274. data/cookbooks/yum-scl/CHANGELOG.md +11 -0
  275. data/cookbooks/yum-scl/Gemfile +46 -0
  276. data/cookbooks/yum-scl/README.md +76 -0
  277. data/cookbooks/yum-scl/attributes/centos.rb +83 -0
  278. data/cookbooks/yum-scl/attributes/default.rb +15 -0
  279. data/cookbooks/yum-scl/attributes/scientific.rb +1 -0
  280. data/cookbooks/yum-scl/files/default/RPM-GPG-KEY-CentOS-SIG-SCLo +20 -0
  281. data/cookbooks/yum-scl/libraries/yum_scl_helper.rb +33 -0
  282. data/cookbooks/yum-scl/metadata.json +42 -0
  283. data/cookbooks/yum-scl/metadata.rb +12 -0
  284. data/cookbooks/yum-scl/recipes/chef_install.rb +52 -0
  285. data/cookbooks/yum-scl/recipes/default.rb +17 -0
  286. data/cookbooks/yum-scl/recipes/native_install.rb +35 -0
  287. data/lib/vagrant-clone/command/clone.rb +66 -61
  288. data/lib/vagrant-clone/errors.rb +61 -0
  289. data/lib/vagrant-clone/util/clone_manager_base.rb +69 -0
  290. data/lib/vagrant-clone/util/clone_managers/docker.rb +31 -0
  291. data/lib/vagrant-clone/util/clone_managers/libvirt.rb +254 -0
  292. data/lib/vagrant-clone/util/vagrantfile_managers/docker.rb +154 -0
  293. data/lib/vagrant-clone/util/vagrantfile_managers/libvirt.rb +159 -0
  294. data/lib/vagrant-clone/version.rb +2 -2
  295. data/lib/vagrant-clone.rb +6 -6
  296. data/libvirt.txt +7 -0
  297. data/performance_testing.rb +165 -0
  298. data/results.txt +45 -0
  299. data/scripts/create_box.sh +134 -0
  300. data/test.rb +92 -0
  301. data/tools/create_box.sh +130 -0
  302. data/vagrant-clone.gemspec +7 -7
  303. metadata +296 -5
  304. data/lib/vagrant-clone/command/errors.rb +0 -16
  305. data/lib/vagrant-clone/command/provider/docker.rb +0 -13
  306. data/lib/vagrant-clone/utils/vagrantfile_manager.rb +0 -47
@@ -0,0 +1,165 @@
1
+ #! /home/galiaf95/.rvm/rubies/ruby-2.0.0-p648/bin/ruby
2
+
3
+ require 'fileutils'
4
+
5
+
6
+ def single_tests
7
+ results = {
8
+ :docker => {
9
+ 1 => {
10
+ :scratch => 1.8833333333333333,
11
+ :clone => 0.48333333333333334
12
+ },
13
+ 2 => {
14
+ :scratch=>1.9333333333333333,
15
+ :clone=>0.6666666666666666
16
+ },
17
+ 3 => {
18
+ :scratch=>2.2,
19
+ :clone=>0.9166666666666667
20
+ },
21
+ 4 => {
22
+ :scratch=>2.683333333333333,
23
+ :clone=>1.2166666666666668
24
+ },
25
+ 5 => {
26
+ :scratch=>3.183333333333333,
27
+ :clone=>1.5666666666666669
28
+ }
29
+ },
30
+ :libvirt => {
31
+ 1 => {
32
+ :scratch => 6.7,
33
+ :clone=>1.76666666666667
34
+ },
35
+ 2 => {
36
+ :scratch=>12.3,
37
+ :clone=>1.9
38
+ },
39
+ 3 => {
40
+ :scratch=>18.2,
41
+ :clone=>2.15
42
+ },
43
+ 4 => {
44
+ :scratch=>28.2166666667,
45
+ :clone=>3.35
46
+ },
47
+ 5 => {
48
+ :scratch=>34.61666666666667,
49
+ :clone=>3.583333333333333
50
+ },
51
+ 6 => {
52
+ :scratch => 41.416666666666664,
53
+ :clone => 3.5166666666666666
54
+ }
55
+ }
56
+ }
57
+ results_file = '/home/galiaf95/bachelors/product/vagrant-clone/results.txt'
58
+ libvirt_results = '/home/galiaf95/bachelors/product/vagrant-clone/libvirt.txt'
59
+ #:libvirt => 'LibvirtTest',
60
+ {:docker => 'DockerTest'}.each do |provider, dir|
61
+ (5..14).each do |step|
62
+ results[provider][step + 1] = {}
63
+ Dir.chdir File.expand_path dir do
64
+ #system 'vagrant', 'destroy', '-f'
65
+ up_arguments = []
66
+ (0..step).each do |i|
67
+ up_arguments << "node#{i}"
68
+ end
69
+ start_time = Time.now.to_i
70
+ system 'vagrant', 'up', '--no-parallel', '--provider', "#{provider}", *up_arguments
71
+ diff_time = (Time.now.to_i - start_time).to_f/60.to_f
72
+ File.open libvirt_results, 'a' do |file|
73
+ file.puts "#{step + 1} => #{diff_time}"
74
+ end
75
+ results[provider][step + 1][:scratch] = diff_time + results[provider][step][:scratch]
76
+ clone_config = []
77
+ (0..step).each do |i|
78
+ clone_config << %Q("node#{i}":1)
79
+ end
80
+ clone_config = clone_config.join ','
81
+ clone_config = "{#{clone_config}}"
82
+ start_time = Time.now.to_i
83
+ begin
84
+ system 'vagrant', 'clone', '-c', clone_config, '-n', "../#{dir}_#{step}"
85
+ diff_time = (Time.now.to_i - start_time).to_f/60.to_f
86
+ results[provider][step + 1][:clone] = diff_time
87
+ Dir.chdir File.expand_path "../#{dir}_#{step}" do |dir|
88
+ up_arguments = []
89
+ (0..step).each do |i|
90
+ up_arguments << "node#{i}_0"
91
+ end
92
+ start_time = Time.now.to_i
93
+ begin
94
+ system 'vagrant', 'up', '--no-parallel', '--provider', "#{provider}", *up_arguments
95
+ diff_time = (Time.now.to_i - start_time).to_f/60.to_f
96
+ results[provider][step + 1][:clone] += diff_time
97
+ ensure
98
+ system 'vagrant', 'destroy', '-f'
99
+ end
100
+ end
101
+ ensure
102
+ File.open results_file, 'a' do |file|
103
+ file.puts results
104
+ end
105
+ system "for i in `docker images | grep none | awk '{print $3}'`; do docker rmi $i; done"
106
+ system "for i in `vagrant box list | grep VAGRANTBOX | awk '{print $1}'`; do vagrant box remove $i; done"
107
+ system "for i in `virsh vol-list --pool default | grep VAGRANTBOX | awk '{print $1}'`; do virsh vol-delete $i --pool default; done"
108
+ FileUtils.rm_r File.expand_path "../#{dir}_#{step}" if Dir.exist? File.expand_path "../#{dir}_#{step}"
109
+ end
110
+ end
111
+ end
112
+ end
113
+ puts results
114
+ end
115
+
116
+ def scale_tests
117
+ results = {
118
+ :docker => {},
119
+ :libvirt => {}
120
+ }
121
+ results_file = '/home/galiaf95/bachelors/product/vagrant-clone/results.txt'
122
+ #, :libvirt => 'LibvirtTest'
123
+ {:docker => 'DockerTest'}.each do |provider, dir|
124
+ 10.times.each do |step|
125
+ results[provider][step + 1] = {}
126
+ Dir.chdir File.expand_path dir do
127
+ #system 'vagrant', 'destroy', '-f'
128
+ up_arguments = ['node0']
129
+ up_arguments << '--no-parallel' if provider == :libvirt
130
+ start_time = Time.now.to_i
131
+ system 'vagrant', 'up', '--provider', "#{provider}", *up_arguments
132
+ clone_config = %Q({"node0":#{step+1}})
133
+ begin
134
+ system 'vagrant', 'clone', '-c', clone_config, '-n', "../#{dir}_#{step}"
135
+ Dir.chdir File.expand_path "../#{dir}_#{step}" do |dir|
136
+ up_arguments = []
137
+ (0..step).each do |i|
138
+ up_arguments << "node0_#{i}"
139
+ end
140
+ begin
141
+ up_arguments << '--no-parallel' if provider == :libvirt
142
+ system 'vagrant', 'up', '--provider', "#{provider}", *up_arguments
143
+ diff_time = (Time.now.to_i - start_time).to_f/60.to_f
144
+ #orig_time = provider == :docker ? 1.88333333333333 : 6.7
145
+ results[provider][step + 1]["#{step+1}_clones"] = diff_time
146
+ ensure
147
+ system 'vagrant', 'destroy', '-f'
148
+ end
149
+ end
150
+ ensure
151
+ File.open results_file, 'a' do |file|
152
+ file.puts results
153
+ end
154
+ system "for i in `docker images | grep none | awk '{print $3}'`; do docker rmi $i; done"
155
+ system "for i in `vagrant box list | grep VAGRANTBOX | awk '{print $1}'`; do vagrant box remove $i; done"
156
+ system "for i in `virsh vol-list --pool default | grep VAGRANTBOX | awk '{print $1}'`; do virsh vol-delete $i --pool default; done"
157
+ FileUtils.rm_r File.expand_path "../#{dir}_#{step}" if Dir.exist? File.expand_path "../#{dir}_#{step}"
158
+ end
159
+ end
160
+ end
161
+ end
162
+ puts results
163
+ end
164
+
165
+ scale_tests
data/results.txt ADDED
@@ -0,0 +1,45 @@
1
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}}, :libvirt=>{}}
2
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}}, :libvirt=>{}}
3
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}}, :libvirt=>{}}
4
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}}, :libvirt=>{}}
5
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{}}
6
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{1=>{:scratch=>5.983333333333333, :clone=>1.1833333333333333}}}
7
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{1=>{:scratch=>5.983333333333333, :clone=>1.1833333333333333}, 2=>{:scratch=>38.766666666666666, :clone=>16.0}}}
8
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{1=>{:scratch=>5.983333333333333, :clone=>1.1833333333333333}, 2=>{:scratch=>38.766666666666666, :clone=>16.0}, 3=>{:scratch=>104.41666666666667, :clone=>16.35}}}
9
+ {:docker=>{}, :libvirt=>{2=>{:scratch=>12.3, :clone=>1.3}}}
10
+ {:docker=>{}, :libvirt=>{2=>{:scratch=>12.3, :clone=>1.3}, 3=>{:scratch=>18.2, :clone=>2.15}}}
11
+ {:docker=>{}, :libvirt=>{4=>{:scratch=>28.216666666666665, :clone=>3.3500000000000005}}}
12
+ {:docker=>{}, :libvirt=>{4=>{:scratch=>28.216666666666665, :clone=>3.3500000000000005}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}}}
13
+ {:docker=>{}, :libvirt=>{1=>{:scratch=>6.7, :clone=>1.7666666666666666}}}
14
+ {:docker=>{1=>{"1_clones"=>2.516666666666663}}, :libvirt=>{}}
15
+ {:docker=>{1=>{"1_clones"=>2.516666666666663}, 2=>{"2_clones"=>2.58333333333333}}, :libvirt=>{}}
16
+ {:docker=>{1=>{"1_clones"=>2.516666666666663}, 2=>{"2_clones"=>2.58333333333333}, 3=>{"3_clones"=>2.63333333333333}}, :libvirt=>{}}
17
+ {:docker=>{1=>{"1_clones"=>2.516666666666663}, 2=>{"2_clones"=>2.58333333333333}, 3=>{"3_clones"=>2.63333333333333}, 4=>{"4_clones"=>2.7499999999999964}}, :libvirt=>{}}
18
+ {:docker=>{1=>{"1_clones"=>2.516666666666663}, 2=>{"2_clones"=>2.58333333333333}, 3=>{"3_clones"=>2.63333333333333}, 4=>{"4_clones"=>2.7499999999999964}, 5=>{"5_clones"=>2.8166666666666633}}, :libvirt=>{}}
19
+ {:docker=>{1=>{"1_clones"=>2.516666666666663}, 2=>{"2_clones"=>2.58333333333333}, 3=>{"3_clones"=>2.63333333333333}, 4=>{"4_clones"=>2.7499999999999964}, 5=>{"5_clones"=>2.8166666666666633}}, :libvirt=>{1=>{"1_clones"=>7.3500000000000005}}}
20
+ {:docker=>{1=>{"1_clones"=>0.6}}, :libvirt=>{}}
21
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}}, :libvirt=>{}}
22
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}}, :libvirt=>{}}
23
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}}, :libvirt=>{}}
24
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}, 5=>{"5_clones"=>0.8666666666666667}}, :libvirt=>{}}
25
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}, 5=>{"5_clones"=>0.8666666666666667}}, :libvirt=>{1=>{"1_clones"=>0.7833333333333333}}}
26
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}, 5=>{"5_clones"=>0.8666666666666667}}, :libvirt=>{1=>{"1_clones"=>0.7833333333333333}, 2=>{"2_clones"=>1.2333333333333334}}}
27
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}, 5=>{"5_clones"=>0.8666666666666667}}, :libvirt=>{1=>{"1_clones"=>0.7833333333333333}, 2=>{"2_clones"=>1.2333333333333334}, 3=>{"3_clones"=>1.6}}}
28
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}, 5=>{"5_clones"=>0.8666666666666667}}, :libvirt=>{1=>{"1_clones"=>0.7833333333333333}, 2=>{"2_clones"=>1.2333333333333334}, 3=>{"3_clones"=>1.6}, 4=>{"4_clones"=>1.9}}}
29
+ {:docker=>{1=>{"1_clones"=>0.6}, 2=>{"2_clones"=>0.6}, 3=>{"3_clones"=>0.6833333333333333}, 4=>{"4_clones"=>0.7666666666666667}, 5=>{"5_clones"=>0.8666666666666667}}, :libvirt=>{1=>{"1_clones"=>0.7833333333333333}, 2=>{"2_clones"=>1.2333333333333334}, 3=>{"3_clones"=>1.6}, 4=>{"4_clones"=>1.9}, 5=>{"5_clones"=>2.2}}}
30
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{1=>{:scratch=>5.983333333333333, :clone=>1.1833333333333333}, 2=>{:scratch=>38.766666666666666, :clone=>16.0}, 3=>{:scratch=>104.41666666666667, :clone=>16.35}, 4=>{:scratch=>28.216666666666665, :clone=>3.3500000000000005}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}, 6=>{:scratch=>41.15, :clone=>0.3}}}
31
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{1=>{:scratch=>5.983333333333333, :clone=>1.1833333333333333}, 2=>{:scratch=>38.766666666666666, :clone=>16.0}, 3=>{:scratch=>104.41666666666667, :clone=>16.35}, 4=>{:scratch=>28.216666666666665, :clone=>3.3500000000000005}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}, 6=>{:scratch=>41.416666666666664, :clone=>3.5166666666666666}}}
32
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}}, :libvirt=>{1=>{:scratch=>6.7, :clone=>1.76666666666667}, 2=>{:scratch=>12.3, :clone=>1.9}, 3=>{:scratch=>18.2, :clone=>2.15}, 4=>{:scratch=>28.2166666667, :clone=>3.35}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}, 6=>{:scratch=>41.416666666666664, :clone=>3.5166666666666666}, 7=>{:scratch=>48.916666666666664, :clone=>2.4499999999999997}}}
33
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}, 6=>{:scratch=>4.916666666666666, :clone=>2.966666666666667}}, :libvirt=>{1=>{:scratch=>6.7, :clone=>1.76666666666667}, 2=>{:scratch=>12.3, :clone=>1.9}, 3=>{:scratch=>18.2, :clone=>2.15}, 4=>{:scratch=>28.2166666667, :clone=>3.35}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}, 6=>{:scratch=>41.416666666666664, :clone=>3.5166666666666666}}}
34
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}, 6=>{:scratch=>4.916666666666666, :clone=>2.966666666666667}, 7=>{:scratch=>6.916666666666666, :clone=>3.4}}, :libvirt=>{1=>{:scratch=>6.7, :clone=>1.76666666666667}, 2=>{:scratch=>12.3, :clone=>1.9}, 3=>{:scratch=>18.2, :clone=>2.15}, 4=>{:scratch=>28.2166666667, :clone=>3.35}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}, 6=>{:scratch=>41.416666666666664, :clone=>3.5166666666666666}}}
35
+ {:docker=>{1=>{:scratch=>1.8833333333333333, :clone=>0.48333333333333334}, 2=>{:scratch=>1.9333333333333333, :clone=>0.6666666666666666}, 3=>{:scratch=>2.2, :clone=>0.9166666666666667}, 4=>{:scratch=>2.683333333333333, :clone=>1.2166666666666668}, 5=>{:scratch=>3.183333333333333, :clone=>1.5666666666666669}, 6=>{:scratch=>4.916666666666666, :clone=>2.966666666666667}, 7=>{:scratch=>6.916666666666666, :clone=>3.4}, 8=>{:scratch=>9.216666666666665, :clone=>1.4666666666666666}}, :libvirt=>{1=>{:scratch=>6.7, :clone=>1.76666666666667}, 2=>{:scratch=>12.3, :clone=>1.9}, 3=>{:scratch=>18.2, :clone=>2.15}, 4=>{:scratch=>28.2166666667, :clone=>3.35}, 5=>{:scratch=>34.61666666666667, :clone=>3.583333333333333}, 6=>{:scratch=>41.416666666666664, :clone=>3.5166666666666666}}}
36
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}}, :libvirt=>{}}
37
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}}, :libvirt=>{}}
38
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}}, :libvirt=>{}}
39
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}}, :libvirt=>{}}
40
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}, 5=>{"5_clones"=>0.7666666666666667}}, :libvirt=>{}}
41
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}, 5=>{"5_clones"=>0.7666666666666667}, 6=>{"6_clones"=>0.8333333333333334}}, :libvirt=>{}}
42
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}, 5=>{"5_clones"=>0.7666666666666667}, 6=>{"6_clones"=>0.8333333333333334}, 7=>{"7_clones"=>0.9333333333333333}}, :libvirt=>{}}
43
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}, 5=>{"5_clones"=>0.7666666666666667}, 6=>{"6_clones"=>0.8333333333333334}, 7=>{"7_clones"=>0.9333333333333333}, 8=>{"8_clones"=>1.0166666666666666}}, :libvirt=>{}}
44
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}, 5=>{"5_clones"=>0.7666666666666667}, 6=>{"6_clones"=>0.8333333333333334}, 7=>{"7_clones"=>0.9333333333333333}, 8=>{"8_clones"=>1.0166666666666666}, 9=>{"9_clones"=>1.0833333333333333}}, :libvirt=>{}}
45
+ {:docker=>{1=>{"1_clones"=>0.5666666666666667}, 2=>{"2_clones"=>0.5666666666666667}, 3=>{"3_clones"=>0.6}, 4=>{"4_clones"=>0.6666666666666666}, 5=>{"5_clones"=>0.7666666666666667}, 6=>{"6_clones"=>0.8333333333333334}, 7=>{"7_clones"=>0.9333333333333333}, 8=>{"8_clones"=>1.0166666666666666}, 9=>{"9_clones"=>1.0833333333333333}, 10=>{"10_clones"=>1.1833333333333333}}, :libvirt=>{}}
@@ -0,0 +1,134 @@
1
+ #!/usr/bin/env bash
2
+ #set -xu
3
+
4
+ error() {
5
+ local msg="${1}"
6
+ echo "==> ERROR: ${msg}"
7
+ exit 1
8
+ }
9
+
10
+ usage() {
11
+ echo "Usage: ${0} IMAGE [BOX] [Vagrantfile.add]"
12
+ echo
13
+ echo "Package a qcow2 image into a vagrant-libvirt reusable box"
14
+ }
15
+
16
+ # Print the image's backing file
17
+ backing(){
18
+ local img=${1}
19
+ qemu-img info "$img" | grep 'backing file:' | cut -d ':' -f2
20
+ }
21
+
22
+ # Rebase the image
23
+ rebase(){
24
+ local img=${1}
25
+ qemu-img rebase -p -b "" "$img"
26
+ [[ "$?" -ne 0 ]] && error "Error during rebase"
27
+ }
28
+
29
+ # Is absolute path
30
+ isabspath(){
31
+ local path=${1}
32
+ [[ "$path" =~ ^/.* ]]
33
+ }
34
+
35
+ if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
36
+ usage
37
+ exit 1
38
+ fi
39
+
40
+ IMG=$(readlink -e "$1")
41
+ [[ "$?" -ne 0 ]] && error "'$1': No such image"
42
+
43
+ IMG_DIR=$(dirname "$IMG")
44
+ IMG_BASENAME=$(basename "$IMG")
45
+
46
+ BOX=${2:-}
47
+ # If no box name is supplied infer one from image name
48
+ if [[ -z "$BOX" ]]; then
49
+ BOX_NAME=${IMG_BASENAME%.*}
50
+ BOX=$BOX_NAME.box
51
+ else
52
+ BOX_NAME=$(basename "${BOX%.*}")
53
+ fi
54
+
55
+ [[ -f "$BOX" ]] && error "'$BOX': Already exists"
56
+
57
+ CWD=$(pwd)
58
+ TMP_DIR="$CWD/_tmp_package"
59
+ TMP_IMG="$TMP_DIR/box.img"
60
+
61
+ mkdir -p "$TMP_DIR"
62
+
63
+ [[ ! -r "$IMG" ]] && error "'$IMG': Permission denied"
64
+
65
+ if [ -n "$3" ] && [ -r "$3" ]; then
66
+ VAGRANTFILE_ADD="$(cat $3)"
67
+ fi
68
+
69
+ # We move / copy (when the image has master) the image to the tempdir
70
+ # ensure that it's moved back / removed again
71
+ if [[ -n $(backing "$IMG") ]]; then
72
+ echo "==> Image has backing image, copying image and rebasing ..."
73
+ trap "rm -rf $TMP_DIR" EXIT
74
+ cp "$IMG" "$TMP_IMG"
75
+ rebase "$TMP_IMG"
76
+ else
77
+ if fuser -s "$IMG"; then
78
+ error "Image '$IMG_BASENAME' is used by another process"
79
+ fi
80
+
81
+ # move the image to get a speed-up and use less space on disk
82
+ trap 'mv "$TMP_IMG" "$IMG"; rm -rf "$TMP_DIR"' EXIT
83
+ mv "$IMG" "$TMP_IMG"
84
+ fi
85
+
86
+ cd "$TMP_DIR"
87
+
88
+ #Using the awk int function here to truncate the virtual image size to an
89
+ #integer since the fog-libvirt library does not seem to properly handle
90
+ #floating point.
91
+ IMG_SIZE=$(qemu-img info --output=json "$TMP_IMG" | awk '/virtual-size/{s=int($2)/(1024^3); print (s == int(s)) ? s : int(s)+1 }')
92
+
93
+ echo "{$IMG_SIZE}"
94
+
95
+ cat > metadata.json <<EOF
96
+ {
97
+ "provider": "libvirt",
98
+ "format": "qcow2",
99
+ "virtual_size": ${IMG_SIZE}
100
+ }
101
+ EOF
102
+
103
+ cat > Vagrantfile <<EOF
104
+ Vagrant.configure("2") do |config|
105
+
106
+ config.vm.provider :libvirt do |libvirt|
107
+
108
+ libvirt.driver = "kvm"
109
+ libvirt.host = ""
110
+ libvirt.connect_via_ssh = false
111
+ libvirt.storage_pool_name = "default"
112
+
113
+ end
114
+
115
+ ${VAGRANTFILE_ADD:-}
116
+ end
117
+ EOF
118
+
119
+ echo "==> Creating box, tarring and gzipping"
120
+
121
+ #mkdir "$BOX"
122
+ #mv ./metadata.json "$BOX"
123
+ #mv ./Vagrantfile "$BOX"
124
+ #mv ./box.img "$BOX"
125
+ tar cvzf "$BOX" -S --totals ./metadata.json ./Vagrantfile ./box.img
126
+
127
+ ## if box is in tmpdir move it to CWD before removing tmpdir
128
+ if ! isabspath "$BOX"; then
129
+ mv "$BOX" "$CWD"
130
+ fi
131
+
132
+ echo "==> ${BOX} created"
133
+ echo "==> You can now add the box:"
134
+ echo "==> 'vagrant box add ${BOX} --name ${BOX_NAME}'"
data/test.rb ADDED
@@ -0,0 +1,92 @@
1
+ require 'parser/current'
2
+
3
+ class VagrantfileManager
4
+ def initialize(path_to_vagrantfile, new_images_by_nodes)
5
+ buffer = Parser::Source::Buffer.new('(source)')
6
+ buffer.source = File.read(path_to_vagrantfile)
7
+ parser = Parser::CurrentRuby.new
8
+ ast = parser.parse(buffer)
9
+ rewriter = VmsRewriter.new(new_images_by_nodes)
10
+ File.open("#{path_to_vagrantfile}_test", 'w') do |vagrantfile|
11
+ vagrantfile.write rewriter.rewrite(buffer, ast)
12
+ end
13
+ end
14
+
15
+ class VmsRewriter < Parser::Rewriter
16
+
17
+ attr_accessor :vms
18
+
19
+ def initialize(new_images_by_nodes)
20
+ @vms = Hash.new
21
+ @new_images_by_nodes = new_images_by_nodes
22
+ end
23
+
24
+ def process_all(node)
25
+ get_vm_block(node)
26
+ change_images
27
+ super
28
+ end
29
+
30
+ def change_images
31
+ @vms.each do |vm_name, node|
32
+ change_image(node, @new_images_by_nodes[vm_name])
33
+ end
34
+ end
35
+
36
+ def change_image(node, new_image_path)
37
+ image_replaced = false
38
+ if node.class == Parser::AST::Node
39
+ node.children.each do |vm_block_child|
40
+ if vm_block_child.class == Parser::AST::Node and vm_block_child.type == :begin
41
+ vm_block_child.children.each do |first_send_child|
42
+ if first_send_child.class == Parser::AST::Node and first_send_child.type == :send
43
+ if first_send_child.children.size > 2 and first_send_child.children[1] == :image=
44
+ replace first_send_child.children[2].loc.expression, "'#{new_image_path}'"
45
+ image_replaced = true
46
+ end
47
+ end
48
+ end
49
+ end
50
+ change_image vm_block_child, new_image_path unless image_replaced
51
+ end
52
+ end
53
+ end
54
+
55
+ def get_vm_block(node)
56
+ if node.class == Parser::AST::Node
57
+ lvar_config_found = false
58
+ send_vm_found = false
59
+ send_define_found = false
60
+ str_provider = nil
61
+ node.children.each do |vm_block_child|
62
+ if vm_block_child.class == Parser::AST::Node and vm_block_child.type == :send
63
+ vm_block_child.children.each do |first_send_child|
64
+ if first_send_child.class == Parser::AST::Node
65
+ if first_send_child.type == :send
66
+ first_send_child.children.each do |second_send_child|
67
+ if second_send_child.class == Parser::AST::Node and second_send_child.type == :lvar
68
+ if second_send_child.children[0] == :config
69
+ lvar_config_found = true
70
+ end
71
+ end
72
+ send_vm_found = true if second_send_child == :vm
73
+ end
74
+
75
+ end
76
+ if first_send_child.type == :str
77
+ str_provider = first_send_child.children[0]
78
+ end
79
+ end
80
+ send_define_found = true if first_send_child == :define
81
+ end
82
+ end
83
+ if lvar_config_found and send_vm_found and send_define_found and !str_provider.nil?
84
+ @vms[str_provider] = node unless @vms.has_key? str_provider
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end
91
+
92
+ VagrantfileManager.new('/home/galiaf95/mdbci/DOCKER_TEST/Vagrantfile', {'galera_000'=>'test1', 'node_000'=>'test2'})
@@ -0,0 +1,130 @@
1
+ #!/usr/bin/env bash
2
+ #set -xu
3
+
4
+ error() {
5
+ local msg="${1}"
6
+ echo "==> ERROR: ${msg}"
7
+ exit 1
8
+ }
9
+
10
+ usage() {
11
+ echo "Usage: ${0} IMAGE [BOX] [Vagrantfile.add]"
12
+ echo
13
+ echo "Package a qcow2 image into a vagrant-libvirt reusable box"
14
+ }
15
+
16
+ # Print the image's backing file
17
+ backing(){
18
+ local img=${1}
19
+ qemu-img info "$img" | grep 'backing file:' | cut -d ':' -f2
20
+ }
21
+
22
+ # Rebase the image
23
+ rebase(){
24
+ local img=${1}
25
+ qemu-img rebase -p -b "" "$img"
26
+ [[ "$?" -ne 0 ]] && error "Error during rebase"
27
+ }
28
+
29
+ # Is absolute path
30
+ isabspath(){
31
+ local path=${1}
32
+ [[ "$path" =~ ^/.* ]]
33
+ }
34
+
35
+ if [ -z "$1" ] || [ "$1" = "-h" ] || [ "$1" = "--help" ]; then
36
+ usage
37
+ exit 1
38
+ fi
39
+
40
+ IMG=$(readlink -e "$1")
41
+ [[ "$?" -ne 0 ]] && error "'$1': No such image"
42
+
43
+ IMG_DIR=$(dirname "$IMG")
44
+ IMG_BASENAME=$(basename "$IMG")
45
+
46
+ BOX=${2:-}
47
+ # If no box name is supplied infer one from image name
48
+ if [[ -z "$BOX" ]]; then
49
+ BOX_NAME=${IMG_BASENAME%.*}
50
+ BOX=$BOX_NAME.box
51
+ else
52
+ BOX_NAME=$(basename "${BOX%.*}")
53
+ fi
54
+
55
+ [[ -f "$BOX" ]] && error "'$BOX': Already exists"
56
+
57
+ CWD=$(pwd)
58
+ TMP_DIR="$CWD/_tmp_package"
59
+ TMP_IMG="$TMP_DIR/box.img"
60
+
61
+ mkdir -p "$TMP_DIR"
62
+
63
+ [[ ! -r "$IMG" ]] && error "'$IMG': Permission denied"
64
+
65
+ if [ -n "$3" ] && [ -r "$3" ]; then
66
+ VAGRANTFILE_ADD="$(cat $3)"
67
+ fi
68
+
69
+ # We move / copy (when the image has master) the image to the tempdir
70
+ # ensure that it's moved back / removed again
71
+ if [[ -n $(backing "$IMG") ]]; then
72
+ echo "==> Image has backing image, copying image and rebasing ..."
73
+ trap "rm -rf $TMP_DIR" EXIT
74
+ cp "$IMG" "$TMP_IMG"
75
+ rebase "$TMP_IMG"
76
+ else
77
+ if fuser -s "$IMG"; then
78
+ error "Image '$IMG_BASENAME' is used by another process"
79
+ fi
80
+
81
+ # move the image to get a speed-up and use less space on disk
82
+ trap 'mv "$TMP_IMG" "$IMG"; rm -rf "$TMP_DIR"' EXIT
83
+ mv "$IMG" "$TMP_IMG"
84
+ fi
85
+
86
+ cd "$TMP_DIR"
87
+
88
+ #Using the awk int function here to truncate the virtual image size to an
89
+ #integer since the fog-libvirt library does not seem to properly handle
90
+ #floating point.
91
+ IMG_SIZE=$(qemu-img info --output=json "$TMP_IMG" | awk '/virtual-size/{s=int($2)/(1024^3); print (s == int(s)) ? s : int(s)+1 }')
92
+
93
+ echo "{$IMG_SIZE}"
94
+
95
+ cat > metadata.json <<EOF
96
+ {
97
+ "provider": "libvirt",
98
+ "format": "qcow2",
99
+ "virtual_size": ${IMG_SIZE}
100
+ }
101
+ EOF
102
+
103
+ cat > Vagrantfile <<EOF
104
+ Vagrant.configure("2") do |config|
105
+
106
+ config.vm.provider :libvirt do |libvirt|
107
+
108
+ libvirt.driver = "kvm"
109
+ libvirt.host = ""
110
+ libvirt.connect_via_ssh = false
111
+ libvirt.storage_pool_name = "default"
112
+
113
+ end
114
+
115
+ ${VAGRANTFILE_ADD:-}
116
+ end
117
+ EOF
118
+
119
+ echo "==> Creating box, tarring and gzipping"
120
+
121
+ tar cvzf "$BOX" -S --totals ./metadata.json ./Vagrantfile ./box.img
122
+
123
+ # if box is in tmpdir move it to CWD before removing tmpdir
124
+ if ! isabspath "$BOX"; then
125
+ mv "$BOX" "$CWD"
126
+ fi
127
+
128
+ echo "==> ${BOX} created"
129
+ echo "==> You can now add the box:"
130
+ echo "==> 'vagrant box add ${BOX} --name ${BOX_NAME}'"
@@ -2,10 +2,10 @@
2
2
  require File.expand_path('../lib/vagrant-clone/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
- spec.name = "vagrant-clone"
5
+ spec.name = 'vagrant-clone'
6
6
  spec.version = VagrantClone::VERSION
7
- spec.authors = ["Alexander Kaluzny"]
8
- spec.email = ["galiaf1995@gmail.com"]
7
+ spec.authors = ['Alexander Kaluzny']
8
+ spec.email = ['galiaf1995@gmail.com']
9
9
 
10
10
  spec.summary = 'Plugin for creating and managing clones of VM(s)'
11
11
  spec.description = 'Plugin for creating and managing clones of VM(s)'
@@ -14,10 +14,10 @@ Gem::Specification.new do |spec|
14
14
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
15
15
  f.match(%r{^(test|spec|features)/})
16
16
  end
17
- spec.bindir = "exe"
17
+ spec.bindir = 'exe'
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
- spec.require_paths = ["lib"]
19
+ spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.13"
22
- spec.add_development_dependency "rake", "~> 10.0"
21
+ spec.add_development_dependency 'bundler', '~> 1.13'
22
+ spec.add_development_dependency 'rake', '~> 10.0'
23
23
  end