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.
- checksums.yaml +4 -4
- data/.idea/.rakeTasks +7 -0
- data/.idea/inspectionProfiles/Project_Default.xml +6 -0
- data/.idea/misc.xml +4 -0
- data/.idea/modules.xml +8 -0
- data/.idea/runConfigurations/clone.xml +21 -0
- data/.idea/runConfigurations/libvirt.xml +21 -0
- data/.idea/vagrant-clone.iml +114 -0
- data/.idea/vcs.xml +6 -0
- data/.idea/workspace.xml +948 -0
- data/Gemfile +9 -3
- data/Gemfile.lock +123 -37
- data/Rakefile +2 -1
- data/Vagrantfile +9 -0
- data/cookbooks/apt/CHANGELOG.md +321 -0
- data/cookbooks/apt/CONTRIBUTING.md +2 -0
- data/cookbooks/apt/MAINTAINERS.md +15 -0
- data/cookbooks/apt/README.md +250 -0
- data/cookbooks/apt/attributes/default.rb +57 -0
- data/cookbooks/apt/files/15update-stamp +1 -0
- data/cookbooks/apt/files/apt-proxy-v2.conf +50 -0
- data/cookbooks/apt/libraries/helpers.rb +49 -0
- data/cookbooks/apt/libraries/matchers.rb +16 -0
- data/cookbooks/apt/metadata.json +1 -0
- data/cookbooks/apt/recipes/cacher-client.rb +52 -0
- data/cookbooks/apt/recipes/cacher-ng.rb +39 -0
- data/cookbooks/apt/recipes/default.rb +93 -0
- data/cookbooks/apt/recipes/unattended-upgrades.rb +47 -0
- data/cookbooks/apt/resources/preference.rb +90 -0
- data/cookbooks/apt/templates/01proxy.erb +11 -0
- data/cookbooks/apt/templates/10dpkg-options.erb +8 -0
- data/cookbooks/apt/templates/10recommends.erb +3 -0
- data/cookbooks/apt/templates/20auto-upgrades.erb +5 -0
- data/cookbooks/apt/templates/50unattended-upgrades.erb +75 -0
- data/cookbooks/apt/templates/acng.conf.erb +275 -0
- data/cookbooks/apt/templates/unattended-upgrades.seed.erb +1 -0
- data/cookbooks/build-essential/.foodcritic +1 -0
- data/cookbooks/build-essential/CHANGELOG.md +257 -0
- data/cookbooks/build-essential/CONTRIBUTING.md +2 -0
- data/cookbooks/build-essential/MAINTAINERS.md +15 -0
- data/cookbooks/build-essential/README.md +134 -0
- data/cookbooks/build-essential/attributes/default.rb +21 -0
- data/cookbooks/build-essential/libraries/matchers.rb +9 -0
- data/cookbooks/build-essential/metadata.json +1 -0
- data/cookbooks/build-essential/recipes/_windows.rb +53 -0
- data/cookbooks/build-essential/recipes/default.rb +24 -0
- data/cookbooks/build-essential/resources/build_essential.rb +106 -0
- data/cookbooks/build-essential/resources/xcode_command_line_tools.rb +61 -0
- data/cookbooks/compat_resource/CHANGELOG.md +53 -0
- data/cookbooks/compat_resource/CONTRIBUTING.md +2 -0
- data/cookbooks/compat_resource/MAINTAINERS.md +16 -0
- data/cookbooks/compat_resource/README.md +60 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/constants.rb +47 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/delayed_evaluator.rb +40 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/core.rb +73 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/declare_resource.rb +315 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/platform_introspection.rb +292 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/recipe.rb +37 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/dsl/universal.rb +70 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/lazy_module_include.rb +98 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/notifying_block.rb +74 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/params_validate.rb +510 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/powershell_out.rb +117 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/mixin/properties.rb +328 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/property.rb +713 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/apt_repository.rb +269 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/apt_update.rb +105 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/noop.rb +56 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/support/yum_repo.erb +132 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/systemd_unit.rb +253 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider/yum_repository.rb +136 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/provider.rb +164 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/action_class.rb +114 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/apt_repository.rb +65 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/apt_update.rb +52 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/systemd_unit.rb +81 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource/yum_repository.rb +97 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource.rb +214 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef/chef/resource_builder.rb +174 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/copied_from_chef.rb +29 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/mixin/properties.rb +8 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/exceptions.rb +10 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/log.rb +30 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/mixin/params_validate.rb +17 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/node.rb +9 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/property.rb +15 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/provider.rb +65 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/recipe.rb +118 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/recipe_hook.rb +20 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource/lwrp_base.rb +60 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource.rb +156 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_builder.rb +167 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_collection/resource_list.rb +49 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_collection/resource_set.rb +49 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/resource_collection.rb +103 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/run_context.rb +691 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef/runner.rb +153 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches/chef.rb +33 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/monkeypatches.rb +41 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/property.rb +6 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/recipe.rb +8 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/resource/lwrp_base.rb +44 -0
- data/cookbooks/compat_resource/files/lib/chef_compat/resource.rb +56 -0
- data/cookbooks/compat_resource/files/lib/chef_upstream_version.rb +3 -0
- data/cookbooks/compat_resource/files/lib/compat_resource.rb +35 -0
- data/cookbooks/compat_resource/libraries/autoload.rb +31 -0
- data/cookbooks/compat_resource/metadata.json +1 -0
- data/cookbooks/inifile_chef_gem/CHANGELOG.md +11 -0
- data/cookbooks/inifile_chef_gem/README.md +46 -0
- data/cookbooks/inifile_chef_gem/metadata.json +51 -0
- data/cookbooks/inifile_chef_gem/metadata.rb +11 -0
- data/cookbooks/inifile_chef_gem/resources/default.rb +28 -0
- data/cookbooks/mariadb/CHANGELOG.md +332 -0
- data/cookbooks/mariadb/README.md +225 -0
- data/cookbooks/mariadb/attributes/default.rb +199 -0
- data/cookbooks/mariadb/libraries/mariadb_conn_helper.rb +53 -0
- data/cookbooks/mariadb/libraries/mariadb_helper.rb +216 -0
- data/cookbooks/mariadb/libraries/matchers.rb +21 -0
- data/cookbooks/mariadb/metadata.json +1 -0
- data/cookbooks/mariadb/providers/configuration.rb +39 -0
- data/cookbooks/mariadb/recipes/_audit_plugin.rb +63 -0
- data/cookbooks/mariadb/recipes/_debian_galera.rb +62 -0
- data/cookbooks/mariadb/recipes/_debian_server.rb +78 -0
- data/cookbooks/mariadb/recipes/_mariadb_repository.rb +29 -0
- data/cookbooks/mariadb/recipes/_redhat_client.rb +27 -0
- data/cookbooks/mariadb/recipes/_redhat_galera.rb +55 -0
- data/cookbooks/mariadb/recipes/_redhat_server.rb +58 -0
- data/cookbooks/mariadb/recipes/client.rb +47 -0
- data/cookbooks/mariadb/recipes/config.rb +115 -0
- data/cookbooks/mariadb/recipes/default.rb +46 -0
- data/cookbooks/mariadb/recipes/devel.rb +41 -0
- data/cookbooks/mariadb/recipes/galera.rb +324 -0
- data/cookbooks/mariadb/recipes/plugins.rb +3 -0
- data/cookbooks/mariadb/recipes/repository.rb +45 -0
- data/cookbooks/mariadb/recipes/server.rb +157 -0
- data/cookbooks/mariadb/resources/configuration.rb +13 -0
- data/cookbooks/mariadb/resources/mysql2_gem.rb +25 -0
- data/cookbooks/mariadb/resources/replication.rb +192 -0
- data/cookbooks/mariadb/templates/default/conf.d.generic.erb +19 -0
- data/cookbooks/mariadb/templates/default/debian.cnf.erb +12 -0
- data/cookbooks/mariadb/templates/default/mariadb-server.seed.erb +13 -0
- data/cookbooks/mariadb/templates/default/mariadb_grants.erb +42 -0
- data/cookbooks/mariadb/templates/default/my.cnf.erb +210 -0
- data/cookbooks/mariadb/templates/default/root.cnf.erb +5 -0
- data/cookbooks/mingw/.foodcritic +1 -0
- data/cookbooks/mingw/CHANGELOG.md +50 -0
- data/cookbooks/mingw/CONTRIBUTING.md +2 -0
- data/cookbooks/mingw/MAINTAINERS.md +14 -0
- data/cookbooks/mingw/README.md +133 -0
- data/cookbooks/mingw/files/default/bash.bat +17 -0
- data/cookbooks/mingw/files/default/custom-upgrade.sh +23 -0
- data/cookbooks/mingw/files/default/custom_prefix.sh +13 -0
- data/cookbooks/mingw/files/default/pthread.h +719 -0
- data/cookbooks/mingw/files/default/time.h +297 -0
- data/cookbooks/mingw/libraries/_helper.rb +38 -0
- data/cookbooks/mingw/metadata.json +1 -0
- data/cookbooks/mingw/recipes/default.rb +19 -0
- data/cookbooks/mingw/resources/get.rb +56 -0
- data/cookbooks/mingw/resources/msys2_package.rb +139 -0
- data/cookbooks/mingw/resources/tdm_gcc.rb +114 -0
- data/cookbooks/ohai/.foodcritic +2 -0
- data/cookbooks/ohai/CHANGELOG.md +166 -0
- data/cookbooks/ohai/CONTRIBUTING.md +2 -0
- data/cookbooks/ohai/MAINTAINERS.md +15 -0
- data/cookbooks/ohai/README.md +134 -0
- data/cookbooks/ohai/libraries/matchers.rb +41 -0
- data/cookbooks/ohai/metadata.json +1 -0
- data/cookbooks/ohai/recipes/default.rb +20 -0
- data/cookbooks/ohai/resources/hint.rb +55 -0
- data/cookbooks/ohai/resources/plugin.rb +117 -0
- data/cookbooks/selinux_policy/.gitignore +51 -0
- data/cookbooks/selinux_policy/.kitchen.yml +25 -0
- data/cookbooks/selinux_policy/.rubocop.yml +2 -0
- data/cookbooks/selinux_policy/.travis.yml +26 -0
- data/cookbooks/selinux_policy/Berksfile +8 -0
- data/cookbooks/selinux_policy/CHANGELOG.md +155 -0
- data/cookbooks/selinux_policy/LICENSE +13 -0
- data/cookbooks/selinux_policy/README.md +217 -0
- data/cookbooks/selinux_policy/Rakefile +68 -0
- data/cookbooks/selinux_policy/TESTING.md +2 -0
- data/cookbooks/selinux_policy/Thorfile +12 -0
- data/cookbooks/selinux_policy/attributes/default.rb +5 -0
- data/cookbooks/selinux_policy/chefignore +102 -0
- data/cookbooks/selinux_policy/libraries/helper-disabled.rb +29 -0
- data/cookbooks/selinux_policy/libraries/matchers.rb +57 -0
- data/cookbooks/selinux_policy/metadata.json +58 -0
- data/cookbooks/selinux_policy/metadata.rb +20 -0
- data/cookbooks/selinux_policy/providers/boolean.rb +28 -0
- data/cookbooks/selinux_policy/providers/fcontext.rb +78 -0
- data/cookbooks/selinux_policy/providers/module.rb +81 -0
- data/cookbooks/selinux_policy/providers/permissive.rb +26 -0
- data/cookbooks/selinux_policy/providers/port.rb +58 -0
- data/cookbooks/selinux_policy/recipes/default.rb +9 -0
- data/cookbooks/selinux_policy/recipes/install.rb +32 -0
- data/cookbooks/selinux_policy/resources/boolean.rb +8 -0
- data/cookbooks/selinux_policy/resources/fcontext.rb +8 -0
- data/cookbooks/selinux_policy/resources/module.rb +21 -0
- data/cookbooks/selinux_policy/resources/permissive.rb +6 -0
- data/cookbooks/selinux_policy/resources/port.rb +9 -0
- data/cookbooks/seven_zip/CHANGELOG.md +30 -0
- data/cookbooks/seven_zip/README.md +108 -0
- data/cookbooks/seven_zip/attributes/default.rb +31 -0
- data/cookbooks/seven_zip/libraries/matchers.rb +33 -0
- data/cookbooks/seven_zip/metadata.json +1 -0
- data/cookbooks/seven_zip/providers/archive.rb +68 -0
- data/cookbooks/seven_zip/recipes/default.rb +41 -0
- data/cookbooks/seven_zip/resources/archive.rb +29 -0
- data/cookbooks/windows/.foodcritic +2 -0
- data/cookbooks/windows/CHANGELOG.md +528 -0
- data/cookbooks/windows/CONTRIBUTING.md +2 -0
- data/cookbooks/windows/MAINTAINERS.md +21 -0
- data/cookbooks/windows/README.md +803 -0
- data/cookbooks/windows/attributes/default.rb +21 -0
- data/cookbooks/windows/files/dism_features.rb +45 -0
- data/cookbooks/windows/libraries/matchers.rb +586 -0
- data/cookbooks/windows/libraries/powershell_helper.rb +53 -0
- data/cookbooks/windows/libraries/registry_helper.rb +356 -0
- data/cookbooks/windows/libraries/version.rb +207 -0
- data/cookbooks/windows/libraries/version_helper.rb +79 -0
- data/cookbooks/windows/libraries/windows_helper.rb +174 -0
- data/cookbooks/windows/libraries/windows_privileged.rb +103 -0
- data/cookbooks/windows/libraries/wmi_helper.rb +32 -0
- data/cookbooks/windows/metadata.json +1 -0
- data/cookbooks/windows/recipes/default.rb +21 -0
- data/cookbooks/windows/resources/auto_run.rb +46 -0
- data/cookbooks/windows/resources/certificate.rb +166 -0
- data/cookbooks/windows/resources/certificate_binding.rb +128 -0
- data/cookbooks/windows/resources/feature.rb +82 -0
- data/cookbooks/windows/resources/feature_dism.rb +108 -0
- data/cookbooks/windows/resources/feature_powershell.rb +70 -0
- data/cookbooks/windows/resources/feature_servermanagercmd.rb +76 -0
- data/cookbooks/windows/resources/font.rb +80 -0
- data/cookbooks/windows/resources/http_acl.rb +110 -0
- data/cookbooks/windows/resources/pagefile.rb +152 -0
- data/cookbooks/windows/resources/path.rb +54 -0
- data/cookbooks/windows/resources/printer.rb +103 -0
- data/cookbooks/windows/resources/printer_port.rb +101 -0
- data/cookbooks/windows/resources/share.rb +291 -0
- data/cookbooks/windows/resources/shortcut.rb +53 -0
- data/cookbooks/windows/resources/task.rb +384 -0
- data/cookbooks/windows/resources/zipfile.rb +125 -0
- data/cookbooks/yum/.foodcritic +1 -0
- data/cookbooks/yum/CHANGELOG.md +351 -0
- data/cookbooks/yum/CONTRIBUTING.md +2 -0
- data/cookbooks/yum/MAINTAINERS.md +16 -0
- data/cookbooks/yum/README.md +125 -0
- data/cookbooks/yum/attributes/main.rb +103 -0
- data/cookbooks/yum/libraries/matchers.rb +9 -0
- data/cookbooks/yum/metadata.json +1 -0
- data/cookbooks/yum/recipes/default.rb +26 -0
- data/cookbooks/yum/recipes/dnf_yum_compat.rb +29 -0
- data/cookbooks/yum/resources/globalconfig.rb +119 -0
- data/cookbooks/yum/templates/.DS_Store +0 -0
- data/cookbooks/yum/templates/main.erb +276 -0
- data/cookbooks/yum-epel/CHANGELOG.md +138 -0
- data/cookbooks/yum-epel/CONTRIBUTING.md +2 -0
- data/cookbooks/yum-epel/MAINTAINERS.md +19 -0
- data/cookbooks/yum-epel/README.md +172 -0
- data/cookbooks/yum-epel/attributes/default.rb +8 -0
- data/cookbooks/yum-epel/attributes/epel-debuginfo.rb +15 -0
- data/cookbooks/yum-epel/attributes/epel-source.rb +15 -0
- data/cookbooks/yum-epel/attributes/epel-testing-debuginfo.rb +15 -0
- data/cookbooks/yum-epel/attributes/epel-testing-source.rb +15 -0
- data/cookbooks/yum-epel/attributes/epel-testing.rb +15 -0
- data/cookbooks/yum-epel/attributes/epel.rb +21 -0
- data/cookbooks/yum-epel/metadata.json +1 -0
- data/cookbooks/yum-epel/recipes/default.rb +27 -0
- data/cookbooks/yum-scl/.kitchen.dokken.yml +24 -0
- data/cookbooks/yum-scl/.kitchen.yml +24 -0
- data/cookbooks/yum-scl/.rubocop.yml +6 -0
- data/cookbooks/yum-scl/.travis.yml +28 -0
- data/cookbooks/yum-scl/Berksfile +3 -0
- data/cookbooks/yum-scl/Berksfile.lock +25 -0
- data/cookbooks/yum-scl/CHANGELOG.md +11 -0
- data/cookbooks/yum-scl/Gemfile +46 -0
- data/cookbooks/yum-scl/README.md +76 -0
- data/cookbooks/yum-scl/attributes/centos.rb +83 -0
- data/cookbooks/yum-scl/attributes/default.rb +15 -0
- data/cookbooks/yum-scl/attributes/scientific.rb +1 -0
- data/cookbooks/yum-scl/files/default/RPM-GPG-KEY-CentOS-SIG-SCLo +20 -0
- data/cookbooks/yum-scl/libraries/yum_scl_helper.rb +33 -0
- data/cookbooks/yum-scl/metadata.json +42 -0
- data/cookbooks/yum-scl/metadata.rb +12 -0
- data/cookbooks/yum-scl/recipes/chef_install.rb +52 -0
- data/cookbooks/yum-scl/recipes/default.rb +17 -0
- data/cookbooks/yum-scl/recipes/native_install.rb +35 -0
- data/lib/vagrant-clone/command/clone.rb +66 -61
- data/lib/vagrant-clone/errors.rb +61 -0
- data/lib/vagrant-clone/util/clone_manager_base.rb +69 -0
- data/lib/vagrant-clone/util/clone_managers/docker.rb +31 -0
- data/lib/vagrant-clone/util/clone_managers/libvirt.rb +254 -0
- data/lib/vagrant-clone/util/vagrantfile_managers/docker.rb +154 -0
- data/lib/vagrant-clone/util/vagrantfile_managers/libvirt.rb +159 -0
- data/lib/vagrant-clone/version.rb +2 -2
- data/lib/vagrant-clone.rb +6 -6
- data/libvirt.txt +7 -0
- data/performance_testing.rb +165 -0
- data/results.txt +45 -0
- data/scripts/create_box.sh +134 -0
- data/test.rb +92 -0
- data/tools/create_box.sh +130 -0
- data/vagrant-clone.gemspec +7 -7
- metadata +296 -5
- data/lib/vagrant-clone/command/errors.rb +0 -16
- data/lib/vagrant-clone/command/provider/docker.rb +0 -13
- 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'})
|
data/tools/create_box.sh
ADDED
@@ -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}'"
|
data/vagrant-clone.gemspec
CHANGED
@@ -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 =
|
5
|
+
spec.name = 'vagrant-clone'
|
6
6
|
spec.version = VagrantClone::VERSION
|
7
|
-
spec.authors = [
|
8
|
-
spec.email = [
|
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 =
|
17
|
+
spec.bindir = 'exe'
|
18
18
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
19
|
-
spec.require_paths = [
|
19
|
+
spec.require_paths = ['lib']
|
20
20
|
|
21
|
-
spec.add_development_dependency
|
22
|
-
spec.add_development_dependency
|
21
|
+
spec.add_development_dependency 'bundler', '~> 1.13'
|
22
|
+
spec.add_development_dependency 'rake', '~> 10.0'
|
23
23
|
end
|