Commit Graph

3275 Commits

Author SHA1 Message Date
Seth Vargo 3a27c29577
Add a new util for generating tempfiles 2016-05-28 23:22:33 -04:00
Seth Vargo cee6e6c7bc
Fix file leaking in bundler 2016-05-28 17:01:59 -04:00
Christian Hofstaedtler ba77d4b533
Allow Vagrant to work with newer Rubygems
Fixes GH-7073
2016-05-27 17:19:33 -04:00
Seth Vargo efdb148f61
Move pre-flight package validation to middleware
This commit separates the scratch and output directory creation from the
main package middleware into its own PackageSetupFolders middleware.
Additionally, the validation that ensures an output file does not exist
is moved into a validation function that can be shared across multiple
methods.

This refactor permits a pre-flight check to ensure box packaging would
be successful before actually stopping the VM.

Fixes GH-7351
2016-05-27 17:07:04 -04:00
Seth Vargo 2a02ceb870
Bump box resume delay to 24h
This commit bumps the box resume delay time to 24h and makes it a
constant because I had a bugger of a time actually finding this in the
code :frowny:.

Fixes GH-7272
2016-05-27 15:18:50 -04:00
Seth Vargo bc74cb4008 Merge pull request #7158 from mitchellh/sethvargo/auth_metadata
Authenticate metadata box urls
2016-04-05 10:46:01 -04:00
Darragh Bailey 36ad4d53cf core: Multi machine use of active_machines requires locking of index
Ensure multi machine access of other machine state information through
iterating `active_machines` and retrieval of cached machines cannot
have multiple threads update the state of machines simultaneously as
this triggers a Machine Lock exception.

Machine state information retrieved from the index, returns a locked
object. Since iteration of active_machine, and retrieval of each
machine from the cache can be triggered by any plugin, it is possible
for another machine to inadvertently access the state and trigger an
update, which the thread owning the machine is currently in the process
of updating it already. This results in a Machine Locked exception
occurring if the attempt to retrieve the cached state from the index
occurs before the other thread calls release.

Partially-Fixes: #6526
2016-03-31 17:27:36 +01:00
Seth Vargo 3305764f71 Rescue Errno::ENOTCONN
Fixes GH-7182
2016-03-31 17:02:50 +02:00
Seth Vargo 42a8ed658e Authenticate metadata box urls 2016-03-19 17:05:43 -04:00
Seth Vargo 27157b5408 Merge pull request #6893 from mmickan/prerelease-version-fix
Prerelease version fix
2016-02-03 09:57:25 -05:00
Seth Vargo 1166800b65 Use SSL and HTTPS links where appropriate 2016-01-25 13:14:54 -05:00
Mark Mickan 1378eebea9 Use pristine version string when constructing path to box
Without this change, the version string may be mutated when passed through
Gem::Version.new(version).to_s before being used to construct the box
directory.  This is a problem when using prerelease version numbers because,
for example, it will look for "~/.vagrant.d/boxes/1.0.0.pre.alpha.1" when it
should be looking for "~/.vagrant.d/boxes/1.0.0-alpha.1".
2016-01-20 10:22:00 +10:30
Peter Mosmans 4b889ee641 Fix for #6761 (fixes incomplete #6598) 2015-12-30 07:56:08 +10:00
Mitchell Hashimoto cf4b03d701 core: do not convert drive letters to UNC paths [GH-6598] 2015-12-24 12:36:14 -08:00
Mitchell Hashimoto 0de44a116b core: use env var for bundle retries [GH-6705] 2015-12-24 12:16:12 -08:00
Mitchell Hashimoto 06a1461081 Merge pull request #6662 from lukebakken/fixes/lrb/gh-4503-hyper-v-admin-privs
Fix for 4503
2015-12-14 15:56:55 -08:00
Mitchell Hashimoto 884782f3ce Merge pull request #6603 from mitchellh/sethvargo/cleanup_output
Only run cleanup tasks when they are defined on the provisioner
2015-12-14 15:41:17 -08:00
Mitchell Hashimoto 739d29e8fa Merge pull request #6612 from reedloden/virtualbox-checksum
Add checksum validation for the VirtualBox installs on Windows and OS X
2015-12-14 15:39:46 -08:00
Luke Bakken 57187c9f88 Add method to detect if a Windows user is a member of the "Hyper-V Administrators" group.
Modify Hyper-V provider to require a user to either be an Administrator or a member of "Hyper-V Administrators"
2015-12-10 07:04:39 -08:00
Seth Vargo 4e21dd78e4 Ignore case when comparing checksums
Fixes GH-6648
2015-12-07 10:30:46 -05:00
Mitchell Hashimoto 30d9e243bb fix failing tests 2015-12-02 18:03:08 -08:00
Mitchell Hashimoto 5c4e71e317 core: machine output provider info for the machine 2015-12-02 13:06:07 -08:00
Mitchell Hashimoto cee517d963 core: fix machine readable UI to contain target and have proper format 2015-12-02 13:06:07 -08:00
Reed Loden 7d81728e45 Add checksum validation for the VirtualBox installs on Windows and OS X
Use Vagrant::Util::FileChecksum to validate the downloaded VirtualBox
installers.

