Commit Graph

3448 Commits

Author SHA1 Message Date
Chris Roberts 954569d1fc Remove PATH based cygwin detection
Detecting cygwin via PATH contents can result in false positives
resulting in errors when using Vagrant on Windows outside of a
cygwin shell. Use environment based detection instead.
2017-07-03 14:40:27 -07:00
Chris Roberts f42279508d Reset plugin constraint on update if explicit version set 2017-06-28 07:24:32 -07:00
Chris Roberts a2ce948f91 Merge pull request #8725 from chrisroberts/fix/windows-shellout
Rebuild command and arguments before exec on Windows
2017-06-27 19:39:21 -07:00
Chris Roberts 911340442a Merge pull request #8692 from chrisroberts/update/gem-dep-constraints
Support strict enforcement of internal dependency constraints
2017-06-27 19:37:22 -07:00
Chris Roberts d1a589c59f Merge pull request #8724 from chrisroberts/fix/windows-cwd-check
Set encoding when reading/writing cwd file
2017-06-27 19:21:16 -07:00
Chris Roberts 73d85bd2f7 Support strict enforcement of internal dependency constraints 2017-06-27 19:20:20 -07:00
Chris Roberts f341945a29 Include debug logging of string conversions 2017-06-27 19:10:18 -07:00
Chris Roberts 85d5f11f62 Adjustments to handle plugin updates using proper constraints
If a user provides the gem version using an explicit version or a
constraint, the update action should honor that constraint and not
simply replace it with an unbound constraint.

This also removes system plugin specifications from being matched
and preferred which prevents updates and can result in unexpected
downgrades when running the update.
2017-06-27 19:05:30 -07:00
Chris Roberts 97715280c2 Deep merge plugin list with system plugins. Discard specifications correctly. 2017-06-27 19:05:30 -07:00
Chris Roberts 2575ed9dc2 Explicitly set encodings to prevent incompatible string comparisons 2017-06-26 20:00:43 -07:00
Chris Roberts f3daf5fad7 Rebuild command and arguments before exec on Windows
Flat command can cause issues with arguments. Creating new
string instances from arguments forces common encoding of
all strings used for exec.

