veewee 0.2.3 → 0.3.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +3 -0
- data/Gemfile +1 -2
- data/Gemfile.lock +53 -30
- data/License +21 -0
- data/README-LIB.md +2 -0
- data/README.md +35 -62
- data/Rakefile +54 -88
- data/bin/veewee +13 -70
- data/bin/veewee-kvm-old +34 -0
- data/bin/veewee-vagrant +55 -0
- data/bin/veewee-vmfusion +34 -0
- data/lib/fission.rb +41 -0
- data/lib/fission/cli.rb +76 -0
- data/lib/fission/command.rb +15 -0
- data/lib/fission/command/clone.rb +68 -0
- data/lib/fission/command/delete.rb +71 -0
- data/lib/fission/command/snapshot_create.rb +52 -0
- data/lib/fission/command/snapshot_list.rb +45 -0
- data/lib/fission/command/snapshot_revert.rb +54 -0
- data/lib/fission/command/start.rb +69 -0
- data/lib/fission/command/status.rb +31 -0
- data/lib/fission/command/stop.rb +49 -0
- data/lib/fission/command/suspend.rb +67 -0
- data/lib/fission/config.rb +29 -0
- data/lib/fission/core_ext/class.rb +5 -0
- data/lib/fission/core_ext/file.rb +7 -0
- data/lib/fission/core_ext/object.rb +112 -0
- data/lib/fission/error.rb +9 -0
- data/lib/fission/fusion.rb +17 -0
- data/lib/fission/leasesfile.rb +74 -0
- data/lib/fission/metadata.rb +39 -0
- data/lib/fission/response.rb +16 -0
- data/lib/fission/ui.rb +22 -0
- data/lib/fission/version.rb +3 -0
- data/lib/fission/vm.rb +361 -0
- data/lib/net/vnc/vnc.rb +341 -0
- data/lib/vagrant_init.rb +5 -2
- data/lib/veewee.rb +20 -3
- data/lib/veewee/builder/core/box.rb +32 -0
- data/lib/veewee/builder/core/box/vnc.rb +122 -0
- data/lib/veewee/builder/core/builder.rb +90 -0
- data/lib/veewee/builder/core/builder/build.rb +250 -0
- data/lib/veewee/builder/core/builder/iso.rb +120 -0
- data/lib/veewee/builder/core/builder/transaction.rb +25 -0
- data/lib/veewee/builder/core/builder/tunnel.rb +46 -0
- data/lib/veewee/builder/kvm/box.rb +130 -0
- data/lib/veewee/builder/kvm/builder.rb +38 -0
- data/lib/veewee/builder/virtualbox/box.rb +121 -0
- data/lib/veewee/builder/virtualbox/builder.rb +48 -0
- data/lib/veewee/builder/virtualbox/helper/_snapshots.rb +105 -0
- data/lib/veewee/builder/virtualbox/helper/_transaction.rb +135 -0
- data/lib/veewee/builder/virtualbox/helper/console_type.rb +62 -0
- data/lib/veewee/builder/virtualbox/helper/create.rb +210 -0
- data/lib/veewee/builder/virtualbox/helper/destroy.rb +79 -0
- data/lib/veewee/builder/virtualbox/helper/export_vagrant.rb +87 -0
- data/lib/veewee/builder/virtualbox/helper/validate_vagrant.rb +35 -0
- data/lib/veewee/builder/vmfusion/box.rb +137 -0
- data/lib/veewee/builder/vmfusion/builder.rb +78 -0
- data/lib/veewee/builder/vmfusion/helper/create.rb +68 -0
- data/lib/veewee/builder/vmfusion/helper/export_ova.rb +26 -0
- data/lib/veewee/builder/vmfusion/helper/template.rb +39 -0
- data/lib/veewee/builder/vmfusion/helper/template.vmx.erb +81 -0
- data/lib/veewee/builder/vmfusion/helper/validate_vmfusion.rb +37 -0
- data/lib/veewee/builder/vmfusion/info/export_ovf.info +103 -0
- data/lib/veewee/cli.rb +55 -0
- data/lib/veewee/command.rb +10 -20
- data/lib/veewee/command/base.rb +106 -0
- data/lib/veewee/command/group_base.rb +107 -0
- data/lib/veewee/command/helpers.rb +13 -0
- data/lib/veewee/command/kvm.rb +85 -0
- data/lib/veewee/command/named_base.rb +14 -0
- data/lib/veewee/command/vagrant.rb +108 -0
- data/lib/veewee/command/version.rb +13 -0
- data/lib/veewee/command/virtualbox.rb +86 -0
- data/lib/veewee/command/vmfusion.rb +113 -0
- data/lib/veewee/config.rb +89 -3
- data/lib/veewee/config/builders.rb +36 -0
- data/lib/veewee/config/collection.rb +82 -0
- data/lib/veewee/config/component.rb +19 -0
- data/lib/veewee/config/definition.rb +44 -0
- data/lib/veewee/config/ostypes.yml +165 -0
- data/lib/veewee/config/veewee.rb +21 -0
- data/lib/veewee/definition.rb +130 -0
- data/lib/veewee/environment.rb +367 -0
- data/lib/veewee/error.rb +20 -0
- data/lib/veewee/templates/locales/en.yml +30 -0
- data/lib/veewee/ui.rb +83 -0
- data/lib/veewee/util/scancode.rb +112 -0
- data/lib/veewee/util/shell.rb +42 -0
- data/lib/veewee/util/ssh.rb +158 -0
- data/lib/veewee/util/tcp.rb +88 -0
- data/lib/veewee/util/web.rb +63 -0
- data/lib/veewee/vagrant/config.rb +7 -0
- data/lib/veewee/version.rb +6 -1
- data/templates/CentOS-4.8-i386/definition.rb +3 -3
- data/templates/CentOS-4.8-i386/postinstall.sh +2 -2
- data/templates/CentOS-5.5-x86_64-netboot/definition.rb +1 -1
- data/templates/CentOS-5.5-x86_64-netboot/postinstall.sh +1 -1
- data/templates/CentOS-5.6-i386-netboot/definition.rb +3 -3
- data/templates/CentOS-5.6-i386-netboot/ks.cfg +2 -2
- data/templates/CentOS-5.6-i386-netboot/postinstall.sh +2 -2
- data/templates/CentOS-5.6-i386/definition.rb +2 -2
- data/templates/CentOS-5.6-i386/postinstall.sh +2 -2
- data/templates/CentOS-5.6-x86_64-netboot/definition.rb +3 -3
- data/templates/CentOS-5.6-x86_64-netboot/ks.cfg +1 -1
- data/templates/CentOS-5.6-x86_64-netboot/postinstall.sh +1 -1
- data/templates/CentOS-5.7-i386-netboot/postinstall.sh +3 -3
- data/templates/CentOS-5.7-x86_64-netboot/postinstall.sh +1 -1
- data/templates/CentOS-6.0-i386-netboot/definition.rb +2 -2
- data/templates/CentOS-6.0-i386-netboot/postinstall.sh +2 -2
- data/templates/CentOS-6.0-i386/definition.rb +2 -2
- data/templates/CentOS-6.0-i386/postinstall.sh +2 -2
- data/templates/CentOS-6.0-x86_64-minimal/definition.rb +2 -2
- data/templates/CentOS-6.0-x86_64-minimal/postinstall.sh +4 -17
- data/templates/CentOS-6.0-x86_64-netboot/definition.rb +2 -2
- data/templates/CentOS-6.0-x86_64-netboot/postinstall.sh +2 -2
- data/templates/CentOS-6.0-x86_64/definition.rb +2 -2
- data/templates/CentOS-6.0-x86_64/postinstall.sh +2 -2
- data/templates/Debian-5.0.8-amd64-netboot/definition.rb +1 -1
- data/templates/Debian-5.0.8-amd64-netboot/postinstall.sh +1 -1
- data/templates/Debian-5.0.8-i386-netboot/definition.rb +1 -1
- data/templates/Debian-5.0.8-i386-netboot/postinstall.sh +1 -1
- data/templates/{Debian-6.0.3-amd64-netboot → Debian-6.0.2-amd64-netboot}/definition.rb +4 -4
- data/templates/{ubuntu-11.10-server-amd64-ishaya → Debian-6.0.2-amd64-netboot}/postinstall.sh +23 -42
- data/templates/{Debian-6.0.3-amd64-netboot → Debian-6.0.2-amd64-netboot}/preseed.cfg +0 -0
- data/templates/{Debian-6.0.3-i386-netboot → Debian-6.0.2-i386-netboot}/definition.rb +4 -4
- data/templates/{Debian-6.0.3-i386-netboot → Debian-6.0.2-i386-netboot}/postinstall.sh +1 -1
- data/templates/{Debian-6.0.3-i386-netboot → Debian-6.0.2-i386-netboot}/preseed.cfg +0 -0
- data/templates/Fedora-14-amd64-netboot/definition.rb +2 -2
- data/templates/Fedora-14-amd64-netboot/postinstall.sh +2 -2
- data/templates/Fedora-14-amd64/definition.rb +2 -2
- data/templates/Fedora-14-amd64/postinstall.sh +2 -2
- data/templates/Fedora-14-i386-netboot/definition.rb +2 -2
- data/templates/Fedora-14-i386-netboot/postinstall.sh +2 -2
- data/templates/Fedora-14-i386/definition.rb +2 -2
- data/templates/Fedora-14-i386/postinstall.sh +2 -2
- data/templates/Fedora-15-i386-netboot/definition.rb +2 -2
- data/templates/Fedora-15-i386/definition.rb +3 -3
- data/templates/Sysrescuecd-2.0.0-experimental/definition.rb +1 -1
- data/templates/archlinux-i386-netboot/aif.cfg +14 -8
- data/templates/archlinux-i386-netboot/definition.rb +7 -4
- data/templates/archlinux-i386-netboot/postinstall.sh +17 -5
- data/templates/archlinux-i386-netboot/postinstall2.sh +1 -3
- data/templates/archlinux-i386/definition.rb +4 -4
- data/templates/archlinux-i386/postinstall.sh +1 -1
- data/templates/archlinux-x86_64-netboot/aif.cfg +14 -8
- data/templates/archlinux-x86_64-netboot/definition.rb +7 -4
- data/templates/archlinux-x86_64-netboot/postinstall.sh +16 -1
- data/templates/archlinux-x86_64-netboot/postinstall2.sh +1 -3
- data/templates/archlinux-x86_64/definition.rb +2 -2
- data/templates/archlinux-x86_64/postinstall.sh +1 -1
- data/templates/freebsd-8.2-experimental/definition.rb +1 -1
- data/templates/freebsd-8.2-pcbsd-i386-netboot/definition.rb +2 -5
- data/templates/freebsd-8.2-pcbsd-i386-netboot/postinstall.sh +1 -1
- data/templates/freebsd-8.2-pcbsd-i386/definition.rb +3 -4
- data/templates/freebsd-8.2-pcbsd-i386/postinstall.sh +1 -1
- data/templates/gentoo-latest-i386-experimental/definition.rb +7 -7
- data/templates/gentoo-latest-i386-experimental/postinstall.sh +1 -1
- data/templates/openSUSE-11.4-DVD-i586/postinstall.sh +1 -1
- data/templates/openSUSE-11.4-DVD-x86_64/postinstall.sh +1 -1
- data/templates/openSUSE-11.4-NET-i586/postinstall.sh +1 -1
- data/templates/openSUSE-11.4-NET-x86_64/postinstall.sh +1 -1
- data/templates/openindiana-148-ai-x86/definition.rb +3 -3
- data/templates/openindiana-148-ai-x86/postinstall.sh +1 -1
- data/templates/opensuse-11.4-i386-experimental/definition.rb +1 -1
- data/templates/opensuse-11.4-i386-experimental/postinstall.sh +1 -1
- data/templates/solaris-11-express-i386/definition.rb +3 -3
- data/templates/solaris-11-express-i386/postinstall.sh +1 -1
- data/templates/ubuntu-10.04.2-amd64-netboot/definition.rb +1 -1
- data/templates/ubuntu-10.04.2-amd64-netboot/postinstall.sh +1 -1
- data/templates/ubuntu-10.04.2-server-i386-netboot/definition.rb +1 -1
- data/templates/ubuntu-10.04.2-server-i386-netboot/postinstall.sh +1 -1
- data/templates/ubuntu-10.04.3-server-amd64-alt/definition.rb +6 -6
- data/templates/ubuntu-10.04.3-server-amd64-alt/postinstall.sh +1 -1
- data/templates/ubuntu-10.04.3-server-amd64/base.sh +11 -0
- data/templates/ubuntu-10.04.3-server-amd64/chef.sh +2 -0
- data/templates/ubuntu-10.04.3-server-amd64/cleanup.sh +19 -0
- data/templates/ubuntu-10.04.3-server-amd64/definition.rb +19 -11
- data/templates/ubuntu-10.04.3-server-amd64/preseed.cfg +4 -4
- data/templates/ubuntu-10.04.3-server-amd64/puppet.sh +1 -0
- data/templates/ubuntu-10.04.3-server-amd64/ruby.sh +24 -0
- data/templates/ubuntu-10.04.3-server-amd64/vagrant.sh +27 -0
- data/templates/ubuntu-10.04.3-server-amd64/virtualbox.sh +12 -0
- data/templates/ubuntu-10.04.3-server-i386/postinstall.sh +1 -1
- data/templates/ubuntu-10.10-server-amd64-netboot/definition.rb +1 -1
- data/templates/ubuntu-10.10-server-amd64-netboot/postinstall.sh +1 -1
- data/templates/ubuntu-10.10-server-amd64/base.sh +11 -0
- data/templates/ubuntu-10.10-server-amd64/chef.sh +2 -0
- data/templates/ubuntu-10.10-server-amd64/cleanup.sh +19 -0
- data/templates/ubuntu-10.10-server-amd64/definition.rb +20 -8
- data/templates/ubuntu-10.10-server-amd64/postinstall.sh +1 -1
- data/templates/ubuntu-10.10-server-amd64/preseed.cfg +5 -5
- data/templates/ubuntu-10.10-server-amd64/puppet.sh +1 -0
- data/templates/ubuntu-10.10-server-amd64/ruby.sh +24 -0
- data/templates/ubuntu-10.10-server-amd64/vagrant.sh +27 -0
- data/templates/ubuntu-10.10-server-amd64/virtualbox.sh +12 -0
- data/templates/ubuntu-10.10-server-i386-netboot/definition.rb +1 -1
- data/templates/ubuntu-10.10-server-i386-netboot/postinstall.sh +1 -1
- data/templates/ubuntu-10.10-server-i386/definition.rb +1 -1
- data/templates/ubuntu-10.10-server-i386/postinstall.sh +1 -1
- data/templates/ubuntu-11.04-server-amd64/apt-upgrade.sh +4 -0
- data/templates/ubuntu-11.04-server-amd64/chef.sh +1 -0
- data/templates/ubuntu-11.04-server-amd64/definition.rb +32 -9
- data/templates/ubuntu-11.04-server-amd64/network-cleanup.sh +14 -0
- data/templates/ubuntu-11.04-server-amd64/nfs-client.sh +3 -0
- data/templates/ubuntu-11.04-server-amd64/puppet.sh +1 -0
- data/templates/ubuntu-11.04-server-amd64/remove-build-essentials.sh +3 -0
- data/templates/ubuntu-11.04-server-amd64/ruby.sh +29 -0
- data/templates/ubuntu-11.04-server-amd64/ssh-keys.sh +7 -0
- data/templates/ubuntu-11.04-server-amd64/sudo.sh +4 -0
- data/templates/ubuntu-11.04-server-amd64/timestamp.sh +1 -0
- data/templates/ubuntu-11.04-server-amd64/vbox_additions.sh +11 -0
- data/templates/ubuntu-11.04-server-amd64/zero-disk.sh +3 -0
- data/templates/ubuntu-11.04-server-i386/definition.rb +2 -2
- data/templates/ubuntu-11.04-server-i386/postinstall.sh +1 -1
- data/templates/ubuntu-8.04.4-server-amd64/definition.rb +1 -2
- data/templates/ubuntu-8.04.4-server-amd64/postinstall.sh +7 -8
- data/templates/ubuntu-8.04.4-server-amd64/preseed.cfg +1 -0
- data/templates/ubuntu-8.04.4-server-i386/definition.rb +2 -2
- data/templates/ubuntu-8.04.4-server-i386/postinstall.sh +3 -25
- data/templates/windows-2008R2-amd64/cygwin-setup.exe +0 -0
- data/templates/windows-2008R2-amd64/definition.rb +1 -1
- data/templates/windows-2008R2-amd64/install-winrm.bat +0 -2
- data/templates/windows-2008R2-amd64/postinstall.sh +1 -1
- data/templates/windows-2008R2-amd64/win7/Autounattend.xml +180 -0
- data/test/build_test.rb +50 -0
- data/test/definition_test.rb +11 -0
- data/test/definitions/test_definition/_test_me.sh +1 -0
- data/test/definitions/test_definition/autorun0 +3 -0
- data/test/definitions/test_definition/definition.rb +27 -0
- data/test/environment_test.rb +67 -0
- data/validation/features/steps/ssh_steps.rb +52 -52
- data/validation/vagrant.feature +64 -48
- data/veewee.gemspec +14 -9
- metadata +243 -213
- data/lib/veewee/command/basebox.rb +0 -63
- data/lib/veewee/command/basebox_build.rb +0 -32
- data/lib/veewee/command/basebox_define.rb +0 -28
- data/lib/veewee/command/basebox_destroy.rb +0 -22
- data/lib/veewee/command/basebox_export.rb +0 -22
- data/lib/veewee/command/basebox_list.rb +0 -23
- data/lib/veewee/command/basebox_ostypes.rb +0 -23
- data/lib/veewee/command/basebox_templates.rb +0 -23
- data/lib/veewee/command/basebox_undefine.rb +0 -22
- data/lib/veewee/command/basebox_validate.rb +0 -26
- data/lib/veewee/export.rb +0 -81
- data/lib/veewee/scancode.rb +0 -151
- data/lib/veewee/session.rb +0 -907
- data/lib/veewee/shell.rb +0 -54
- data/lib/veewee/ssh.rb +0 -193
- data/lib/veewee/transaction.rb +0 -122
- data/lib/veewee/utils.rb +0 -26
- data/lib/veewee/web.rb +0 -48
- data/templates/CentOS-6.1-x86_64-minimal/definition.rb +0 -15
- data/templates/CentOS-6.1-x86_64-minimal/ks.cfg +0 -37
- data/templates/CentOS-6.1-x86_64-minimal/postinstall.sh +0 -50
- data/templates/CentOS-6.2-x86_64-minimal/definition.rb +0 -15
- data/templates/CentOS-6.2-x86_64-minimal/ks.cfg +0 -37
- data/templates/CentOS-6.2-x86_64-minimal/postinstall.sh +0 -50
- data/templates/Debian-6.0.3-amd64-netboot/postinstall.sh +0 -80
- data/templates/Fedora-15-x86_64-netboot/definition.rb +0 -29
- data/templates/Fedora-15-x86_64-netboot/ks.cfg +0 -64
- data/templates/Fedora-15-x86_64-netboot/postinstall.sh +0 -33
- data/templates/Fedora-16-i386/definition.rb +0 -17
- data/templates/Fedora-16-i386/ks.cfg +0 -72
- data/templates/Fedora-16-i386/postinstall.sh +0 -35
- data/templates/Fedora-16-x86_64/definition.rb +0 -17
- data/templates/Fedora-16-x86_64/ks.cfg +0 -72
- data/templates/Fedora-16-x86_64/postinstall.sh +0 -35
- data/templates/SLES-11-SP1-DVD-i586-GM/autoinst_de.xml +0 -1127
- data/templates/SLES-11-SP1-DVD-i586-GM/autoinst_en.xml +0 -1127
- data/templates/SLES-11-SP1-DVD-i586-GM/definition.rb +0 -37
- data/templates/SLES-11-SP1-DVD-i586-GM/postinstall.sh +0 -43
- data/templates/SLES-11-SP1-DVD-x86_64-GM/autoinst_de.xml +0 -1171
- data/templates/SLES-11-SP1-DVD-x86_64-GM/autoinst_en.xml +0 -1171
- data/templates/SLES-11-SP1-DVD-x86_64-GM/definition.rb +0 -37
- data/templates/SLES-11-SP1-DVD-x86_64-GM/postinstall.sh +0 -43
- data/templates/funtoo-latest-generic_64-stable/definition.rb +0 -34
- data/templates/funtoo-latest-generic_64-stable/postinstall.sh +0 -177
- data/templates/funtoo-latest-generic_64-stable/postinstall2.sh +0 -83
- data/templates/gentoo-latest-x86_64-experimental/definition.rb +0 -34
- data/templates/gentoo-latest-x86_64-experimental/postinstall.sh +0 -214
- data/templates/openSUSE-12.1-DVD+NET-i586/autoinst_de.xml +0 -1483
- data/templates/openSUSE-12.1-DVD+NET-i586/autoinst_en.xml +0 -1483
- data/templates/openSUSE-12.1-DVD+NET-i586/definition.rb +0 -44
- data/templates/openSUSE-12.1-DVD+NET-i586/postinstall.sh +0 -43
- data/templates/openSUSE-12.1-DVD+NET-x86_64/autoinst_de.xml +0 -1727
- data/templates/openSUSE-12.1-DVD+NET-x86_64/autoinst_en.xml +0 -1727
- data/templates/openSUSE-12.1-DVD+NET-x86_64/definition.rb +0 -44
- data/templates/openSUSE-12.1-DVD+NET-x86_64/postinstall.sh +0 -43
- data/templates/openbsd50_amd64/README +0 -28
- data/templates/openbsd50_amd64/definition.rb +0 -84
- data/templates/openbsd50_amd64/postinstall.sh +0 -81
- data/templates/openbsd50_i386/.definition.rb.swp +0 -0
- data/templates/openbsd50_i386/README +0 -28
- data/templates/openbsd50_i386/definition.rb +0 -84
- data/templates/openbsd50_i386/postinstall.sh +0 -80
- data/templates/scientificlinux-6.1-i386-netboot/definition.rb +0 -16
- data/templates/scientificlinux-6.1-i386-netboot/ks.cfg +0 -53
- data/templates/scientificlinux-6.1-i386-netboot/postinstall.sh +0 -30
- data/templates/scientificlinux-6.1-x86_64-netboot/definition.rb +0 -16
- data/templates/scientificlinux-6.1-x86_64-netboot/ks.cfg +0 -53
- data/templates/scientificlinux-6.1-x86_64-netboot/postinstall.sh +0 -30
- data/templates/ubuntu-10.04.3-server-amd64/postinstall.sh +0 -90
- data/templates/ubuntu-11.04-server-amd64/postinstall.sh +0 -96
- data/templates/ubuntu-11.10-server-amd64-ishaya/definition.rb +0 -24
- data/templates/ubuntu-11.10-server-amd64-ishaya/preseed.cfg +0 -87
- data/templates/ubuntu-11.10-server-amd64-ruby192/definition.rb +0 -24
- data/templates/ubuntu-11.10-server-amd64-ruby192/postinstall.sh +0 -90
- data/templates/ubuntu-11.10-server-amd64-ruby192/preseed.cfg +0 -87
- data/templates/ubuntu-11.10-server-amd64/definition.rb +0 -35
- data/templates/ubuntu-11.10-server-amd64/postinstall.sh +0 -88
- data/templates/ubuntu-11.10-server-amd64/preseed.cfg +0 -87
- data/templates/ubuntu-11.10-server-i386/definition.rb +0 -35
- data/templates/ubuntu-11.10-server-i386/postinstall.sh +0 -88
- data/templates/ubuntu-11.10-server-i386/preseed.cfg +0 -87
- data/templates/windows-2008R1-serverstandard-amd64/Autounattend.xml +0 -146
- data/templates/windows-2008R1-serverstandard-amd64/README.md +0 -134
- data/templates/windows-2008R1-serverstandard-amd64/cygwin-setup.exe +0 -0
- data/templates/windows-2008R1-serverstandard-amd64/definition.rb +0 -114
- data/templates/windows-2008R1-serverstandard-amd64/install-cygwin-sshd.bat +0 -40
- data/templates/windows-2008R1-serverstandard-amd64/install-guest-additions.bat +0 -5
- data/templates/windows-2008R1-serverstandard-amd64/install-winrm.bat +0 -14
- data/templates/windows-2008R1-serverstandard-amd64/oracle-cert.cer +0 -0
- data/templates/windows-2008R1-serverstandard-amd64/postinstall.sh +0 -74
- data/templates/windows-2008R1-serverstandard-amd64/sudo +0 -2
- data/templates/windows-2008R1-serverstandard-amd64/winrm.rb +0 -8
- data/templates/windows-2008R2-serverstandard-amd64/Autounattend.xml +0 -147
- data/templates/windows-2008R2-serverstandard-amd64/README.md +0 -142
- data/templates/windows-2008R2-serverstandard-amd64/definition.rb +0 -44
- data/templates/windows-2008R2-serverstandard-amd64/install-cygwin-sshd.bat +0 -41
- data/templates/windows-2008R2-serverstandard-amd64/install-winrm.bat +0 -11
- data/templates/windows-2008R2-serverstandard-amd64/oracle-cert.cer +0 -0
- data/templates/windows-2008R2-serverstandard-amd64/postinstall.sh +0 -74
- data/templates/windows-7-enterprise-amd64/Autounattend.xml +0 -149
- data/templates/windows-7-enterprise-amd64/README.md +0 -52
- data/templates/windows-7-enterprise-amd64/definition.rb +0 -39
- data/templates/windows-7-enterprise-amd64/install-cygwin-sshd.bat +0 -40
- data/templates/windows-7-enterprise-amd64/install-winrm.bat +0 -14
- data/templates/windows-7-enterprise-amd64/oracle-cert.cer +0 -0
- data/templates/windows-7-enterprise-amd64/postinstall.sh +0 -74
- data/templates/windows-7-enterprise-i386/Autounattend.xml +0 -151
- data/templates/windows-7-enterprise-i386/README.md +0 -169
- data/templates/windows-7-enterprise-i386/definition.rb +0 -40
- data/templates/windows-7-enterprise-i386/install-cygwin-sshd.bat +0 -40
- data/templates/windows-7-enterprise-i386/install-winrm.bat +0 -14
- data/templates/windows-7-enterprise-i386/oracle-cert.cer +0 -0
- data/templates/windows-7-enterprise-i386/postinstall.sh +0 -74
- data/templates/windows-7-premium-amd64/Autounattend.xml +0 -152
- data/templates/windows-7-premium-amd64/README.md +0 -171
- data/templates/windows-7-premium-amd64/definition.rb +0 -38
- data/templates/windows-7-premium-amd64/install-chefclient.bat +0 -44
- data/templates/windows-7-premium-amd64/install-winrm.bat +0 -11
- data/templates/windows-7-premium-amd64/oracle-cert.cer +0 -0
- data/templates/windows-7-premium-amd64/postinstall.sh +0 -124
- data/templates/windows-7-premium-amd64/winrm.rb +0 -8
- data/templates/windows-7-professional-amd64/Autounattend.xml +0 -152
- data/templates/windows-7-professional-amd64/README.md +0 -171
- data/templates/windows-7-professional-amd64/definition.rb +0 -41
- data/templates/windows-7-professional-amd64/install-cygwin-sshd.bat +0 -40
- data/templates/windows-7-professional-amd64/install-winrm.bat +0 -14
- data/templates/windows-7-professional-amd64/oracle-cert.cer +0 -0
- data/templates/windows-7-professional-amd64/postinstall.sh +0 -74
- data/templates/windows-7-ultimate-amd64/Autounattend.xml +0 -152
- data/templates/windows-7-ultimate-amd64/README.md +0 -89
- data/templates/windows-7-ultimate-amd64/definition.rb +0 -41
- data/templates/windows-7-ultimate-amd64/install-cygwin-sshd.bat +0 -40
- data/templates/windows-7-ultimate-amd64/install-winrm.bat +0 -14
- data/templates/windows-7-ultimate-amd64/oracle-cert.cer +0 -0
- data/templates/windows-7-ultimate-amd64/postinstall.sh +0 -74
- data/templates/windows-7sp1-ultimate-amd64/Autounattend.xml +0 -152
- data/templates/windows-7sp1-ultimate-amd64/README.md +0 -89
- data/templates/windows-7sp1-ultimate-amd64/definition.rb +0 -42
- data/templates/windows-7sp1-ultimate-amd64/install-cygwin-sshd.bat +0 -40
- data/templates/windows-7sp1-ultimate-amd64/install-winrm.bat +0 -14
- data/templates/windows-7sp1-ultimate-amd64/oracle-cert.cer +0 -0
- data/templates/windows-7sp1-ultimate-amd64/postinstall.sh +0 -74
- data/templates/windows-8-preview-dev-amd64/Autounattend.xml +0 -140
- data/templates/windows-8-preview-dev-amd64/README.md +0 -134
- data/templates/windows-8-preview-dev-amd64/cygwin-setup.exe +0 -0
- data/templates/windows-8-preview-dev-amd64/definition.rb +0 -114
- data/templates/windows-8-preview-dev-amd64/install-cygwin-sshd.bat +0 -38
- data/templates/windows-8-preview-dev-amd64/install-winrm.bat +0 -11
- data/templates/windows-8-preview-dev-amd64/oracle-cert.cer +0 -0
- data/templates/windows-8-preview-dev-amd64/postinstall.sh +0 -122
- data/templates/windows-8-preview-dev-amd64/winrm.rb +0 -8
- data/trials/docu-vbox.txt +0 -83
- data/trials/f.rb +0 -29
- data/trials/t.rb +0 -15
@@ -0,0 +1,25 @@
|
|
1
|
+
##Note: this is currently not used anymore, it seems no one is using it
|
2
|
+
|
3
|
+
module Veewee
|
4
|
+
class Transaction
|
5
|
+
|
6
|
+
def transaction(name,params, &block)
|
7
|
+
end
|
8
|
+
|
9
|
+
def transaction2(name,options= { :checksum => "nochecksum"}, &block)
|
10
|
+
if snapshot_exists(@vmname,name+"-"+options[:checksum])
|
11
|
+
load_snapshot_vmachine(@vmname,name+"-"+options[:checksum])
|
12
|
+
else
|
13
|
+
if snapshot_version_exists(@vmname,name)
|
14
|
+
rollback_snapshot(@vmname,name)
|
15
|
+
#rollback to snapshot prior to this one
|
16
|
+
end
|
17
|
+
yield
|
18
|
+
create_snapshot_vmachine(@vmname,name+"-"+options[:checksum])
|
19
|
+
end
|
20
|
+
#end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
#require 'net/ssh/multi'
|
2
|
+
|
3
|
+
module Veewee
|
4
|
+
module Builder
|
5
|
+
module Core
|
6
|
+
module BuilderCommand
|
7
|
+
|
8
|
+
|
9
|
+
def ssh_tunnel_start(forwardings)
|
10
|
+
#ssh_options={ :keys => [ vm.private_key ], :paranoid => false, :keys_only => true}
|
11
|
+
|
12
|
+
ssh_options={ :paranoid => false}
|
13
|
+
host=@connection.uri.host
|
14
|
+
user=@connection.uri.user
|
15
|
+
|
16
|
+
env.ui.info "Enabling tunneling"
|
17
|
+
@forward_threads=Array.new
|
18
|
+
@forward_threads<< Thread.new {
|
19
|
+
Net::SSH.start(host, user, ssh_options) do |ssh_session|
|
20
|
+
forwardings.each do |forwarding|
|
21
|
+
begin
|
22
|
+
env.ui.info "Forwarding remote port #{forwarding[:remote_port]} from #{box_name} to local port #{forwarding[:local_port]}"
|
23
|
+
env.ui.info host
|
24
|
+
env.ui.info user
|
25
|
+
env.ui.info ""
|
26
|
+
ssh_session.forward.local(forwarding[:local_port], "127.0.0.1",forwarding[:remote_port])
|
27
|
+
rescue Errno::EACCES
|
28
|
+
env.ui.info " Error - Access denied to forward remote port #{forwarding[:remote_port]} from #{name} to local port #{forwarding[:local_port]}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
ssh_session.loop {true}
|
32
|
+
end
|
33
|
+
}
|
34
|
+
env.ui.info @forward_threads.first.status
|
35
|
+
@forward_threads.first.run
|
36
|
+
env.ui.info @forward_threads.first.status
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
def ssh_tunnel_stop
|
41
|
+
Thread.kill(@forward_threads.first)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
require 'veewee/builder/core/box'
|
2
|
+
require 'veewee/builder/core/box/vnc'
|
3
|
+
|
4
|
+
module Veewee
|
5
|
+
module Builder
|
6
|
+
module Kvm
|
7
|
+
class Box < Veewee::Builder::Core::Box
|
8
|
+
|
9
|
+
include ::Veewee::Builder::Core
|
10
|
+
include ::Veewee::Builder::Kvm
|
11
|
+
|
12
|
+
include ::Veewee::Builder::Core::BoxCommand
|
13
|
+
|
14
|
+
attr_accessor :connection
|
15
|
+
|
16
|
+
def initialize(name,env)
|
17
|
+
|
18
|
+
require 'libvirt'
|
19
|
+
require 'fog'
|
20
|
+
|
21
|
+
super(name,env)
|
22
|
+
|
23
|
+
@connection=::Fog::Compute.new(:provider => "Libvirt",
|
24
|
+
:libvirt_uri => "qemu:///system",
|
25
|
+
:libvirt_ip_command => "arp -an |grep $mac|cut -d '(' -f 2 | cut -d ')' -f 1")
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
# Type on the console
|
30
|
+
def console_type(sequence,type_options={})
|
31
|
+
vnc_port=@connection.servers.all(:name => name).first.vnc_port
|
32
|
+
display_port=vnc_port.to_i - 5900
|
33
|
+
env.ui.confirm "Sending keystrokes to VNC port :#{display_port} - TCP port: #{vnc_port}"
|
34
|
+
vnc_type(sequence,"localhost",display_port)
|
35
|
+
end
|
36
|
+
|
37
|
+
|
38
|
+
# Create a new vm
|
39
|
+
def create(definition)
|
40
|
+
# Assemble the Virtualmachine and set all the memory and other stuff"
|
41
|
+
|
42
|
+
#memory_size,cpu_count, volume_size
|
43
|
+
|
44
|
+
s=@connection.servers.create(
|
45
|
+
:name => name,
|
46
|
+
:memory_size => definition.memory_size.to_i*1024,
|
47
|
+
:cpus => definition.cpu_count.to_i,
|
48
|
+
:volume_capacity => "#{definition.disk_size}M",
|
49
|
+
:network_interface_type => "nat",
|
50
|
+
:iso_file => definition.iso_file,
|
51
|
+
:arch => definition.os_type_id.end_with?("_64") ? "x86_64" : "i686",
|
52
|
+
:iso_dir => env.config.veewee.iso_dir
|
53
|
+
)
|
54
|
+
end
|
55
|
+
|
56
|
+
# Create the volume of a new vm
|
57
|
+
def create_volume
|
58
|
+
# Creating the volume is part of the server creation
|
59
|
+
end
|
60
|
+
|
61
|
+
# Destroy a vm
|
62
|
+
def destroy
|
63
|
+
if @connection.servers.all(:name => name).nil?
|
64
|
+
env.ui.error "Error:: You tried to destroy a non-existing box '#{name}'"
|
65
|
+
exit -1
|
66
|
+
end
|
67
|
+
|
68
|
+
halt if running?
|
69
|
+
destroy_vm if exists_vm?
|
70
|
+
|
71
|
+
vol_exists=!@connection.volumes.all(:name => "#{name}.img").nil?
|
72
|
+
env.logger.info "Volume exists? : #{vol_exists}"
|
73
|
+
destroy_volume if exists_volume?
|
74
|
+
end
|
75
|
+
|
76
|
+
def destroy_vm
|
77
|
+
matched_servers=@connection.servers.all(:name => name)
|
78
|
+
matched_servers.first.destroy() unless matched_servers.nil?
|
79
|
+
end
|
80
|
+
|
81
|
+
def destroy_volume
|
82
|
+
vol=@connection.volumes.all(:name => "#{name}.img").first
|
83
|
+
vol.destroy
|
84
|
+
end
|
85
|
+
|
86
|
+
def start(mode)
|
87
|
+
matched_servers=@connection.servers.all(:name => name)
|
88
|
+
matched_servers.first.start unless matched_servers.nil?
|
89
|
+
end
|
90
|
+
|
91
|
+
def halt
|
92
|
+
matched_servers=@connection.servers.all(:name => name)
|
93
|
+
matched_servers.first.halt unless matched_servers.nil?
|
94
|
+
end
|
95
|
+
|
96
|
+
def stop
|
97
|
+
matched_servers=@connection.servers.all(:name => name)
|
98
|
+
matched_servers.first.stop unless matched_servers.nil?
|
99
|
+
end
|
100
|
+
|
101
|
+
def ip_address
|
102
|
+
ip=@connection.servers.all(:name => "#{name}").first.addresses[:public]
|
103
|
+
return ip.first unless ip.nil?
|
104
|
+
return ip
|
105
|
+
end
|
106
|
+
|
107
|
+
def running?
|
108
|
+
if exists_vm?
|
109
|
+
@connection.servers.all(:name => name).first.ready?
|
110
|
+
else
|
111
|
+
false
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def exists?
|
116
|
+
exists_volume? || exists_vm?
|
117
|
+
end
|
118
|
+
|
119
|
+
def exists_volume?
|
120
|
+
!@connection.volumes.all(:name => "#{name}.img").nil?
|
121
|
+
end
|
122
|
+
|
123
|
+
def exists_vm?
|
124
|
+
!@connection.servers.all(:name => name).nil?
|
125
|
+
end
|
126
|
+
|
127
|
+
end # End Class
|
128
|
+
end # End Module
|
129
|
+
end # End Module
|
130
|
+
end # End Module
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'veewee/builder/core/builder'
|
2
|
+
|
3
|
+
module Veewee
|
4
|
+
module Builder
|
5
|
+
module Kvm
|
6
|
+
class Builder < Veewee::Builder::Core::Builder
|
7
|
+
|
8
|
+
# Translate the definition ssh options to ssh options that can be passed to Net::Ssh calls
|
9
|
+
# We expect plain ssh for a connection
|
10
|
+
|
11
|
+
def check_requirements
|
12
|
+
["ruby-libvirt","fog"].each do |gemname|
|
13
|
+
unless gem_available?(gemname)
|
14
|
+
raise Veewee::Error,"The kvm Builder requires the gem '#{gemname}' to be installed\n" + "gem install #{gemname}"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def ssh_options(definition)
|
20
|
+
ssh_options={
|
21
|
+
:user => definition.ssh_user,
|
22
|
+
:port => 22,
|
23
|
+
:password => definition.ssh_password,
|
24
|
+
:timeout => definition.ssh_login_timeout.to_i
|
25
|
+
}
|
26
|
+
return ssh_options
|
27
|
+
end
|
28
|
+
|
29
|
+
def build(definition_name,box_name,options)
|
30
|
+
|
31
|
+
super(definition_name,box_name,options)
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end #End Class
|
36
|
+
end # End Module
|
37
|
+
end # End Module
|
38
|
+
end # End Module
|
@@ -0,0 +1,121 @@
|
|
1
|
+
require 'veewee/builder/core/box'
|
2
|
+
|
3
|
+
require 'veewee/builder/virtualbox/helper/create'
|
4
|
+
require 'veewee/builder/virtualbox/helper/console_type'
|
5
|
+
require 'veewee/builder/virtualbox/helper/destroy'
|
6
|
+
|
7
|
+
module Veewee
|
8
|
+
module Builder
|
9
|
+
module Virtualbox
|
10
|
+
class Box < Veewee::Builder::Core::Box
|
11
|
+
|
12
|
+
include ::Veewee::Builder::Virtualbox::BoxHelper
|
13
|
+
|
14
|
+
def initialize(name,env)
|
15
|
+
|
16
|
+
require 'virtualbox'
|
17
|
+
@vboxcmd=determine_vboxcmd
|
18
|
+
super(name,env)
|
19
|
+
|
20
|
+
end
|
21
|
+
|
22
|
+
def determine_vboxcmd
|
23
|
+
return "VBoxManage"
|
24
|
+
end
|
25
|
+
|
26
|
+
def exists?
|
27
|
+
vm=VirtualBox::VM.find(name)
|
28
|
+
env.logger.info ("Vm exists? #{!vm.nil?}")
|
29
|
+
return !vm.nil?
|
30
|
+
end
|
31
|
+
|
32
|
+
def running?
|
33
|
+
return
|
34
|
+
end
|
35
|
+
|
36
|
+
def create(definition)
|
37
|
+
|
38
|
+
guessed_port=guess_free_port(definition.ssh_host_port.to_i,definition.ssh_host_port.to_i+40).to_s
|
39
|
+
if guessed_port.to_s!=definition.ssh_host_port
|
40
|
+
env.ui.warn "Changing ssh port from #{definition.ssh_host_port} to #{guessed_port}"
|
41
|
+
definition.ssh_host_port=guessed_port.to_s
|
42
|
+
end
|
43
|
+
|
44
|
+
#Suppress those annoying virtualbox messages
|
45
|
+
suppress_messages
|
46
|
+
|
47
|
+
create_vm(definition)
|
48
|
+
|
49
|
+
# Adds a folder to the vm for testing purposes
|
50
|
+
add_shared_folder(definition)
|
51
|
+
|
52
|
+
#Create a disk with the same name as the box_name
|
53
|
+
create_disk(definition)
|
54
|
+
|
55
|
+
add_ide_controller(definition)
|
56
|
+
attach_isofile(definition)
|
57
|
+
|
58
|
+
add_sata_controller(definition)
|
59
|
+
attach_disk(definition)
|
60
|
+
|
61
|
+
create_floppy(definition)
|
62
|
+
add_floppy_controller(definition)
|
63
|
+
attach_floppy(definition)
|
64
|
+
|
65
|
+
add_ssh_nat_mapping(definition)
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
def start(gui_enabled=true)
|
70
|
+
# Once assembled we start the machine
|
71
|
+
env.logger.info "Started the VM with GUI Enabled? #{gui_enabled}"
|
72
|
+
if (gui_enabled)
|
73
|
+
raw.start("gui")
|
74
|
+
else
|
75
|
+
raw.start("vrdp")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def stop
|
80
|
+
# If the vm is not powered off, perform a shutdown
|
81
|
+
if (!raw.nil? && !(raw.powered_off?))
|
82
|
+
env.ui.info "Shutting down vm #{name}"
|
83
|
+
#We force it here, maybe vm.shutdown is cleaner
|
84
|
+
begin
|
85
|
+
raw.stop
|
86
|
+
sleep 3
|
87
|
+
rescue VirtualBox::Exceptions::InvalidVMStateException
|
88
|
+
env.ui.error "There was problem sending the stop command because the machine is in an Invalid state"
|
89
|
+
env.ui.error "Please verify leftovers from a previous build in your vm folder"
|
90
|
+
exit -1
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
def halt
|
97
|
+
if (!raw.nil? && !(raw.powered_off?))
|
98
|
+
env.ui.info "Halting vm #{name}"
|
99
|
+
#We force it here, maybe vm.shutdown is cleaner
|
100
|
+
# VBoxManage controlvm 'lucid64' poweroff
|
101
|
+
begin
|
102
|
+
raw.halt
|
103
|
+
rescue VirtualBox::Exceptions::InvalidVMStateException
|
104
|
+
env.ui.error "There was problem sending the stop command because the machine is in an Invalid state"
|
105
|
+
env.ui.error "Please verify leftovers from a previous build in your vm folder"
|
106
|
+
exit -1
|
107
|
+
end
|
108
|
+
sleep 3
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
# Get the IP address of the box
|
113
|
+
def ip_address
|
114
|
+
return "127.0.0.1"
|
115
|
+
end
|
116
|
+
|
117
|
+
|
118
|
+
end # End Class
|
119
|
+
end # End Module
|
120
|
+
end # End Module
|
121
|
+
end # End Module
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'veewee/builder/core/builder'
|
2
|
+
require 'veewee/builder/virtualbox/helper/export_vagrant'
|
3
|
+
require 'veewee/builder/virtualbox/helper/validate_vagrant'
|
4
|
+
|
5
|
+
module Veewee
|
6
|
+
module Builder
|
7
|
+
module Virtualbox
|
8
|
+
class Builder < Veewee::Builder::Core::Builder
|
9
|
+
|
10
|
+
include ::Veewee::Builder::Virtualbox::BuilderHelper
|
11
|
+
|
12
|
+
def check_requirements
|
13
|
+
unless gem_available?("virtualbox")
|
14
|
+
raise Veewee::Error,"The Virtualbox Builder requires the gem 'virtualbox' to be installed"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def ssh_options(definition)
|
19
|
+
|
20
|
+
ssh_options={
|
21
|
+
:user => definition.ssh_user,
|
22
|
+
:port => definition.ssh_host_port,
|
23
|
+
:password => definition.ssh_password,
|
24
|
+
:timeout => definition.ssh_login_timeout.to_i
|
25
|
+
}
|
26
|
+
return ssh_options
|
27
|
+
|
28
|
+
end
|
29
|
+
|
30
|
+
def build_info
|
31
|
+
info=super
|
32
|
+
info << { :filename => ".vbox_version",
|
33
|
+
:content => "#{VirtualBox::Global.global.lib.virtualbox.version.split('_')[0]}" }
|
34
|
+
end
|
35
|
+
|
36
|
+
def build(definition_name,box_name,options)
|
37
|
+
|
38
|
+
super(definition_name,box_name,options)
|
39
|
+
|
40
|
+
# w00t, we have succesfully reach this point
|
41
|
+
# so we let user know , the vm is ready to be exported
|
42
|
+
|
43
|
+
end
|
44
|
+
|
45
|
+
end #End Class
|
46
|
+
end # End Module
|
47
|
+
end # End Module
|
48
|
+
end # End Module
|
@@ -0,0 +1,105 @@
|
|
1
|
+
##Note: this is currently not used anymore, it seems no one is using it
|
2
|
+
|
3
|
+
require 'veewee/util/shell'
|
4
|
+
require 'veewee/util/tcp'
|
5
|
+
|
6
|
+
module Veewee
|
7
|
+
module Builder
|
8
|
+
module Virtualbox
|
9
|
+
|
10
|
+
def remove_snapshot_vmachine(vmname,snapname)
|
11
|
+
Veewee::Shell.execute("#{@vboxcmd} snapshot '#{vmname}' delete '#{snapname}'")
|
12
|
+
end
|
13
|
+
|
14
|
+
def create_snapshot_vmachine(vmname,snapname)
|
15
|
+
Veewee::Shell.execute("#{@vboxcmd} snapshot '#{vmname}' take '#{snapname}'")
|
16
|
+
end
|
17
|
+
|
18
|
+
def load_snapshot_vmachine(vmname,snapname)
|
19
|
+
#if it running , shutdown first
|
20
|
+
if (state_vmachine(vmname)=="running")
|
21
|
+
stop_vmachine(vmname)
|
22
|
+
end
|
23
|
+
|
24
|
+
Veewee::Shell.execute("#{@vboxcmd} snapshot '#{vmname}' restore '#{snapname}'")
|
25
|
+
#sometimes it takes some time to shutdown
|
26
|
+
sleep 2
|
27
|
+
Veewee::Shell.execute("#{@vboxcmd} startvm '#{vmname}'")
|
28
|
+
end
|
29
|
+
|
30
|
+
def snapshot_exists(vmname,snapname)
|
31
|
+
list_snapshots(vmname).each { |name|
|
32
|
+
if (name==snapname) then
|
33
|
+
return true
|
34
|
+
end
|
35
|
+
}
|
36
|
+
return false
|
37
|
+
end
|
38
|
+
|
39
|
+
def snapshot_version_exists(vmname,snapname)
|
40
|
+
list_snapshots(vmname).each { |name|
|
41
|
+
if name.match(/^#{snapname}-/) then
|
42
|
+
return true
|
43
|
+
end
|
44
|
+
}
|
45
|
+
return false
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.rollback_snapshot(vmname,snapname)
|
49
|
+
delete_flag=false
|
50
|
+
@vboxcmd=Veewee::Environment.determine_vboxcmd
|
51
|
+
|
52
|
+
savestate_recover=false
|
53
|
+
if (state_vmachine(vmname)=="running")
|
54
|
+
Veewee::Shell.execute("#{@vboxcmd} controlvm '#{vmname}' savestate")
|
55
|
+
savestate_recover=true
|
56
|
+
end
|
57
|
+
|
58
|
+
list_snapshots(vmname).each { |name|
|
59
|
+
if name.match(/^#{snapname}-/) then
|
60
|
+
delete_flag=true
|
61
|
+
end
|
62
|
+
if (delete_flag) then
|
63
|
+
remove_snapshot_vmachine(vmname,name)
|
64
|
+
sleep 1
|
65
|
+
end
|
66
|
+
}
|
67
|
+
|
68
|
+
|
69
|
+
sleep 2
|
70
|
+
|
71
|
+
Veewee::Shell.execute("#{@vboxcmd} startvm '#{vmname}'")
|
72
|
+
|
73
|
+
if (savestate_recover)
|
74
|
+
#Recovering from savestate nukes the network! This trick seem to work
|
75
|
+
#Also within the vm /etc/init.d/networking restart , but that is OS specific
|
76
|
+
#http://www.virtualbox.org/ticket/5666
|
77
|
+
#http://www.virtualbox.org/ticket/5654
|
78
|
+
#This is supposed to be fixed: http://www.virtualbox.org/changeset/25205 but alas
|
79
|
+
Veewee::Shell.execute("#{@vboxcmd} controlvm '#{vmname}' nic1 nat")
|
80
|
+
Veewee::Shell.execute("#{@vboxcmd} controlvm '#{vmname}' setlinkstate1 off")
|
81
|
+
Veewee::Shell.execute("#{@vboxcmd} controlvm '#{vmname}' setlinkstate1 on")
|
82
|
+
sleep 2
|
83
|
+
|
84
|
+
#hmmm, virtualbox => when recovering from a restore , it looses the nat settings!!! So we need to do this again!!
|
85
|
+
#thebox.ssh_enable_vmachine({:hostport => host_port , :guestport => 22} )
|
86
|
+
#http://www.virtualbox.org/changeset/25402
|
87
|
+
#[25402]: NAT: re-establish port-forwarding after savestate / restore state
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
|
94
|
+
def self.list_snapshots(vmname)
|
95
|
+
@vboxcmd=Veewee::Environment.determine_vboxcmd
|
96
|
+
|
97
|
+
snapshotresult=Veewee::Shell.execute("#{@vboxcmd} showvminfo --machinereadable '#{vmname}' |grep ^SnapshotName| cut -d '=' -f 2").stdout
|
98
|
+
snapshotlist=snapshotresult.gsub(/\"/,'').split(/\n/)
|
99
|
+
return snapshotlist
|
100
|
+
end
|
101
|
+
|
102
|
+
end #Module
|
103
|
+
end #Module
|
104
|
+
end #Module
|
105
|
+
|