SHA-256 checksums for VirtualBox files are available at
https://www.virtualbox.org/download/hashes/5.0.10/SHA256SUMS.

Fixes #6611.
2015-11-28 00:04:41 -08:00
Seth Vargo 64ff69c64b Only run cleanup tasks when they are defined on the provisioner
This helps with some confusion caused in GH-2538, since the output says:

> Running cleanup tasks for 'shell' provisioner...

But that's actually not true. It is running the cleanup tasks iff the 
provisioner defined a cleanup task. This commit changes the 
provisioner_cleanup middleware to only run cleanup tasks if the subclass
defines a cleanup task.

The reason we can't just check if the provisioner `respond_to?` the
`cleanup` method is because the parent provisioner base class (which 
all provisioners inherit from) defines a blank cleanup method. This is
important because it means we never risk calling an unimplemented
cleanup function, and it also helps define the public API for a 
provisioner.
2015-11-26 13:11:51 -05:00
Timur Alperovich 5b910c186c Fix the resolution of SafeEnv.
Recent change broke bundler.rb due to incorrect scope resolution (the
error is: uninitialized constant Vagrant::Bundler::SafeEnv
(NameError).
2015-11-24 12:18:50 -08:00
Seth Vargo 8c3f833e8e Use the new presence helpers in the Chef provisioner 2015-11-23 18:33:47 -05:00
Seth Vargo 4c55c39b2d Add presence helpers 2015-11-23 18:04:18 -05:00
Mitchell Hashimoto 7f93868c86 Merge pull request #6567 from mitchellh/b-prune-folders
core: remove saved synced folders not from Vagrantfile
2015-11-23 10:06:51 -08:00
Mitchell Hashimoto 21cacb6eb8 core: file:/// for windows paths [GH-5288] 2015-11-23 09:53:28 -08:00
Mitchell Hashimoto 1405395d81 core: catch EINVAL on setting env vars [GH-6017] 2015-11-23 09:39:51 -08:00
Mitchell Hashimoto 4e1ba3a027 core: fix file URLs from cygwin on Windows [GH-5747] 2015-11-23 09:30:27 -08:00
Mitchell Hashimoto 104066c678 core: assume all windows shells now have TTYs 2015-11-23 09:10:33 -08:00
Mitchell Hashimoto d5fa7416ff core: more heuristics for determining Cygwin 2015-11-21 11:17:36 -08:00
Mitchell Hashimoto c471f37955 core: parse line numbers for Vagrantfile syntax errors on Win [GH-6445] 2015-11-20 15:34:52 -08:00
Mitchell Hashimoto b6f0b498e4 core: expand Windows short paths 2015-11-20 14:49:21 -08:00
Mitchell Hashimoto 9c1b014536 core: remove saved synced folders not from Vagrantfile 2015-11-20 10:25:09 -08:00
Mitchell Hashimoto 2ade66443e core: retry bundler network calls a few times [GH-6097] 2015-11-19 23:57:16 -08:00
Mitchell Hashimoto d3ab73cf4a core: when packaging, preserve generated key [GH-5780] 2015-11-19 18:18:51 -08:00
Seth Vargo 02a351841e Use an array instead of map 2015-11-19 16:32:43 -08:00
Eli Skeggs 2b9173e15a Support environment variable forwarding, fixes #4131
Signed-off-by: Eli Skeggs <eskeggs@globesherpa.com>
2015-11-19 16:25:54 -08:00
Mitchell Hashimoto 1ccd91aada Merge pull request #4473 from rtkrruvinskiy/https_metadata
Add HTTPS download options to `box update` and `box outdated`
2015-11-19 16:16:48 -08:00
Mitchell Hashimoto e0ef592544 core: retry if server doesn't support byte ranges on download [GH-4479] 2015-11-19 16:14:13 -08:00
Mitchell Hashimoto c541767949 core: add tests for box collection cleanup [GH-6002] 2015-11-19 15:59:58 -08:00
Mitchell Hashimoto ed9bc1e847 Merge branch '3570-box-data-left' of https://github.com/ievgenp/vagrant into ievgenp-3570-box-data-left 2015-11-19 15:45:47 -08:00
Seth Vargo eac1960d45 Fix some Ruby 2015-11-19 10:25:32 -08:00
Mitchell Hashimoto 2ffbe4e6e1 core: more robust WIndows admin check [GH-5616] 2015-11-18 20:27:07 -08:00
Mitchell Hashimoto be29915bed Merge pull request #6542 from mitchellh/b-dotfile
core: don't make dotfile path if no Vagrantfile
2015-11-18 18:10:19 -08:00
Mitchell Hashimoto 079ee6ea95 Merge pull request #6540 from mitchellh/b-non-http-head
core: don't do HEAD request for box on non-HTTP [GH-5477]
2015-11-18 18:09:31 -08:00
Mitchell Hashimoto 7c9fd58786 core: log if not checking box metadata 2015-11-18 18:09:18 -08:00
Mitchell Hashimoto 646414b347 core: don't make dotfile path if no Vagrantfile 2015-11-18 17:48:24 -08:00
Mitchell Hashimoto 7c49fd1418 core: fix crash on invalid checksum type [GH-6327] 2015-11-18 17:36:52 -08:00
Mitchell Hashimoto 891c47c742 core: don't do HEAD request for box on non-HTTP [GH-5477] 2015-11-18 16:52:40 -08:00
Mitchell Hashimoto 1a7937ed50 core: don't replace insecure key on base package [GH-5310] 2015-11-18 16:25:07 -08:00
Mitchell Hashimoto 0ce636d1a3 core: avoid locking in trap context 2015-11-18 16:07:49 -08:00
Mitchell Hashimoto 85f1e05e2a core: prune machine if non-existent CWD from index [GH-4742] 2015-11-18 15:48:59 -08:00
Mitchell Hashimoto 9ce26393bb Merge pull request #6479 from legal90/fix-fp-collision-handling
Bugfix: Remove redundant app call from action "handle_forwarded_port_collisions"
2015-11-18 15:13:40 -08:00
Mitchell Hashimoto 9e1a119a4b Merge pull request #6475 from nikelmwann/linux-host-use-xfreerdp
Prefer xfreerdp for RDP connections on Linux hosts.
2015-11-18 15:12:47 -08:00
Mitchell Hashimoto cccdb87388 Merge pull request #6407 from josephfrazier/patch-1
handle_forwarded_port_collisions.rb: fix typo: "Reparied" -> "Repaired"
2015-11-18 14:38:03 -08:00
Mitchell Hashimoto d69d7047b2 Merge pull request #6386 from legal90/fix-osx-nic-order
Fix network configuration in OS X (Darwin) guests
2015-11-18 14:33:51 -08:00
Mitchell Hashimoto 946d2fe154 Merge pull request #4738 from robkinyon/skip_default_sources
Added a --plugin-clean-sources parameter
2015-11-18 11:20:34 -08:00
Austin Schutz 96e4544949 use env.ui for action logging 2015-11-18 11:15:02 -08:00
Austin Schutz 566e21d3fc add machine readable logging, action starts/ends 2015-11-18 11:15:02 -08:00
Gilles Cornu c6ef73a6fa Merge 'gildegoma/2103-ansible-local-v2'
Resolve conflict in CHANGELOG.md
2015-11-10 23:05:29 +01:00
Christian Berendt 3f4a372d57 Remove all available versions of a box
This patch introduces a new parameter --all for the remove
command of the box plugin. Setting this parameter will remove
all available versions of a specific box.

Example usage:

```
$ vagrant box list
ubuntu/trusty64 (virtualbox, 20150427.0.0)
ubuntu/trusty64 (virtualbox, 20150430.0.0)
ubuntu/trusty64 (virtualbox, 20150506.0.0)
```

```
$ vagrant box remove ubuntu/trusty64
You requested to remove the box 'ubuntu/trusty64' with provider
'virtualbox'. This box has multiple versions. You must
explicitly specify which version you want to remove with
the `--box-version` flag. The available versions for this
box are:

 * 20150427.0.0
 * 20150430.0.0
 * 20150506.0.0
```

With the --all parameter it is possible to remove all versions at once.

```
$ vagrant box remove --all ubuntu/trusty64
Removing box 'ubuntu/trusty64' (v20150506.0.0) with provider 'virtualbox'...
Removing box 'ubuntu/trusty64' (v20150430.0.0) with provider 'virtualbox'...
Removing box 'ubuntu/trusty64' (v20150427.0.0) with provider 'virtualbox'...
```
2015-11-09 09:32:18 +00:00
Gilles Cornu 9bfdaf7e75 provisioners/ansible: introduce ansible_local
With this change, the existing host-based Ansible provisioner is
refactored to share a maximum of code with this new guest-based Ansible
provisioner.

At this stage of development, the existing unit tests are intentionally
modified as little as possible, to keep safe the existing funtionalities.

Other issues resolved by this changeset:
 - Display a warning when running from a Windows host [GH-5292]
 - Do not run `ansible-playbook` in verbose mode when the `verbose` option
   is set to an empty string.
2015-11-08 10:42:48 +01:00
Mitchell Hashimoto baea923e9c commands/up: automatically install providers 2015-11-05 13:58:15 -08:00
Mitchell Hashimoto 69d9bc0fe8 Environment can_install_provider and install_provider 2015-11-05 11:50:10 -08:00
Mitchell Hashimoto dad5962ebb hosts/darwin: support virtualbox install 2015-11-04 15:47:56 -08:00
Mitchell Hashimoto d4ddb3c2f3 commands/provider 2015-11-04 14:20:48 -08:00
Mikhail Zholobov c60e116121 Remove redundant app call from action "handle_forwarded_port_collisions"
This call should not be in the `handle` helper method. It is specified in the `call` method already.
2015-11-03 17:16:31 +02:00
Eric Winkelmann e687f81fce Re-word Linux RDP error to include `xfreerdp`.
Changed the name of the error LinuxRDesktopNotFound to
LinuxRDPClientNotFound and re-worded error text in
templates/locales/en.yml to include `xfreerdp` when listing supported
RDP clients.
2015-11-02 23:42:01 -08:00
Mitchell Hashimoto 32e981ce7c core: machine-readable output should include standard UI output
As a "ui" type
2015-10-26 18:10:26 -07:00
Joseph Frazier a59dc04b69 handle_forwarded_port_collisions.rb: fix typo: "Reparied" -> "Repaired" 2015-10-17 19:42:58 -04:00
Mitchell Hashimoto c17efbed75 core: ignore VAGRANT_DOTFILE_PATH if a child environment
This causes issues since the child environment almost certainly doesn't
share data with the parent. In a larger scope, we should find a way to
encode the data path somehow on `vagrant up`.
2015-10-16 10:28:30 -07:00
Mikhail Zholobov f930fa94af Move "cant_read_mac_addresses" error to the global space
Now it is used not only by Windows, but by Darwin guests as well.
2015-10-09 14:57:41 +03:00
Mitchell Hashimoto 36cfc77167 providers/virtualbox: make prepare clone a core thing 2015-10-08 16:02:37 -04:00
Mitchell Hashimoto f0ddac8c9a providers/virtualbox: clone 2015-10-08 12:33:55 -04:00
Mitchell Hashimoto 9e371277a9 core: IsEnvSet remove invert opt 2015-10-08 10:38:18 -04:00
Mitchell Hashimoto ed4df21c85 commands/snapshot: push and pop 2015-10-07 22:52:27 -04:00
Mitchell Hashimoto 2c936b2e37 providers/virtualbox: tidying up the linked clone feature 2015-10-06 14:11:41 -04:00
Mitchell Hashimoto d519d927fa Merge branch 'VB-linked-clone-support' of https://github.com/mpoeter/vagrant into mpoeter-VB-linked-clone-support 2015-10-06 13:50:34 -04:00
Mitchell Hashimoto ec0b0fb7f9 providers/virtualbox: IPv6 host only networks 2015-09-30 17:23:25 -07:00
Sam Phippen eeb750cd33 Catch encoding problems with sources provided to Vagrant::Config::Loader#set
Here we implement a naive solution to #5605 which catches the case that
a provided source contains an object which cannot be inspected, because
an object contained within in has an #inspect string that returns a
string that is incompatible with the encoding in
`Encoding.default_external` or a string which cannot be downcast to
7-bit ascii.

The Ruby VM implementation of "#inspect" implements this checking on
these lines of code: http://git.io/vZYNS. A Ruby level override of
this method does not cause this problem. For example:

```ruby
class Foo
  def inspect
    "😍".encode("UTF-16LE")
  end
```

will not cause the problem, because that's a Ruby implementation and the
VM's checks don't occur.

However, if we have an Object which **does** use the VM implementation
of inspect, that contains an object that has an inspect string which
returns non-ascii, we encounter the bug. For example:

```ruby
class Bar
  def inspect
    "😍".encode("UTF-16LE")
  end
end

class Foo
  def initialize
     @bar = Bar.new
  end
end

Foo.new.inspect
```

Will cause the issue.

The solution this patch provides basically catches the encoding error
and inserts a string which attempts to help the user work out which
object was provided without blowing up. Most likely, this was caused
by a user having a weird encoding coming out of one of the sources
passed in, but without a full repro case, it's not clear whether a patch
should be applied to a different object in the system.

Closes #5605.
2015-09-08 17:30:50 +01:00
Seth Vargo d64d229c0f Merge pull request #5928 from mitchellh/sethvargo/ssh_exec_run_command
Use the same ssh args for ssh with a command as ssh exec
2015-07-27 11:02:36 -04:00
Seth Vargo d88d126ad9 Use a properly-formatted custom User-Agent 2015-07-20 23:33:31 -04:00
Ievgen Prokhorenko 562ed26533 Fix #3570 'Box data left in ~/.vagrant.d/boxes after removal' 2015-07-19 16:44:38 +03:00
Manuel Pöter f4d1d068f9 Merge branch 'master' into VB-linked-clone-support 2015-07-13 10:56:17 +02:00
Mitchell Hashimoto dec5f70a1e core: fix jailbreaking of plugins
/cc @sethvargo
2015-07-10 15:34:59 -06:00
Seth Vargo fc1d2c29be Use the same ssh args for ssh with a command as ssh exec 2015-07-10 13:55:00 -06:00
Gilles Cornu faeb8a9440 core: plugin management requires bundler
With this change, the `Vagrant::plugins_enabled?` is now false when the
embedded Bundler is not available.

Resolve the broken RSpec unit tests after
479323f1e8.
2015-07-10 13:37:33 +02:00
Mitchell Hashimoto 479323f1e8 for newer versions of Bundler, store the runtime 2015-07-09 22:12:47 -06:00
Seth Vargo fafa3fa437 Add another log statement 2015-07-09 16:06:03 -06:00
Seth Vargo 68ef9676c7 Jailbreak out of the subprocess and restore original environment 2015-07-09 16:06:03 -06:00
Seth Vargo 46563560f4 Update with_clean_env helpers 2015-07-09 16:06:02 -06:00
Seth Vargo 50a64ea30b Add a log statement 2015-07-09 16:06:02 -06:00
Seth Vargo 0a5d37fc8b Reset the original environment if we are running something outside of the installer 2015-07-09 16:06:02 -06:00
Mitchell Hashimoto cea44847de Merge branch 'filter_synced_folders' of https://github.com/maxlinc/vagrant into maxlinc-filter_synced_folders 2015-07-09 15:05:52 -06:00
Mitchell Hashimoto b0b9f67faf Merge pull request #5514 from MiLk/fixes/several-boxes-same-name
Allow to use several boxes with the same name
2015-07-09 15:00:03 -06:00
Mitchell Hashimoto b3e935203e remove unuse dline 2015-07-09 14:25:10 -06:00