2520 Commits

Author SHA1 Message Date
sophia
fa561cab29 Fill in mock machine client methods 2022-05-04 09:32:36 -05:00
Paul Hinze
f07ba964d3
Prevent autocomplete install test from messing with real homedir
It just so happens my `~/.bashrc` is not writable by my user (NixOS
humblebrag lol) so this test fails for me locally.

Turns out the test was touching the user's homedir which we probably
don't want anyways, so stub out a tempdir instead.
2022-04-25 14:24:06 -05:00
Chris Roberts
46efcb8af8
Fix hash usage in mapper test 2022-04-25 12:26:56 -05:00
Paul Hinze
eacb798a71
Fix action hooks running twice in destroy_on_error scenarios
The "destroy_on_error" functionality for `vagrant up` is implemented in
the `recover()` action chain, and works by firing off a destroy action
from inside that chain.

This is all well and good, but it copies its existing `env` which has
had `action_name` set for the up action. This was causing action_hooks
for up actions to attach to this destroy action stack.

Setting the action_name explicitly in the env before firing the runner
should correct the behavior. I'm not sure if raw_action_name is used
anywhere but I figured it was better to be consistent vs conservative in
what we change.
2022-04-25 12:26:56 -05:00
Paul Hinze
b88123fab4
Add unit test for new behavior 2022-04-25 12:26:55 -05:00
Paul Hinze
2707d09181
Fix prepend/append action hooks firing multiple times
This addresses the surprising behavior that the StoreBoxMetadata hook
was running many times during a machine up, including during failed
operations where a destroy_on_error deleted the machine. This was
resulting in an error that looked like:

> No such file or directory @ rb_sysopen [...] /[...]/box_meta

Plugin action hooks using prepend/append were attaching every time a
Builder was run, including sub-Builders that show up for things like
Call actions.

To fix this, we tell Builders if they are "primary" and only run
prepend/append on those. See inline comments for more explanation.
2022-04-25 12:26:55 -05:00
sophia
3e641fbe6b
Stub machine index proto mapper for environment test 2022-04-25 12:26:51 -05:00
Paul Hinze
1341bfe0af
Tweak Ruby->Go error handling so exit codes match
In legacy Vagrant, any exception raised that's a subclass of
Vagrant::Errors::VagrantError is considered user-facing and so causes
the error message to be printed to the console and the process to use
exit code 1. Anything outside of that causes the process to use exit
code 255. (See `bin/vagrant` for the code.)

Here we mirror that behavior by treating errors that have a
LocalizedMessage as user-facing and those without as unexpected. This
allows the basic virtualbox component to pass in vagrant-spec!
2022-04-25 12:26:49 -05:00
Paul Hinze
7c1d2e5368
Use optional fields on Synced Folder instead of empty string checks
Addresses concerns raised in discussion here
https://github.com/hashicorp/vagrant-ruby/pull/219#discussion_r816966056
and makes it so we don't have to change any plugin code to make things
work.

Depends on https://github.com/hashicorp/vagrant-plugin-sdk/pull/133
2022-04-25 12:26:44 -05:00
Paul Hinze
6585cd55af
Add unit tests covering the new rspec helper behavior 2022-04-25 12:26:44 -05:00
Paul Hinze
2906d2c7df
Populate default when synced folder guest type is not set
This helps fix the unit tests that were failing. Also adding a test for
the new behavior
2022-04-25 12:26:44 -05:00
Paul Hinze
06ad1b4565
Fixup tests for Ruby 3.0
This is a pass through test failures and deprecation warnings:

 * Make all ambiguous `.with(..., key: val)` use explicit hashes to
   prevent test failures for argument mismatch in Ruby 3.0
 * Scope down all unbounded `raise_error` to address warnings (remove
   one test that was revealed to be referencing a nonexistent variable
   once the raise_error was scoped.)
 * Update all `any_instance` usage to new syntax to address warnings
 * Allow the service cache to be cleared and do so between some tests
 * Fix a small bug in with_plugin's plugin not found code path (revealed
   by a scoped and_raise)
2022-04-25 12:26:40 -05:00
Paul Hinze
ff86d86ac8
Provisioner Plugins 2022-04-25 12:26:37 -05:00
Paul Hinze
8b6ef27a0f
Fix multiple synced folder handling in server mode
There was a hash assignment that was overriding values when there were
multiple synced folders for a given implementation.

Includes some stub-tastic unit tests to help verify the hash munging
behavior does what it's supposed to do going forward.
2022-04-25 12:26:37 -05:00
Paul Hinze
8730b9f100
Fix MachineState mapper so IsRunning actions work
The IsRunning action checks if `env[:machine].state.id == :running` but
this check was never passing as the protobuf-washed version of machine
state was yielding a machine state w/ a string value like `"running"`.

Easy fix in the mapper!
2022-04-25 12:26:34 -05:00
sophia
ea778c188d
Update ruby tests 2022-04-25 12:26:28 -05:00
Paul Hinze
a86965c340
ruby mappers: Unwrap wrapper types in Hashes and Arrays
Boolean types (and possibly a few others) are returned as wrapper
classes when coming out from proto mapping; these need to be unwrapped
otherwise the caller who is expecting a nice clean boolean value ends up
with an icky protobuf class.

