vagrant-unbundled 1.8.1.2 → 1.8.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -13
- data/.travis.yml +3 -0
- data/CHANGELOG.md +167 -4
- data/LICENSE +1 -1
- data/README.md +7 -9
- data/RELEASE.md +28 -0
- data/bin/vagrant +1 -1
- data/contrib/bash/completion.sh +6 -1
- data/contrib/sudoers/linux-fedora +1 -1
- data/keys/README.md +1 -1
- data/lib/vagrant/action/builtin/box_add.rb +7 -3
- data/lib/vagrant/action/general/package.rb +47 -13
- data/lib/vagrant/box.rb +1 -1
- data/lib/vagrant/box_collection.rb +3 -4
- data/lib/vagrant/bundler.rb +29 -11
- data/lib/vagrant/machine.rb +14 -5
- data/lib/vagrant/ui.rb +1 -1
- data/lib/vagrant/util/is_port_open.rb +1 -1
- data/lib/vagrant/util/platform.rb +67 -42
- data/plugins/commands/box/command/remove.rb +1 -1
- data/plugins/commands/box/command/update.rb +10 -0
- data/plugins/commands/destroy/command.rb +1 -1
- data/plugins/commands/halt/command.rb +1 -1
- data/plugins/commands/init/command.rb +8 -2
- data/plugins/commands/login/client.rb +19 -1
- data/plugins/commands/package/command.rb +1 -1
- data/plugins/commands/plugin/command/mixin_install_opts.rb +1 -1
- data/plugins/commands/plugin/gem_helper.rb +1 -1
- data/plugins/commands/port/command.rb +1 -1
- data/plugins/commands/rdp/command.rb +1 -1
- data/plugins/commands/resume/command.rb +15 -1
- data/plugins/commands/snapshot/command/pop.rb +16 -1
- data/plugins/commands/snapshot/command/push_shared.rb +7 -9
- data/plugins/commands/snapshot/command/restore.rb +14 -1
- data/plugins/commands/ssh/command.rb +2 -1
- data/plugins/commands/ssh_config/command.rb +1 -1
- data/plugins/commands/status/command.rb +1 -1
- data/plugins/commands/suspend/command.rb +1 -1
- data/plugins/commands/up/command.rb +4 -4
- data/plugins/communicators/ssh/communicator.rb +2 -2
- data/plugins/communicators/winrm/communicator.rb +11 -11
- data/plugins/communicators/winrm/config.rb +7 -1
- data/plugins/communicators/winrm/shell.rb +41 -41
- data/plugins/guests/amazon/cap/flavor.rb +14 -0
- data/plugins/guests/amazon/guest.rb +9 -0
- data/plugins/guests/amazon/plugin.rb +20 -0
- data/plugins/guests/arch/cap/change_host_name.rb +15 -6
- data/plugins/guests/arch/cap/configure_networks.rb +33 -14
- data/plugins/guests/arch/plugin.rb +1 -1
- data/plugins/guests/atomic/cap/change_host_name.rb +16 -1
- data/plugins/guests/atomic/plugin.rb +2 -2
- data/plugins/guests/coreos/cap/change_host_name.rb +10 -4
- data/plugins/guests/coreos/cap/configure_networks.rb +49 -37
- data/plugins/guests/coreos/guest.rb +2 -0
- data/plugins/guests/coreos/plugin.rb +1 -1
- data/plugins/guests/darwin/cap/change_host_name.rb +25 -7
- data/plugins/guests/darwin/cap/choose_addressable_ip_addr.rb +7 -7
- data/plugins/guests/darwin/cap/insert_public_key.rb +19 -7
- data/plugins/guests/darwin/guest.rb +1 -1
- data/plugins/guests/darwin/plugin.rb +1 -1
- data/plugins/guests/debian/cap/change_host_name.rb +37 -84
- data/plugins/guests/debian/cap/configure_networks.rb +61 -46
- data/plugins/guests/debian/cap/nfs_client.rb +5 -4
- data/plugins/guests/debian/cap/rsync.rb +6 -3
- data/plugins/guests/debian/cap/smb.rb +6 -7
- data/plugins/guests/debian/guest.rb +2 -0
- data/plugins/guests/debian/plugin.rb +1 -1
- data/plugins/guests/fedora/cap/change_host_name.rb +18 -64
- data/plugins/guests/fedora/cap/configure_networks.rb +10 -9
- data/plugins/guests/fedora/plugin.rb +1 -1
- data/plugins/guests/freebsd/cap/change_host_name.rb +21 -3
- data/plugins/guests/freebsd/cap/configure_networks.rb +45 -30
- data/plugins/guests/freebsd/cap/halt.rb +1 -1
- data/plugins/guests/freebsd/cap/insert_public_key.rb +21 -8
- data/plugins/guests/freebsd/cap/mount_nfs_folder.rb +10 -7
- data/plugins/guests/freebsd/cap/rsync.rb +1 -11
- data/plugins/guests/freebsd/plugin.rb +1 -1
- data/plugins/guests/funtoo/cap/configure_networks.rb +10 -6
- data/plugins/guests/gentoo/cap/configure_networks.rb +9 -8
- data/plugins/guests/linux/cap/choose_addressable_ip_addr.rb +6 -6
- data/plugins/guests/linux/cap/insert_public_key.rb +18 -8
- data/plugins/guests/linux/cap/mount_nfs.rb +16 -12
- data/plugins/guests/linux/cap/mount_smb_shared_folder.rb +2 -2
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +1 -1
- data/plugins/guests/linux/guest.rb +0 -2
- data/plugins/guests/linux/plugin.rb +1 -1
- data/plugins/guests/mint/guest.rb +0 -2
- data/plugins/guests/mint/plugin.rb +1 -1
- data/plugins/guests/netbsd/cap/configure_networks.rb +8 -8
- data/plugins/guests/nixos/cap/change_host_name.rb +11 -8
- data/plugins/guests/nixos/cap/configure_networks.rb +12 -9
- data/plugins/guests/omnios/cap/change_host_name.rb +17 -5
- data/plugins/guests/omnios/cap/mount_nfs_folder.rb +10 -4
- data/plugins/guests/omnios/cap/rsync.rb +11 -0
- data/plugins/guests/omnios/guest.rb +0 -2
- data/plugins/guests/omnios/plugin.rb +6 -1
- data/plugins/guests/openbsd/cap/configure_networks.rb +8 -6
- data/plugins/guests/photon/cap/change_host_name.rb +17 -4
- data/plugins/guests/photon/cap/configure_networks.rb +14 -26
- data/plugins/guests/photon/guest.rb +1 -1
- data/plugins/guests/photon/plugin.rb +12 -12
- data/plugins/guests/pld/cap/change_host_name.rb +21 -9
- data/plugins/guests/pld/guest.rb +0 -2
- data/plugins/guests/pld/plugin.rb +1 -1
- data/plugins/guests/redhat/cap/change_host_name.rb +30 -96
- data/plugins/guests/redhat/cap/configure_networks.rb +44 -50
- data/plugins/guests/redhat/cap/flavor.rb +3 -4
- data/plugins/guests/redhat/cap/nfs_client.rb +13 -25
- data/plugins/guests/redhat/cap/rsync.rb +6 -6
- data/plugins/guests/redhat/guest.rb +0 -2
- data/plugins/guests/redhat/plugin.rb +1 -10
- data/plugins/guests/slackware/cap/change_host_name.rb +19 -8
- data/plugins/guests/slackware/cap/configure_networks.rb +30 -14
- data/plugins/guests/slackware/guest.rb +0 -2
- data/plugins/guests/slackware/plugin.rb +1 -1
- data/plugins/guests/smartos/config.rb +3 -15
- data/plugins/guests/suse/cap/change_host_name.rb +15 -7
- data/plugins/guests/suse/cap/configure_networks.rb +31 -37
- data/plugins/guests/suse/cap/nfs_client.rb +5 -6
- data/plugins/guests/suse/cap/rsync.rb +1 -3
- data/plugins/guests/suse/guest.rb +0 -2
- data/plugins/guests/suse/plugin.rb +1 -1
- data/plugins/guests/tinycore/cap/mount_nfs.rb +46 -0
- data/plugins/guests/tinycore/plugin.rb +5 -0
- data/plugins/guests/trisquel/guest.rb +9 -0
- data/plugins/guests/trisquel/plugin.rb +15 -0
- data/plugins/guests/ubuntu/cap/change_host_name.rb +42 -41
- data/plugins/guests/ubuntu/guest.rb +0 -2
- data/plugins/guests/ubuntu/plugin.rb +1 -3
- data/plugins/guests/windows/guest_network.rb +1 -1
- data/plugins/hosts/arch/cap/nfs.rb +3 -19
- data/plugins/hosts/darwin/cap/provider_install_virtualbox.rb +4 -5
- data/plugins/hosts/darwin/cap/rdp.rb +34 -6
- data/plugins/hosts/gentoo/cap/nfs.rb +1 -1
- data/plugins/hosts/windows/cap/provider_install_virtualbox.rb +4 -5
- data/plugins/hosts/windows/cap/ps.rb +2 -2
- data/plugins/hosts/windows/cap/rdp.rb +8 -17
- data/plugins/kernel_v2/config/ssh_connect.rb +6 -0
- data/plugins/kernel_v2/config/vm.rb +3 -1
- data/plugins/providers/docker/action.rb +3 -3
- data/plugins/providers/docker/action/create.rb +1 -1
- data/plugins/providers/docker/command/exec.rb +104 -0
- data/plugins/providers/docker/config.rb +9 -1
- data/plugins/providers/docker/errors.rb +4 -0
- data/plugins/providers/docker/plugin.rb +6 -0
- data/plugins/providers/docker/provider.rb +1 -2
- data/plugins/providers/hyperv/action.rb +56 -1
- data/plugins/providers/hyperv/action/import.rb +13 -5
- data/plugins/providers/hyperv/action/snapshot_delete.rb +27 -0
- data/plugins/providers/hyperv/action/snapshot_restore.rb +23 -0
- data/plugins/providers/hyperv/action/snapshot_save.rb +27 -0
- data/plugins/providers/hyperv/cap/snapshot_list.rb +11 -0
- data/plugins/providers/hyperv/config.rb +5 -2
- data/plugins/providers/hyperv/driver.rb +18 -1
- data/plugins/providers/hyperv/plugin.rb +5 -0
- data/plugins/providers/hyperv/scripts/clone_vhd.ps1 +9 -0
- data/plugins/providers/hyperv/scripts/create_snapshot.ps1 +8 -0
- data/plugins/providers/hyperv/scripts/delete_snapshot.ps1 +8 -0
- data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +8 -2
- data/plugins/providers/hyperv/scripts/import_vm.ps1 +5 -1
- data/plugins/providers/hyperv/scripts/list_snapshots.ps1 +12 -0
- data/plugins/providers/hyperv/scripts/restore_snapshot.ps1 +8 -0
- data/plugins/providers/virtualbox/action.rb +9 -4
- data/plugins/providers/virtualbox/action/import_master.rb +81 -75
- data/plugins/providers/virtualbox/action/package.rb +1 -29
- data/plugins/providers/virtualbox/action/package_setup_files.rb +51 -0
- data/plugins/providers/virtualbox/action/package_setup_folders.rb +38 -0
- data/plugins/providers/virtualbox/action/prepare_nfs_settings.rb +23 -1
- data/plugins/providers/virtualbox/action/setup_package_files.rb +9 -43
- data/plugins/providers/virtualbox/driver/version_4_1.rb +104 -6
- data/plugins/providers/virtualbox/driver/version_4_2.rb +6 -5
- data/plugins/providers/virtualbox/driver/version_4_3.rb +6 -5
- data/plugins/providers/virtualbox/driver/version_5_0.rb +6 -5
- data/plugins/provisioners/ansible/cap/guest/arch/ansible_install.rb +8 -3
- data/plugins/provisioners/ansible/cap/guest/debian/ansible_install.rb +26 -4
- data/plugins/provisioners/ansible/cap/guest/facts.rb +24 -0
- data/plugins/provisioners/ansible/cap/guest/fedora/ansible_install.rb +16 -6
- data/plugins/provisioners/ansible/cap/guest/freebsd/ansible_install.rb +7 -2
- data/plugins/provisioners/ansible/cap/guest/pip/pip.rb +28 -0
- data/plugins/provisioners/ansible/cap/guest/posix/ansible_installed.rb +1 -1
- data/plugins/provisioners/ansible/cap/guest/redhat/ansible_install.rb +24 -7
- data/plugins/provisioners/ansible/cap/guest/suse/ansible_install.rb +6 -2
- data/plugins/provisioners/ansible/cap/guest/ubuntu/ansible_install.rb +17 -6
- data/plugins/provisioners/ansible/config/base.rb +15 -23
- data/plugins/provisioners/ansible/config/guest.rb +9 -22
- data/plugins/provisioners/ansible/config/host.rb +9 -19
- data/plugins/provisioners/ansible/errors.rb +4 -0
- data/plugins/provisioners/ansible/helpers.rb +4 -24
- data/plugins/provisioners/ansible/provisioner/base.rb +58 -10
- data/plugins/provisioners/ansible/provisioner/guest.rb +55 -22
- data/plugins/provisioners/ansible/provisioner/host.rb +50 -9
- data/plugins/provisioners/chef/cap/linux/chef_installed.rb +2 -2
- data/plugins/provisioners/chef/cap/omnios/chef_installed.rb +3 -3
- data/plugins/provisioners/chef/cap/redhat/chef_install.rb +7 -11
- data/plugins/provisioners/chef/cap/suse/chef_install.rb +27 -0
- data/plugins/provisioners/chef/cap/windows/chef_installed.rb +1 -1
- data/plugins/provisioners/chef/command_builder.rb +1 -0
- data/plugins/provisioners/chef/config/base.rb +5 -6
- data/plugins/provisioners/chef/config/chef_solo.rb +6 -0
- data/plugins/provisioners/chef/installer.rb +2 -2
- data/plugins/provisioners/chef/omnibus.rb +1 -1
- data/plugins/provisioners/chef/plugin.rb +5 -0
- data/plugins/provisioners/chef/provisioner/base.rb +52 -56
- data/plugins/provisioners/chef/provisioner/chef_apply.rb +9 -10
- data/plugins/provisioners/chef/provisioner/chef_client.rb +1 -1
- data/plugins/provisioners/chef/provisioner/chef_solo.rb +1 -0
- data/plugins/provisioners/docker/client.rb +22 -4
- data/plugins/provisioners/puppet/provisioner/puppet.rb +3 -3
- data/plugins/provisioners/salt/provisioner.rb +19 -24
- data/plugins/pushes/ftp/adapter.rb +18 -1
- data/plugins/pushes/heroku/locales/en.yml +1 -1
- data/plugins/synced_folders/rsync/helper.rb +1 -1
- data/templates/commands/init/Vagrantfile.erb +6 -3
- data/templates/commands/init/Vagrantfile.min.erb +1 -1
- data/templates/commands/ssh_config/config.erb +5 -1
- data/templates/guests/debian/network_dhcp.erb +2 -2
- data/templates/guests/debian/network_static.erb +2 -2
- data/templates/guests/debian/network_static6.erb +2 -2
- data/templates/guests/fedora/network_static6.erb +9 -0
- data/templates/guests/freebsd/network_dhcp.erb +2 -1
- data/templates/guests/freebsd/network_static.erb +1 -1
- data/templates/guests/slackware/network_dhcp.erb +8 -20
- data/templates/guests/slackware/network_static.erb +10 -22
- data/templates/guests/suse/network_dhcp.erb +1 -1
- data/templates/guests/suse/network_static.erb +3 -3
- data/templates/locales/en.yml +35 -18
- data/templates/locales/providers_docker.yml +8 -0
- data/templates/provisioners/chef_solo/solo.erb +7 -7
- data/test/support/isolated_environment.rb +1 -1
- data/test/unit/base.rb +9 -1
- data/test/unit/plugins/commands/box/command/update_test.rb +7 -1
- data/test/unit/plugins/commands/init/command_test.rb +86 -0
- data/test/unit/plugins/commands/login/client_test.rb +7 -0
- data/test/unit/plugins/commands/ssh_config/command_test.rb +2 -14
- data/test/unit/plugins/communicators/winrm/shell_test.rb +40 -16
- data/test/unit/plugins/guests/amazon/cap/flavor_test.rb +19 -0
- data/test/unit/plugins/guests/arch/cap/change_host_name_test.rb +38 -0
- data/test/unit/plugins/guests/arch/cap/configure_networks_test.rb +55 -0
- data/test/unit/plugins/guests/atomic/cap/change_host_name_test.rb +38 -0
- data/test/unit/plugins/guests/atomic/cap/docker_test.rb +28 -0
- data/test/unit/plugins/guests/coreos/cap/change_host_name_test.rb +37 -0
- data/test/unit/plugins/guests/coreos/cap/configure_networks_test.rb +59 -0
- data/test/unit/plugins/guests/coreos/cap/docker_test.rb +28 -0
- data/test/unit/plugins/guests/darwin/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/darwin/cap/choose_addressable_ip_addr_test.rb +36 -0
- data/test/unit/plugins/guests/debian/cap/change_host_name_test.rb +23 -16
- data/test/unit/plugins/guests/debian/cap/configure_networks_test.rb +54 -0
- data/test/unit/plugins/guests/debian/cap/nfs_client_test.rb +30 -0
- data/test/unit/plugins/guests/debian/cap/rsync_test.rb +38 -0
- data/test/unit/plugins/guests/debian/cap/smb_test.rb +38 -0
- data/test/unit/plugins/guests/freebsd/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/freebsd/cap/configure_networks_test.rb +51 -0
- data/test/unit/plugins/guests/freebsd/cap/halt_test.rb +35 -0
- data/test/unit/plugins/guests/freebsd/cap/insert_public_key_test.rb +31 -0
- data/test/unit/plugins/guests/freebsd/cap/mount_nfs_folder_test.rb +53 -0
- data/test/unit/plugins/guests/freebsd/cap/rsync_test.rb +46 -0
- data/test/unit/plugins/guests/linux/cap/choose_addressable_ip_addr_test.rb +38 -0
- data/test/unit/plugins/guests/linux/cap/halt_test.rb +36 -0
- data/test/unit/plugins/guests/linux/cap/insert_public_key_test.rb +32 -0
- data/test/unit/plugins/guests/linux/cap/mount_nfs_test.rb +78 -0
- data/test/unit/plugins/guests/linux/cap/mount_shared_folder_test.rb +1 -1
- data/test/unit/plugins/guests/linux/cap/nfs_client_test.rb +29 -0
- data/test/unit/plugins/guests/linux/cap/port_test.rb +30 -0
- data/test/unit/plugins/guests/omnios/cap/change_host_name_test.rb +41 -0
- data/test/unit/plugins/guests/omnios/cap/mount_nfs_folder_test.rb +47 -0
- data/test/unit/plugins/guests/omnios/cap/rsync_test.rb +29 -0
- data/test/unit/plugins/guests/photon/cap/change_host_name_test.rb +26 -18
- data/test/unit/plugins/guests/photon/cap/configure_networks_test.rb +37 -26
- data/test/unit/plugins/guests/photon/cap/docker_test.rb +17 -12
- data/test/unit/plugins/guests/pld/cap/change_host_name_test.rb +39 -0
- data/test/unit/plugins/guests/pld/cap/flavor_test.rb +21 -0
- data/test/unit/plugins/guests/pld/cap/network_scripts_dir_test.rb +21 -0
- data/test/unit/plugins/guests/redhat/cap/change_host_name_test.rb +23 -51
- data/test/unit/plugins/guests/redhat/cap/configure_networks_test.rb +80 -0
- data/test/unit/plugins/guests/redhat/cap/flavor_test.rb +40 -0
- data/test/unit/plugins/guests/redhat/cap/network_scripts_dir_test.rb +21 -0
- data/test/unit/plugins/guests/redhat/cap/nfs_client_test.rb +30 -0
- data/test/unit/plugins/guests/redhat/cap/rsync_test.rb +29 -0
- data/test/unit/plugins/guests/slackware/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/slackware/cap/configure_networks_test.rb +48 -0
- data/test/unit/plugins/guests/smartos/cap/change_host_name_test.rb +2 -2
- data/test/unit/plugins/guests/smartos/cap/configure_networks_test.rb +1 -1
- data/test/unit/plugins/guests/smartos/cap/halt_test.rb +1 -1
- data/test/unit/plugins/guests/smartos/cap/mount_nfs_test.rb +1 -1
- data/test/unit/plugins/guests/smartos/cap/rsync_test.rb +1 -1
- data/test/unit/plugins/guests/suse/cap/change_host_name_test.rb +40 -0
- data/test/unit/plugins/guests/suse/cap/configure_networks_test.rb +60 -0
- data/test/unit/plugins/guests/suse/cap/halt_test.rb +36 -0
- data/test/unit/plugins/guests/suse/cap/network_scripts_dir_test.rb +19 -0
- data/test/unit/plugins/guests/suse/cap/nfs_client_test.rb +31 -0
- data/test/unit/plugins/guests/suse/cap/rsync_test.rb +38 -0
- data/test/unit/plugins/guests/tinycore/cap/change_host_name_test.rb +1 -1
- data/test/unit/plugins/guests/ubuntu/cap/change_host_name_test.rb +24 -16
- data/test/unit/plugins/guests/windows/cap/change_host_name_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/halt_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/mount_shared_folder_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/reboot_test.rb +1 -1
- data/test/unit/plugins/guests/windows/cap/rsync_test.rb +1 -1
- data/test/unit/plugins/hosts/darwin/cap/rdp_test.rb +36 -0
- data/test/unit/plugins/kernel_v2/config/vm_test.rb +27 -1
- data/test/unit/plugins/providers/docker/action/create_test.rb +55 -0
- data/test/unit/plugins/providers/docker/command/exec_test.rb +44 -0
- data/test/unit/plugins/providers/docker/config_test.rb +7 -2
- data/test/unit/plugins/providers/virtualbox/action/prepare_nfs_settings_test.rb +18 -0
- data/test/unit/plugins/provisioners/ansible/config/guest_test.rb +83 -0
- data/test/unit/plugins/provisioners/ansible/config/host_test.rb +98 -0
- data/test/unit/plugins/provisioners/ansible/config/shared.rb +107 -0
- data/test/unit/plugins/provisioners/ansible/provisioner_test.rb +82 -10
- data/test/unit/plugins/provisioners/chef/config/base_test.rb +2 -2
- data/test/unit/plugins/provisioners/chef/provisioner/base_test.rb +29 -0
- data/test/unit/plugins/pushes/atlas/push_test.rb +12 -8
- data/test/unit/plugins/pushes/ftp/adapter_test.rb +1 -1
- data/test/unit/plugins/pushes/ftp/push_test.rb +5 -4
- data/test/unit/support/isolated_environment.rb +4 -4
- data/test/unit/support/shared/base_context.rb +11 -3
- data/test/unit/templates/guests/arch/network_dhcp_test.rb +2 -2
- data/test/unit/templates/guests/arch/network_static_test.rb +4 -4
- data/test/unit/templates/guests/debian/network_dhcp_test.rb +6 -6
- data/test/unit/templates/guests/debian/network_static_test.rb +6 -6
- data/test/unit/templates/guests/fedora/network_static6_test.rb +25 -0
- data/test/unit/templates/guests/freebsd/network_dhcp_test.rb +5 -2
- data/test/unit/templates/guests/freebsd/network_static_test.rb +13 -17
- data/test/unit/templates/guests/suse/network_dhcp_test.rb +2 -2
- data/test/unit/templates/guests/suse/network_static_test.rb +4 -4
- data/test/unit/vagrant/action/builtin/box_add_test.rb +33 -31
- data/test/unit/vagrant/action/builtin/lock_test.rb +5 -2
- data/test/unit/vagrant/action/builtin/mixin_synced_folders_test.rb +6 -2
- data/test/unit/vagrant/action/builtin/synced_folder_cleanup_test.rb +5 -1
- data/test/unit/vagrant/action/builtin/synced_folders_test.rb +5 -1
- data/test/unit/vagrant/box_collection_test.rb +19 -7
- data/test/unit/vagrant/box_test.rb +13 -2
- data/test/unit/vagrant/config_test.rb +1 -1
- data/test/unit/vagrant/environment_test.rb +16 -12
- data/test/unit/vagrant/machine_index_test.rb +5 -1
- data/test/unit/vagrant/machine_test.rb +5 -1
- data/test/unit/vagrant/plugin/manager_test.rb +1 -5
- data/test/unit/vagrant/plugin/state_file_test.rb +1 -5
- data/test/unit/vagrant/util/platform_test.rb +5 -0
- data/test/unit/vagrant/util/safe_chdir_test.rb +11 -5
- data/test/unit/vagrant/vagrantfile_test.rb +5 -1
- data/vagrant.gemspec +8 -3
- data/version.txt +1 -1
- metadata +3657 -12
- data/CONTRIBUTING.md +0 -41
- data/test/unit/plugins/guests/support/shared/debian_like_host_name_examples.rb +0 -106
- data/test/unit/plugins/guests/support/shared/redhat_like_host_name_examples.rb +0 -252
- data/test/unit/plugins/provisioners/ansible/config_test.rb +0 -224
@@ -128,8 +128,7 @@ module VagrantPlugins
|
|
128
128
|
# rather than directly on our system. Docker needs to run in a VM
|
129
129
|
# when we're not on Linux, or not on a Linux that supports Docker.
|
130
130
|
def host_vm?
|
131
|
-
@machine.provider_config.force_host_vm
|
132
|
-
!Vagrant::Util::Platform.linux?
|
131
|
+
@machine.provider_config.force_host_vm
|
133
132
|
end
|
134
133
|
|
135
134
|
# Returns the SSH info for accessing the Container.
|
@@ -106,7 +106,7 @@ module VagrantPlugins
|
|
106
106
|
Vagrant::Action::Builder.new.tap do |b|
|
107
107
|
b.use Call, IsState, :running do |env1, b1|
|
108
108
|
if env1[:result]
|
109
|
-
b1.use
|
109
|
+
b1.use action_provision
|
110
110
|
next
|
111
111
|
end
|
112
112
|
|
@@ -207,6 +207,58 @@ module VagrantPlugins
|
|
207
207
|
end
|
208
208
|
end
|
209
209
|
|
210
|
+
def self.action_snapshot_delete
|
211
|
+
Vagrant::Action::Builder.new.tap do |b|
|
212
|
+
b.use ConfigValidate
|
213
|
+
b.use Call, IsState, :not_created do |env, b2|
|
214
|
+
if env[:result]
|
215
|
+
b2.use Message, I18n.t("vagrant_hyperv.message_not_created")
|
216
|
+
next
|
217
|
+
end
|
218
|
+
|
219
|
+
b2.use SnapshotDelete
|
220
|
+
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
|
225
|
+
def self.action_snapshot_restore
|
226
|
+
Vagrant::Action::Builder.new.tap do |b|
|
227
|
+
b.use ConfigValidate
|
228
|
+
b.use Call, IsState, :not_created do |env, b2|
|
229
|
+
if env[:result]
|
230
|
+
b2.use Message, I18n.t("vagrant_hyperv.message_not_created")
|
231
|
+
next
|
232
|
+
end
|
233
|
+
|
234
|
+
b2.use action_halt
|
235
|
+
b2.use SnapshotRestore
|
236
|
+
|
237
|
+
b2.use Call, IsEnvSet, :snapshot_delete do |env2, b3|
|
238
|
+
if env2[:result]
|
239
|
+
b3.use action_snapshot_delete
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
b2.use action_start
|
244
|
+
|
245
|
+
end
|
246
|
+
end
|
247
|
+
end
|
248
|
+
|
249
|
+
def self.action_snapshot_save
|
250
|
+
Vagrant::Action::Builder.new.tap do |b|
|
251
|
+
b.use ConfigValidate
|
252
|
+
b.use Call, IsState, :not_created do |env, b2|
|
253
|
+
if env[:result]
|
254
|
+
b2.use Message, I18n.t("vagrant_hyperv.message_not_created")
|
255
|
+
next
|
256
|
+
end
|
257
|
+
b2.use SnapshotSave
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
210
262
|
# The autoload farm
|
211
263
|
action_root = Pathname.new(File.expand_path("../action", __FILE__))
|
212
264
|
autoload :CheckEnabled, action_root.join("check_enabled")
|
@@ -222,6 +274,9 @@ module VagrantPlugins
|
|
222
274
|
autoload :NetSetVLan, action_root.join("net_set_vlan")
|
223
275
|
autoload :NetSetMac, action_root.join("net_set_mac")
|
224
276
|
autoload :MessageWillNotDestroy, action_root.join("message_will_not_destroy")
|
277
|
+
autoload :SnapshotDelete, action_root.join("snapshot_delete")
|
278
|
+
autoload :SnapshotRestore, action_root.join("snapshot_restore")
|
279
|
+
autoload :SnapshotSave, action_root.join("snapshot_save")
|
225
280
|
end
|
226
281
|
end
|
227
282
|
end
|
@@ -18,11 +18,13 @@ module VagrantPlugins
|
|
18
18
|
maxmemory = env[:machine].provider_config.maxmemory
|
19
19
|
cpus = env[:machine].provider_config.cpus
|
20
20
|
vmname = env[:machine].provider_config.vmname
|
21
|
+
differencing_disk = env[:machine].provider_config.differencing_disk
|
21
22
|
|
22
|
-
env[:ui].output("Configured
|
23
|
+
env[:ui].output("Configured Dynamic memory allocation, maxmemory is #{maxmemory}") if maxmemory
|
23
24
|
env[:ui].output("Configured startup memory is #{memory}") if memory
|
24
25
|
env[:ui].output("Configured cpus number is #{cpus}") if cpus
|
25
26
|
env[:ui].output("Configured vmname is #{vmname}") if vmname
|
27
|
+
env[:ui].output("Configured differencing disk instead of cloning") if differencing_disk
|
26
28
|
|
27
29
|
if !vm_dir.directory? || !hd_dir.directory?
|
28
30
|
raise Errors::BoxInvalid
|
@@ -38,10 +40,12 @@ module VagrantPlugins
|
|
38
40
|
|
39
41
|
image_path = nil
|
40
42
|
image_ext = nil
|
43
|
+
image_filename = nil
|
41
44
|
hd_dir.each_child do |f|
|
42
45
|
if %w{.vhd .vhdx}.include?(f.extname.downcase)
|
43
46
|
image_path = f
|
44
47
|
image_ext = f.extname.downcase
|
48
|
+
image_filename = File.basename(f,image_ext)
|
45
49
|
break
|
46
50
|
end
|
47
51
|
end
|
@@ -92,8 +96,12 @@ module VagrantPlugins
|
|
92
96
|
|
93
97
|
env[:ui].detail("Cloning virtual hard drive...")
|
94
98
|
source_path = image_path.to_s
|
95
|
-
dest_path = env[:machine].data_dir.join("
|
96
|
-
|
99
|
+
dest_path = env[:machine].data_dir.join("#{image_filename}#{image_ext}").to_s
|
100
|
+
if differencing_disk
|
101
|
+
env[:machine].provider.driver.execute("clone_vhd.ps1", {Source: source_path, Destination: dest_path})
|
102
|
+
else
|
103
|
+
FileUtils.cp(source_path, dest_path)
|
104
|
+
end
|
97
105
|
image_path = dest_path
|
98
106
|
|
99
107
|
# We have to normalize the paths to be Windows paths since
|
@@ -103,10 +111,10 @@ module VagrantPlugins
|
|
103
111
|
image_path: image_path.to_s.gsub("/", "\\")
|
104
112
|
}
|
105
113
|
options[:switchname] = switch if switch
|
106
|
-
options[:memory] = memory if memory
|
114
|
+
options[:memory] = memory if memory
|
107
115
|
options[:maxmemory] = maxmemory if maxmemory
|
108
116
|
options[:cpus] = cpus if cpus
|
109
|
-
options[:vmname] = vmname if vmname
|
117
|
+
options[:vmname] = vmname if vmname
|
110
118
|
|
111
119
|
env[:ui].detail("Creating and registering the VM...")
|
112
120
|
server = env[:machine].provider.driver.import(options)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module HyperV
|
3
|
+
module Action
|
4
|
+
class SnapshotDelete
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
|
11
|
+
env[:ui].info(I18n.t(
|
12
|
+
"vagrant.actions.vm.snapshot.deleting",
|
13
|
+
name: env[:snapshot_name]))
|
14
|
+
|
15
|
+
env[:machine].provider.driver.delete_snapshot(env[:snapshot_name])
|
16
|
+
|
17
|
+
env[:ui].success(I18n.t(
|
18
|
+
"vagrant.actions.vm.snapshot.deleted",
|
19
|
+
name: env[:snapshot_name]))
|
20
|
+
|
21
|
+
@app.call(env)
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module HyperV
|
3
|
+
module Action
|
4
|
+
class SnapshotRestore
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
|
11
|
+
env[:ui].info(I18n.t(
|
12
|
+
"vagrant.actions.vm.snapshot.restoring",
|
13
|
+
name: env[:snapshot_name]))
|
14
|
+
|
15
|
+
env[:machine].provider.driver.restore_snapshot(env[:snapshot_name])
|
16
|
+
|
17
|
+
@app.call(env)
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module HyperV
|
3
|
+
module Action
|
4
|
+
class SnapshotSave
|
5
|
+
def initialize(app, env)
|
6
|
+
@app = app
|
7
|
+
end
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
|
11
|
+
env[:ui].info(I18n.t(
|
12
|
+
"vagrant.actions.vm.snapshot.saving",
|
13
|
+
name: env[:snapshot_name]))
|
14
|
+
|
15
|
+
env[:machine].provider.driver.create_snapshot(env[:snapshot_name])
|
16
|
+
|
17
|
+
env[:ui].success(I18n.t(
|
18
|
+
"vagrant.actions.vm.snapshot.saved",
|
19
|
+
name: env[:snapshot_name]))
|
20
|
+
|
21
|
+
@app.call(env)
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -3,7 +3,7 @@ require "vagrant"
|
|
3
3
|
module VagrantPlugins
|
4
4
|
module HyperV
|
5
5
|
class Config < Vagrant.plugin("2", :config)
|
6
|
-
|
6
|
+
|
7
7
|
attr_accessor :ip_address_timeout # Time to wait for an IP address when booting, in seconds @return [Integer]
|
8
8
|
attr_accessor :memory # Memory size in mb @return [Integer]
|
9
9
|
attr_accessor :maxmemory # Maximal memory size in mb enables dynamical memory allocation @return [Integer]
|
@@ -11,6 +11,7 @@ module VagrantPlugins
|
|
11
11
|
attr_accessor :vmname # Name that will be shoen in Hyperv Manager @return [String]
|
12
12
|
attr_accessor :vlan_id # VLAN ID for network interface for the virtual machine. @return [Integer]
|
13
13
|
attr_accessor :mac # MAC address for network interface for the virtual machine. @return [String]
|
14
|
+
attr_accessor :differencing_disk # Create differencing disk instead of cloning whole VHD [Boolean]
|
14
15
|
|
15
16
|
def initialize
|
16
17
|
@ip_address_timeout = UNSET_VALUE
|
@@ -20,6 +21,7 @@ module VagrantPlugins
|
|
20
21
|
@vmname = UNSET_VALUE
|
21
22
|
@vlan_id = UNSET_VALUE
|
22
23
|
@mac = UNSET_VALUE
|
24
|
+
@differencing_disk = UNSET_VALUE
|
23
25
|
end
|
24
26
|
|
25
27
|
def finalize!
|
@@ -28,10 +30,11 @@ module VagrantPlugins
|
|
28
30
|
end
|
29
31
|
@memory = nil if @memory == UNSET_VALUE
|
30
32
|
@maxmemory = nil if @maxmemory == UNSET_VALUE
|
31
|
-
@cpus = nil if @cpus == UNSET_VALUE
|
33
|
+
@cpus = nil if @cpus == UNSET_VALUE
|
32
34
|
@vmname = nil if @vmname == UNSET_VALUE
|
33
35
|
@vlan_id = nil if @vlan_id == UNSET_VALUE
|
34
36
|
@mac = nil if @mac == UNSET_VALUE
|
37
|
+
@differencing_disk = false if @differencing_disk == UNSET_VALUE
|
35
38
|
end
|
36
39
|
|
37
40
|
def validate(machine)
|
@@ -84,7 +84,24 @@ module VagrantPlugins
|
|
84
84
|
def net_set_mac(mac_addr)
|
85
85
|
execute("set_network_mac.ps1", { VmId: vm_id, Mac: mac_addr })
|
86
86
|
end
|
87
|
-
|
87
|
+
|
88
|
+
def create_snapshot(snapshot_name)
|
89
|
+
execute("create_snapshot.ps1", { VmId: vm_id, SnapName: (snapshot_name) } )
|
90
|
+
end
|
91
|
+
|
92
|
+
def restore_snapshot(snapshot_name)
|
93
|
+
execute("restore_snapshot.ps1", { VmId: vm_id, SnapName: (snapshot_name) } )
|
94
|
+
end
|
95
|
+
|
96
|
+
def list_snapshots()
|
97
|
+
snaps = execute("list_snapshots.ps1", { VmID: vm_id } )
|
98
|
+
snaps.map { |s| s['Name'] }
|
99
|
+
end
|
100
|
+
|
101
|
+
def delete_snapshot(snapshot_name)
|
102
|
+
execute("delete_snapshot.ps1", {VmID: vm_id, SnapName: snapshot_name})
|
103
|
+
end
|
104
|
+
|
88
105
|
protected
|
89
106
|
|
90
107
|
def execute_powershell(path, options, &block)
|
@@ -7,12 +7,18 @@ Param(
|
|
7
7
|
$Dir = Split-Path $script:MyInvocation.MyCommand.Path
|
8
8
|
. ([System.IO.Path]::Combine($Dir, "utils\write_messages.ps1"))
|
9
9
|
|
10
|
-
|
10
|
+
|
11
|
+
if($PSVersionTable.PSVersion.Major -le 4) {
|
12
|
+
$ExceptionType = [Microsoft.HyperV.PowerShell.VirtualizationOperationFailedException]
|
13
|
+
} else {
|
14
|
+
$ExceptionType = [Microsoft.HyperV.PowerShell.VirtualizationException]
|
15
|
+
}
|
16
|
+
|
11
17
|
try {
|
12
18
|
$VM = Get-VM -Id $VmId -ErrorAction "Stop"
|
13
19
|
$State = $VM.state
|
14
20
|
$Status = $VM.status
|
15
|
-
} catch
|
21
|
+
} catch $ExceptionType {
|
16
22
|
$State = "not_created"
|
17
23
|
$Status = $State
|
18
24
|
}
|
@@ -107,7 +107,6 @@ $secure_boot_enabled = (Select-Xml -xml $vmconfig -XPath "//secure_boot_enabled"
|
|
107
107
|
|
108
108
|
$vm_params = @{
|
109
109
|
Name = $vm_name
|
110
|
-
Generation = $generation
|
111
110
|
NoVHD = $True
|
112
111
|
MemoryStartupBytes = $MemoryStartupBytes
|
113
112
|
SwitchName = $switchname
|
@@ -115,6 +114,11 @@ $vm_params = @{
|
|
115
114
|
ErrorAction = "Stop"
|
116
115
|
}
|
117
116
|
|
117
|
+
# Generation parameter was added in ps v4
|
118
|
+
if((get-command New-VM).Parameters.Keys.Contains("generation")) {
|
119
|
+
$vm_params.Generation = $generation
|
120
|
+
}
|
121
|
+
|
118
122
|
# Create the VM using the values in the hash map
|
119
123
|
|
120
124
|
$vm = New-VM @vm_params
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Param(
|
2
|
+
[Parameter(Mandatory=$true)]
|
3
|
+
[string]$VmId
|
4
|
+
)
|
5
|
+
|
6
|
+
$VM = Get-VM -Id $VmId -ErrorAction "Stop"
|
7
|
+
$Snapshots = @(Get-VMSnapshot $VM | Select-Object Name)
|
8
|
+
$result = ConvertTo-json $Snapshots
|
9
|
+
|
10
|
+
Write-Host "===Begin-Output==="
|
11
|
+
Write-Host $result
|
12
|
+
Write-Host "===End-Output==="
|
@@ -33,6 +33,8 @@ module VagrantPlugins
|
|
33
33
|
autoload :Network, File.expand_path("../action/network", __FILE__)
|
34
34
|
autoload :NetworkFixIPv6, File.expand_path("../action/network_fix_ipv6", __FILE__)
|
35
35
|
autoload :Package, File.expand_path("../action/package", __FILE__)
|
36
|
+
autoload :PackageSetupFiles, File.expand_path("../action/package_setup_files", __FILE__)
|
37
|
+
autoload :PackageSetupFolders, File.expand_path("../action/package_setup_folders", __FILE__)
|
36
38
|
autoload :PackageVagrantfile, File.expand_path("../action/package_vagrantfile", __FILE__)
|
37
39
|
autoload :PrepareCloneSnapshot, File.expand_path("../action/prepare_clone_snapshot", __FILE__)
|
38
40
|
autoload :PrepareNFSSettings, File.expand_path("../action/prepare_nfs_settings", __FILE__)
|
@@ -41,12 +43,14 @@ module VagrantPlugins
|
|
41
43
|
autoload :Resume, File.expand_path("../action/resume", __FILE__)
|
42
44
|
autoload :SaneDefaults, File.expand_path("../action/sane_defaults", __FILE__)
|
43
45
|
autoload :SetName, File.expand_path("../action/set_name", __FILE__)
|
44
|
-
autoload :SetupPackageFiles, File.expand_path("../action/setup_package_files", __FILE__)
|
45
46
|
autoload :SnapshotDelete, File.expand_path("../action/snapshot_delete", __FILE__)
|
46
47
|
autoload :SnapshotRestore, File.expand_path("../action/snapshot_restore", __FILE__)
|
47
48
|
autoload :SnapshotSave, File.expand_path("../action/snapshot_save", __FILE__)
|
48
49
|
autoload :Suspend, File.expand_path("../action/suspend", __FILE__)
|
49
50
|
|
51
|
+
# @deprecated use {PackageSetupFiles} instead
|
52
|
+
autoload :SetupPackageFiles, File.expand_path("../action/setup_package_files", __FILE__)
|
53
|
+
|
50
54
|
# Include the built-in modules so that we can use them as top-level
|
51
55
|
# things.
|
52
56
|
include Vagrant::Action::Builtin
|
@@ -150,7 +154,8 @@ module VagrantPlugins
|
|
150
154
|
next
|
151
155
|
end
|
152
156
|
|
153
|
-
b2.use
|
157
|
+
b2.use PackageSetupFolders
|
158
|
+
b2.use PackageSetupFiles
|
154
159
|
b2.use CheckAccessible
|
155
160
|
b2.use action_halt
|
156
161
|
b2.use ClearForwardedPorts
|
@@ -310,9 +315,9 @@ module VagrantPlugins
|
|
310
315
|
b.use ConfigValidate
|
311
316
|
b.use BoxCheckOutdated
|
312
317
|
b.use Call, IsRunning do |env, b2|
|
313
|
-
# If the VM is running,
|
318
|
+
# If the VM is running, run the necessary provisioners
|
314
319
|
if env[:result]
|
315
|
-
b2.use
|
320
|
+
b2.use action_provision
|
316
321
|
next
|
317
322
|
end
|
318
323
|
|