Fixes #8690
2017-06-26 20:00:06 -07:00
Chris Roberts 5f955c3d38 Convert atlas references to vagrant cloud 2017-06-23 10:01:51 -07:00
Brian Cain 774e19b152 Disable loading identical Vagrantfile twice from same dir
Prior to this commit, if a user set the env var VAGRANT_HOME to be the
same directory where the project home is, Vagrant would load that file
twice and merge its config. This caused various provisioner and other
provider blocks to unexpectedly run twice. This commit updates the
config loader to look and see if the `:root` and `:home` procs are
equal, and if so, removes the `:home` object so that it isn't loaded and
duplicated. This commit however does not prevent duplicate loading if an
identical Vagrantfile exists in the home and project dir if those
locations are different.
2017-06-22 09:04:21 -07:00
Brian Cain 1b4d7848bc Fix vagrant_cwd warnings
Prior to this commit, if a user ran a vagrant command within a subdir,
it would warn about the cwd changing which is not actually the case.
This commit adds an additional check to see if vagrant is being invoked
within a subdirectory so that it doesn't warn the user.
2017-06-19 13:05:26 -07:00
Brian Cain b02f110cd8 (#7855) Introduce more ssh options for machines
This commit allows the user to configure two additional options that
were previously not configurable: Compression and DSAAuthentication.
Each config option is set as a boolean, and if left out of the config
will default to its previous behavior which is included and set to
"yes". If the user explicitly sets it to false, it will not be included
as an ssh option.
2017-06-15 16:29:53 -07:00
Brian J. Murrell 583fb3c787 Clear POSIXLY_CORRECT when using optparse
In case a user (perhaps inadvertently, or for particular reasons) has POSIXLY_CORRECT
set in their environment, make sure to clear it before calling optparse.optparse!() since
we don't really want POSIXLY_CORRECT argument parsing.
2017-06-14 12:57:10 -04:00
Brian Cain 378aae8782 Merge pull request #8653 from briancain/7188/master/unify-snapshot-restore-failures
Clean up vagrant snapshot restore/delete error messages
2017-06-07 11:47:38 -07:00
Brian Cain 43ae30cf9b Merge pull request #8651 from briancain/WARN-CWD-CHANGES
Warn about changes to cwd for every machine action
2017-06-07 11:46:57 -07:00
Brian Cain 87b7514603 (#7188) Clean up vagrant snapshot restore/delete error messages
This commit adds some better handling around the snapshot restore and
delete commands for the virtualbox provider. If a user attempts to restore from
a vm that does not exist, instead of exiting 0 it will raise an
exception saying the virtual machine has not been created yet.
Addtionally, if a user attempts to restore from a snapshot id that does
not exist, instead of printing a complicated exception from the
virtualbox cli tool, it prints a more useful error message telling the
user that the snapshot does not exist.
2017-06-07 09:12:20 -07:00
Brian Cain 79c7799fd9 Add basic unit test for CWD change warning 2017-06-06 08:38:03 -07:00
Fernando Seror 48b0e00368 Tests regarding warning whenever CWD changes 2017-06-05 13:25:30 -07:00
Fernando Seror 15871a481b Warn about changes to CWD on every machine action
Whenever the path where the machine was first created changes, Vagrant
will now show just one warning when an action is run on the machine.

The idea is that if a user copies the machine over to a different
directory with the idea of running two different machines, this warning
will now help the user determine how to make that work.
2017-06-05 13:25:30 -07:00
Brian Cain 1ade699936 (#6827) Introduce tty flag for ssh command execution
Prior to this commit, if a user ran the `vagrant ssh -c CMD` command, it
would not allow the user to configure pseudo-terminal allocation. This
commit introduces a -t flag for the `vagrant ssh` command which defaults
to true if not specified.
2017-06-02 17:32:02 -07:00
Brian Cain d0f1f39fa6 Merge pull request #8636 from briancain/7118/master/handle-invalid-box-names
Handle box names that are URLs
2017-05-31 16:16:38 -07:00
Brian Cain f1d08aa629 (#7118) Handle box names that are URLs
Prior to this commit, if a user set a URL for the name of a box, vagrant
would not warn the user about using box_url instead. This would lead to
some difficult user experiences around the various box commands due to
the box name being a full URL. This commit introduces a warning to the
user and lets them know to instead use box_url.
2017-05-31 15:25:05 -07:00
Brian Cain eadb0ac831 Raise exception if provider doesn't have snapshot capability
Prior to this commit, if a user attempted to use the `vagrant snapshot
save` or `vagrant snapshot list` commands on a vm whose provider did not
support snapshots, it would simply print a warning. This commit changes
that behavior by instead raising an error.
2017-05-26 15:22:25 -07:00
Brian Cain 6ddba4f7b3 (#7810) Enforce unique snapshot names
Prior to this commit, the vagrant snapshot plugin would save snapshots
with existing names which lead to duplicate snapshot names being saved.
This commit fixes that by checking to see if the given snapshot name
already exists and if so, fails telling the user the given snapshot name
already exists. If a user passes a --force flag, vagrant will first
delete the existing snapshot, and take a new one with the given name.
2017-05-25 16:28:17 -07:00
Chris Roberts 50dd832e63 Include `Which` within Util autoloads 2017-05-12 15:00:55 -07:00
Chris Roberts 6de7c9b445 Only convert path if windows access is granted 2017-05-12 14:14:11 -07:00
Chris Roberts 3c44ce9742 Support vbox provider within WSL rootfs. Make Windows access easier.
Enables proper setup of VMs started from within WSL rootfs paths. Updates
setup for Windows access when working within the WSL to auto-detect settings
instead of relying on user defined environment variables.
2017-05-12 13:11:53 -07:00
Chris Roberts 10cb43b917 Use helper module to silence warnings 2017-05-08 17:03:38 -07:00
Chris Roberts 328d1aa8af Disable verbose output accessing PATH 2017-05-08 15:22:23 -07:00
Chris Roberts e8e38a4007 Halt Vagrant if within WSL and attempting to operate out of rootfs 2017-05-08 15:21:39 -07:00
Chris Roberts 4df4f77bf6 Match WSL installed Vagrant with Windows installed Vagrant 2017-05-08 10:21:01 -07:00
Chris Roberts 83b0c87f52 Support running Vagrant within the Windows Subsystem for Linux 2017-05-08 10:21:01 -07:00
Aron Griffis 7c538b4504
Honor VAGRANT_PREFERRED_PROVIDERS in Environment#default_provider 2017-05-03 08:19:29 -04:00
Aron Griffis f256fc882f
Rewrite Environment#default_provider to be less confusing 2017-05-03 08:19:03 -04:00
Chris Roberts 78e2bb513c Merge pull request #8531 from chrisroberts/network/guest-rhel
guests/rhel: Update network configuration
2017-05-01 15:56:25 -07:00
John Rizzo 1dfc646fb3 Fixed admin test to verify that you are running in an elevated shell, not that you are in the administrators group since that is not required. 2017-05-01 15:42:06 -07:00
Chris Roberts 414184b76b guests/rhel: Update network configuration
Properly detects NetworkManager on guest as well as devices controlled
by NetworkManager. Provides configuration option to enable/disbale
NetworkManager control on devices.
2017-04-26 13:15:33 -07:00
Chris Roberts 2acded113c Retry SSH connection on Errno::ECONNABORTED
In some cases the SSH connection may be aborted while waiting
for setup. This includes aborted connections in the list of
applicable exceptions to retry on while waiting for the connection
to become available.

Fixes #8520
2017-04-25 13:38:24 -07:00
Hans Van Broeckhoven 81553263ab Update is_port_open.rb
Solves https://github.com/mitchellh/vagrant/issues/3031 (again)
2017-04-24 20:09:32 +02:00
Chris Roberts a8b2f78f59 Do not prefix Windows paths if UNC prefix already exists
While VirtualBox has commented that they do not support UNC remote
paths (but do for long paths) it seems that remote paths can work.
If user provides UNC path, allow it to be used as-is.

Fixes #7011
2017-04-20 16:33:38 -07:00
Chris Roberts 60187f2b17 Merge pull request #8503 from chrisroberts/fix/box-add-spaces
Unescape url to provide actual local path when adding box
2017-04-20 16:10:01 -07:00
Chris Roberts 7d1c77f523 Unescape url to provide actual local path when adding box
Fixes #6825
2017-04-20 15:37:08 -07:00
Chris Roberts 82ca8f8058 Support port checker methods which only accept the host port
When calling the port_checker an arity check is done to determine
if the helper accepts the host_ip and host_port or only the host_port.

Fixes #8423
2017-04-19 10:49:27 -07:00
Chris Roberts 4d0ecc14f7 Merge pull request #7797 from lukebakken/features/lrb/better-windows-admin-detection
Improve user permission detection on Windows
2017-04-17 14:37:43 -07:00
Chris Roberts 6aafe3255a Force wrappers to be generated to prevent invalid version parsing 2017-04-06 16:52:10 -07:00
Chris Roberts df069deac0 Validate plugin sources and report errors if detected. 2017-04-04 17:53:04 -07:00
Chris Roberts bfc2af4cf9 Always provide timeout on thread join to prevent deadlock errors 2017-03-27 12:58:39 -07:00
Chris Roberts 2f4181bad8 Merge pull request #8401 from chrisroberts/bundler/prevent-source-paths
Prevent adding local paths to RubyGems sources list
2017-03-23 09:46:08 -07:00
Chris Roberts 127d627218 Merge pull request #8400 from chrisroberts/plugins/warn-on-load-fail
Warn when failing to require plugin instead of hard failure
2017-03-23 09:44:32 -07:00
Chris Roberts 052ff53642 Merge pull request #8399 from chrisroberts/fix/port-check
Use 127.0.0.1 for host IP when unset and 0.0.0.0 is not available
2017-03-23 09:37:33 -07:00
Chris Roberts 154c3be0d4 Join command with given arguments before running exec
This resolves issues where directly passing arguments individually
to Kernel.exec causes encoding errors due to arguments being forced
command/shell encoding which is not always correct.
2017-03-23 09:19:26 -07:00
Chris Roberts c555e4b72f Remove subprocess command string re-encoding to default external 2017-03-23 09:16:27 -07:00
Chris Roberts 564ed7456d Warn when failing to require plugin instead of hard failure 2017-03-22 16:40:42 -07:00
Chris Roberts 354c1c2b51 Prevent adding local paths to RubyGems sources list 2017-03-22 16:36:42 -07:00
Chris Roberts 5cd95b684f Use 127.0.0.1 for host IP when unset and 0.0.0.0 is not available 2017-03-22 16:31:46 -07:00
Chris Roberts 72d0eb497d Isolate push deprecation to atlas strategy only 2017-03-21 15:08:17 -07:00
Chris Roberts eed7b859ca Fix provision action for provisioners set to never.
This updates the behavior of the provision action to never run a provisioner
that is specified to "never" run unless it has been explicitly requested. Also
adds test coverage to the provision action.
2017-03-13 13:53:31 -07:00
Chris Roberts 334e4f5d9d Convert type for other provider compatibility 2017-03-09 10:28:41 -08:00
Chris Roberts 9d1ec938ef Merge pull request #8341 from chrisroberts/enhancement/prerelease
Support spec prerelease matching
2017-03-07 15:02:17 -08:00
Chris Roberts c03ca851b1 Merge pull request #8327 from chrisroberts/plugins/local-path
Force path as preferred source on local install
2017-03-07 15:00:39 -08:00
Chris Roberts 7610ecfcba Allow prerelease matches on vagrant spec when running instance is prerelease 2017-03-07 10:36:35 -08:00
Chris Roberts abf38106c0 Add shared helper method to detect if running version is prerelease 2017-03-07 10:36:14 -08:00
Chris Roberts 009ca94167 Sort result of BoxCollection#all 2017-03-06 08:19:02 -08:00
Chris Roberts 10cd188688 Merge pull request #7956 from phyber/early_box_version_sort
Fix box sorting in box_collection
2017-03-03 16:32:01 -08:00
Chris Roberts 6d3ab39b27 Merge pull request #7035 from pravinchandar/4608
Fix for #4608: Support for port forwarding in an IP aliased environment
2017-03-03 15:57:04 -08:00
Chris Roberts 96204383c7 Force path as preferred source on local install 2017-03-03 09:12:44 -08:00
Chris Roberts 86af6501ed Remove installer set push from default source push 2017-02-24 08:02:22 -08:00
Chris Roberts e2acb5250a Add command deprecation helper module 2017-02-24 06:22:39 -08:00
Chris Roberts ccdccf06b5 Merge pull request #8194 from chrisroberts/fix/curl-credentials
Scrub credentials from box URLs
2017-02-23 13:51:47 -08:00
Chris Roberts 74438cc495 Merge pull request #8196 from chrisroberts/fix/expand-vagrantfile-path
Allow VAGRANT_DOTFILE_PATH to be expanded as expected.
2017-02-23 13:33:07 -08:00
Chris Roberts fe055d57da Merge pull request #8273 from chrisroberts/bundler/remote-source
Prefer given source if available when installing plugin
2017-02-22 11:48:19 -08:00
Chris Roberts 088829de9b Merge pull request #8270 from chrisroberts/enhancement/process-stop
Add new methods to Subprocess
2017-02-16 13:45:25 -08:00
Chris Roberts 70cacb27fa Prefer given source if available when installing plugin 2017-02-09 17:22:48 -08:00
Chris Roberts 6a4d41d0c9 Merge pull request #8252 from nsidc/fix-install-local-pre
Add gem_version to plugin_info for local installs
2017-02-09 09:48:54 -08:00
Chris Roberts e7e24ee853 Merge pull request #8248 from chrisroberts/fix/env-gems-path
Fix environment gems_path location
2017-02-08 14:18:41 -08:00
Chris Roberts 903428e569 Add Util::Subprocess#stop and Util::Subprocess#running? 2017-02-08 14:15:47 -08:00
Michael Brandt be63ace50f Add gem_version to plugin_info for local installs 2017-02-02 17:58:29 -07:00
Chris Roberts 0a6d985f89 Merge pull request #8191 from chrisroberts/plugins/ext-dir
Set base directory to parent directory within plugin specs
2017-02-01 13:12:27 -08:00
Chris Roberts 959bdada82 Fix environment gems_path location 2017-02-01 12:43:16 -08:00
Chris Roberts 25a2bdd279 Prevent generating environment variables with invalid empty names 2017-01-12 15:12:41 -08:00
Chris Roberts 832c62f2aa Allow VAGRANT_DOTFILE_PATH to be expanded as expected.
This allows custom paths that include special characters like `~`
to be properly expanded instead of resulting in joined root path
with special characters included.
2017-01-12 14:01:25 -08:00
Chris Roberts a055978d74 Scrub credentials from box URLs 2017-01-12 13:24:46 -08:00
Chris Roberts df00edf1a7 Set base directory to parent directory within plugin specs
This adjustment allows for extensions to be properly discovered after
plugin gem specifications have been activated.
2017-01-06 12:55:13 -08:00
Chris Roberts 23c41f4461 Merge pull request #7867 from bbrala/hyperv-package
Package Hyper-V boxes
2016-12-07 13:37:47 -08:00
Chris Roberts 23b4421309 Merge pull request #8094 from chrisroberts/bundler/env
Remove direct bundler usage within Env util
2016-12-07 06:56:01 -08:00
Chris Roberts c20e160295 Remove direct bundler usage within Env util 2016-12-07 06:00:56 -08:00
Chris Roberts c8d564e578 Prevent interaction when removing plugin gems 2016-12-06 07:07:52 -08:00
Chris Roberts 5b1b18d01a Merge pull request #8068 from chrisroberts/bundler/install-solution-act
Detect load failure within solution set and retry if found
2016-12-05 13:28:58 -08:00
Chris Roberts 3dccd82a39 Explicitly require name_tuple
This does not get automatically loaded before usage so ensure
it is properly loaded for plugin usage.
2016-12-05 09:35:02 -08:00
Chris Roberts ce35611c34 Detect load failure within solution set and retry if found
Installation solution sets in 2.2.5 can end up out of order (not seen
in 2.3.1) causing LoadErrors when the specification is in the solution
set during validation. This detects the missing spec within the solution
and if found will move spec to the start of the solution set and retry
solution activation.
2016-12-01 08:15:04 -08:00
Chris Roberts 9717432920 Add logger output when plugin loading is disabled 2016-11-28 16:55:38 -08:00
Chris Roberts f1e623976b Do not include default specifications within dependencies 2016-11-28 16:54:59 -08:00
Chris Roberts d87cf25ed2 Display original exception and backtraces in logger output 2016-11-28 07:48:16 -08:00
Chris Roberts 2cc4b82198 Only read default specifications directory when within bundler context 2016-11-22 08:26:43 -08:00
Chris Roberts a51949933f Always apply builtin constraints within dependency restrictions
Include detection of running context (within Bundler or not) and
load the "buitin" gems based on that context.
2016-11-22 07:53:19 -08:00
Chris Roberts 53b9f1747c Allow plugin_init_error to provide all information. Include final reset on specifications. 2016-11-17 16:40:51 -08:00
Chris Roberts 818f7acb7b Provide better internal consistency of installed plugin gems.
Refactors reusable actions into isolated methods. Supports installation/removal
without activation to prevent unintended conflicts during upgrades and cleanup.
Introduced custom resolver set to handle multiple installed versions of gems
which enables proper cleanup.
2016-11-16 13:26:13 -08:00