This fixes the shell provisioner, which relies on a communicator
receiving a settings hash `{error_check: false}` for a command that
usually fails but it sent just in case before provisioning starts.
2022-04-25 12:26:23 -05:00
Paul Hinze
a841da4fc6
Add a simple push plugin in Go
The only tweak required to get this to work was allowing a DummyConfig
to survive being passed through a remote plugin on the Ruby side.
2022-04-25 12:26:21 -05:00
sophia
53f7b3f8eb
Update tests for GRPC errors 2022-04-25 12:26:20 -05:00
Paul Hinze
142b1af0cc
Fix local exec pushes in server mode
The local-exec push strategy was assuming it was running from a CLI and
so it wouldn't be a big deal for it to straight up `exec` and replace
its running with the user command. That command will just do its thing
and we want the exit code for the CLI command to match anyways, right?

Sure that works for a shell, but in a GRPC server setting it's decidedly
Not Cool to suddenly swap out the running process!

As you can imagine - the effect of doing this was all sorts of broken
pipes and unexpected EOFs and a very confused @phinze.

Luckily we had a subprocess strategy sitting right there for Windows
compat, so it was just a matter of switching to that in the server
context as well. Long and winding debugging process; simple fix;
just another classic!
2022-04-25 12:26:17 -05:00
Chris Roberts
820118b481
Prevent GRPC connection in tests 2022-04-25 12:26:16 -05:00
Chris Roberts
59144f74d3
Stub out mapper response to return machine 2022-04-25 12:26:01 -05:00
sophia
c6070c69db
Rename cap command 'target' to 'target-guest'
the target name is already used by the go cli
2022-04-25 12:24:49 -05:00
sophia
b1f495315e
Fix tests 2022-04-25 12:24:49 -05:00
sophia
ca824644a5
Add tests for host service 2022-04-25 12:24:41 -05:00
sophia
434e613856
Test has capability 2022-04-25 12:24:39 -05:00
sophia
7477455380
Get parents from guest plugin 2022-04-25 12:24:39 -05:00
sophia
493343abb6
Add test guest 2022-04-25 12:24:38 -05:00
sophia
7fe582037f
Add a few tests for detection of guests 2022-04-25 12:24:38 -05:00
sophia
34637c616e
Add tests for guest service parents 2022-04-25 12:24:38 -05:00
Paul Hinze
d03a058e04
Fix VAGRANT_CWD handling in vagrant push ftp
When testing all of the push functionality I ran into the fact that the
FTP upload code did not recognize that I had VAGRANT_CWD set, so it
wasn't finding the right files to upload.

This should make everything work properly relative to that location.
2022-01-06 18:09:30 -06:00
Chris Roberts
ada1d582f7 Update test to use full environment and host instances 2021-11-08 11:29:48 -08:00
Paul Cacheux
e00f08722b Fix tests 2021-11-08 18:35:32 +01:00
Chris Roberts
66b39d45f4
Merge pull request #12575 from chrisroberts/fix-coreos
Fix coreos network configuration
2021-11-05 10:39:26 -07:00
Chris Roberts
cae807fcf0 Configure each device individually to prevent orphan connections 2021-11-04 15:51:08 -07:00
Chris Roberts
f9d1025688
Merge pull request #11880 from elastio/bug/11878-rsync-fails-on-windows
[WIP] Change `mkdir` command on Windows for rsync
2021-11-04 15:03:20 -07:00
Chris Roberts
657b2a39d9 Fix network configuration for coreos guests 2021-11-04 14:53:22 -07:00
Chris Roberts
69ddf98607
Merge pull request #12570 from chrisroberts/darwin-nfs
Fix NFS host paths on darwin
2021-11-03 11:06:27 -07:00
Chris Roberts
ac92fd8e1d Access provider driver through machine for version check
Updates the VirtualBox version check for network range validation
    to access the driver via the machine instances provider within the
    passed env.
2021-11-03 09:32:41 -07:00
Chris Roberts
5f0e5652b1 Only resolve path with firmlink prefix on Catalina 2021-11-02 16:44:06 -07:00
Chris Roberts
6810c7b4bb Add version capability to darwin host plugin 2021-11-02 16:43:26 -07:00
Chris Roberts
716f4c0717
Merge pull request #12564 from chrisroberts/vbox-hostonly-validat
Validate VirtualBox hostonly network range
2021-11-02 11:03:44 -07:00
Chris Roberts
2f9a0ac253 Adjust default range 2021-10-29 09:43:47 -07:00
Chris Roberts
4341d1b45c Include pass through for other exist? calls 2021-10-29 09:30:23 -07:00
Chris Roberts
ae7639ec23 Validate VirtualBox hostonly network range
VirtualBox introduced a restriction on the valid range for hostonly
    networks. When using a version of VirtualBox which includes this
    restriction a check is performed on the defined IP address to validate
    it is within either the default range (as defined in the VirtualBox
    documentation) or the values defined in the network configuration
    file.
2021-10-28 17:12:15 -07:00
Collin McNeese
692cb1ae34
Updates install checks for Chef provisioners
Signed-off-by: Collin McNeese <cmcneese@chef.io>
2021-10-24 11:38:59 -05:00
Dan Čermák
c4ced5459d
Add fallback for SLE 11 guest machines
SLE 11 does not ship systemd and then using systemctl poweroff does not
work. Therefore we fall back to using /sbin/shutdown for machines without
systemd.
This fixes https://github.com/hashicorp/vagrant/issues/12487
2021-08-06 12:55:32 +02:00
Chris Roberts
84d3a5fe47 Update compose tests to pass fully through Util::Subprocess 2021-07-12 09:54:56 -07:00
Dan Čermák
db38599124
Remove no longer required gem webmock
This gem was added a long time ago and probably used to test the functionality
that is now provided by the vagrant_cloud gem
2021-07-06 16:22:24 +02:00
Chris Roberts
a8c5980afb Add Rocky Linux guest support 2021-07-02 15:32:48 -07:00