1147 Commits

Author SHA1 Message Date
Hristo Paskalev
865ffb9965 Added proper exception handling whenever VirtualBox installation is corrupt 2020-10-03 15:37:49 +03:00
sophia
583b3f5332 Persist smb mounts 2020-09-22 16:53:10 -05:00
Dan Duvall
1b0f5120c6 Avoid sorting of controllers with nil boot_priority
Some unsupported storage controllers (e.g. floppy) report a nil
boot_priority which results in a failed sort. Select only supported
storage controllers to avoid that case.
2020-09-01 09:57:55 -07:00
sophia
2a8372a272 Add mount type cap 2020-08-19 15:00:40 -05:00
sophia
7577c11eb6 Persist synced folders in action 2020-08-19 15:00:40 -05:00
sophia
cde39e26ba Make mount options a synced_folder capability 2020-08-19 15:00:40 -05:00
sophia
e7e956ca12 Fix a few deprecation warnings for ruby 2.7 2020-08-10 16:32:54 -05:00
sophia
e3223b67ff Fix if statement to use '-and' syntax
Docs for powershell:
https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_logical_operators?view=powershell-7
2020-08-07 17:24:49 -05:00
cam
67fdc3855f HyperV - Adding ability to disable Enhanced session transport type 2020-08-06 16:04:21 -07:00
Cameron Jack
41948a1ca9 Moving hyper-v enhanced session message to I18n 2020-08-06 16:04:21 -07:00
cam
f6875818dc Hyperv: moving session transport type config from string to boolean for enhanced mode aka HvSocker 2020-08-06 16:04:17 -07:00
cam
3dd7c89bf0 hyper-v: Hyper-V: add support for EnhancedSessionTransportType. Addresses #9823 2020-08-06 16:02:26 -07:00
Sophia Castellarin
c17ba03904
Merge pull request #11773 from soapy1/cloud-init-wait-action
Add cloud init wait action
2020-08-06 16:28:45 -05:00
sophia
a1d429a4e8 Raise more descriptive error if cloud init fails 2020-08-06 15:47:36 -05:00
Brian Cain
50766b2f14
Merge pull request #11767 from briancain/fix/ensure-isolated-disk-checks
Ensure VirtualBox Disk capability works only off of guest attached disks
2020-07-29 12:57:55 -07:00
sophia
0a5a940e58 Raise an error if cloud-init is not found on guest 2020-07-29 12:50:50 -05:00
Chris Roberts
64490299c3 Include check for support of the SecureBootTemplate parameter 2020-07-28 15:10:57 -07:00
Chris Roberts
4f876a59d3
Merge pull request #11756 from sw-fastec/hyper-v-secure-boot-template
Set secure boot template setting for hyper-v
2020-07-28 15:05:34 -07:00
Brian Cain
60ef0d7d9c
Use existing disk structure rather than finding port/device again 2020-07-27 13:46:03 -07:00
Brian Cain
e2c844db74
Properly determine disk recovery
Because Vagrant no longer determines `all_disks` through `vboxmanage
list hdds`, it can't rely on unattached disks existing in `all_disks`.
This commit fixes that by including the results from `list hdds` to
determine if Vagrant needs to reattach a disk created by Vagrant that
failed to be attached previously.
2020-07-27 13:31:28 -07:00
Brian Cain
851422ee55
Ensure extra_disk_data is skipped if nil
This commit skips over adding any extra_disk_data to the storage
controller data structure in case it's nil.
2020-07-24 15:50:23 -07:00
Sophia Castellarin
3d4b721a22
Merge pull request #11579 from soapy1/provisioner-communicator_required
Provisioner communicator required
2020-07-17 10:45:34 -05:00
sophia
c48befbe61 Only do cloud init actions on 'vagrant up' 2020-07-17 09:45:51 -05:00
sophia
3f867e0df4 Add cloud init wait action 2020-07-16 15:40:39 -05:00
Brian Cain
ece5449dd2
Update virtualbox configure_disks to use storage controller attachments
This commit updates how Vagrant manages disk state with the virtualbox
provider. Instead of using the raw structure from `list_hdds` for
all_disks, it instead uses that data that now lives inside the
controllers attachment structure.
2020-07-14 09:22:55 -07:00
Brian Cain
f33d513969
Include detailed info about each disk in attachment structure
This commit includes all detailed disk information from VirtualBox
inside its storage structure in Vagrant. This gives Vagrant more
detailed access for a disk beyond its uuid and port/device such as its
capacity and the type of disk it's classified as.
2020-07-13 17:06:23 -07:00
Brian Cain
a6e8c21af8
Update virtualbox to only obtain guest disks instead of all disks
This commit updates how the virtualbox provider obtains `all_disks`.
Instead of using the `list_hdds` driver method, which lists al known
harddisks for an entire VirtualBox installation, it instead uses that
array of disks to filter out the proper disks associated with the guest,
given its existance inside the guests controller attachments.
2020-07-13 16:00:40 -07:00
Stephan Wild
4ff1ff5bc0 Set secure boot template setting for hyperv 2020-07-10 20:38:32 +02:00
Jeff Bonhag
3cb01415e4
Add support for SCSI controllers
SCSI controllers are a lot like SATA controllers. This commit also
changes some controller detection logic to take boot priority into
account when selecting an appropriate controller.
2020-07-09 15:11:35 -04:00
Jeff Bonhag
21954c29af
Hook into ValidateDiskExt capability 2020-07-09 15:11:35 -04:00
Jeff Bonhag
883e45cc49
Refactor: isolate "storage bus" logic
Move all storage bus logic into the storage controller class. Since most
of the storage controller interaction only cares about the storage
controller name, we can simplify #get_controller and isolate the storage
controller detection-type logic in the StorageControllerArray.
2020-07-09 15:11:34 -04:00
Jeff Bonhag
ff9f9c40e8
Differentiate between controller "not found" errors
This commit adds a new error message to be raised if a VM has no
supported storage controllers. This lets us differentiate between two
different "controller not found" scenarios:

1. If we are looking for a controller that we're expecting to find (i.e.
one that was recorded in the disk metadata file)
2. If we are poking around for the *best* controller to use in a
configuration task
2020-07-09 15:10:50 -04:00
Jeff Bonhag
8c58e3f6f6
Refactor out method for getting the primary disk 2020-07-09 15:10:50 -04:00
Jeff Bonhag
63e168386a
Clean up disk_meta/dvd_meta in tests
- Add a type check for disk_meta/dvd_meta
- Fix up some places where metadata keys were using symbol keys instead of
quoted names
2020-07-09 15:10:48 -04:00
Jeff Bonhag
c316d18e35
Apply suggestions from code review
Co-authored-by: Brian Cain <bcain@hashicorp.com>
Co-authored-by: Sophia Castellarin <sophia@hashicorp.com>
2020-07-09 15:09:10 -04:00
Jeff Bonhag
423e212f58
Create Storage Controller array
This is an array-like object that's useful for answer questions about
the storage controllers arragement as a whole.
2020-07-09 15:09:10 -04:00
Jeff Bonhag
84d2c38cc2
Disallow multiple copies of the same ISO
This makes disk/dvd behavior more consistent, and makes it easier to
determine whether a dvd is already attached.
2020-07-09 15:09:10 -04:00
Jeff Bonhag
724687a601
Fix stale controller state
This was causing multiple dvds to be attached to the same port/device.
2020-07-09 15:09:10 -04:00
Jeff Bonhag
3c0021aac3
Use #read_storage_controllers for #get_port_and_device
This preserves the existing behavior of the method but changes the
implementation to use #read_storage_controllers. The caps that call a
mix of #get_port_and_device and #read_storage_controllers may be a
candidate for further refactoring, but this makes sure that we're
fetching storage attachments consistently.
2020-07-09 15:09:10 -04:00
Jeff Bonhag
d71a5bf453
Fall back on finding disk attachment by UUID 2020-07-09 15:09:10 -04:00
Jeff Bonhag
a4a082e70e
Prevent multiple calls to #read_storage_controllers 2020-07-09 15:09:09 -04:00
Jeff Bonhag
f72ae72aaa
Change method signature
This commit changes the method signature of the VirtualBox driver
methods so they mirror the underlying VBoxManage command.
2020-07-09 15:09:09 -04:00
Jeff Bonhag
ff53c64fbc
Fix test, add test .recover_from_resize 2020-07-09 15:09:09 -04:00
Jeff Bonhag
dfd3bc915c
Remove disks based on metadata
This commit changes the disk_cleanup behavior to remove disks based on
what has been recorded in the disk_meta file.
2020-07-09 15:09:07 -04:00
Jeff Bonhag
e01b51fa43
Disk management with a single controller
.configure_disks is responsible for determining the disk controller(s)
to use, given the machine configuration and the current disk config.
When a machine has a single controller, use it for all attachments.

When a machine has multiple controllers, attach disks to the SATA
controller and DVDs to the IDE controller.

This commit also returns additional attachment information
(controller/port/device) with the disk metadata.
2020-07-09 15:07:49 -04:00
Jeff Bonhag
c9bdcb6839
Error on unsupported storage controller type 2020-07-09 15:07:49 -04:00
Jeff Bonhag
53f7412821
Make VirtualBoxDisksDefinedExceedLimit error generic
Create a #limit method in the StorageController class so we can
customize the error message when a storage controller is full.
2020-07-09 15:07:49 -04:00
Jeff Bonhag
1e6eb0d636
Raise an error if primary disk can't be found 2020-07-09 15:07:49 -04:00
Jeff Bonhag
8561467e40
IDE controllers have two devices/port 2020-07-09 15:07:49 -04:00
Jeff Bonhag
61f43fb59f
Require controller name for #remove_disk
Also use #get_controller methods when attaching a disk.
2020-07-09 15:07:48 -04:00