vagrant-hosts 2.8.0 → 2.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +14 -8
- data/CHANGELOG +24 -0
- data/Gemfile +20 -7
- data/lib/vagrant-hosts/action/version_check.rb +25 -0
- data/lib/vagrant-hosts/addresses.rb +36 -7
- data/lib/vagrant-hosts/plugin.rb +8 -2
- data/lib/vagrant-hosts/version.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/unit/addresses_spec.rb +21 -0
- data/templates/locales/en.yml +18 -1
- data/vagrant-hosts.gemspec +3 -3
- metadata +10 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b3e9f58247879332b3031dceff8009a6e305642a
|
4
|
+
data.tar.gz: fdc56fdde18bceb36882a38c6a2511c238399806
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ed4b370ea69eb8192194357ccfd5dd2d8ff62faf8fa8e1683c53ba15aabfa4870d77d7635c36b110b728810318b6ebc8e248404153b9ade8b6684c8c063fbc0
|
7
|
+
data.tar.gz: 2250d47993c1bb57f64b6b8427a22b5e231835f8167454fc0c0b753f9f03c7c898257155b7d91622222c9010061e20bae35968f75ba03201f9f18c10ede06c28
|
data/.travis.yml
CHANGED
@@ -2,6 +2,12 @@
|
|
2
2
|
language: ruby
|
3
3
|
sudo: false
|
4
4
|
before_install:
|
5
|
+
# TODO: Remove along with all BUNDLER_VERSION hackery once support for
|
6
|
+
# Vagrant < 1.9 is dropped.
|
7
|
+
#
|
8
|
+
# Travis has taken to installing Bundler as a "default" gem which locks
|
9
|
+
# it down and makes it extremely frustrating to use a different version.
|
10
|
+
- "find /home/travis/.rvm/rubies -wholename '*default/bundler-*.gemspec' -delete"
|
5
11
|
- gem install bundler --version $BUNDLER_VERSION
|
6
12
|
install: bundle _${BUNDLER_VERSION}_ install --without development
|
7
13
|
script: bundle _${BUNDLER_VERSION}_ exec rspec --color --format documentation
|
@@ -14,13 +20,13 @@ env:
|
|
14
20
|
|
15
21
|
matrix:
|
16
22
|
include:
|
17
|
-
- rvm: 2.0.0
|
18
|
-
env: TEST_VAGRANT_VERSION=v1.6.5 BUNDLER_VERSION=1.6.9
|
19
23
|
- rvm: 2.0.0
|
20
24
|
env: TEST_VAGRANT_VERSION=v1.7.4 BUNDLER_VERSION=1.10.5
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
- rvm: 2.2.5
|
26
|
+
env: TEST_VAGRANT_VERSION=v1.8.7 BUNDLER_VERSION=1.12.5
|
27
|
+
- rvm: 2.3.4
|
28
|
+
env: TEST_VAGRANT_VERSION=v1.9.8 BUNDLER_VERSION=1.16.1
|
29
|
+
- rvm: 2.4.4
|
30
|
+
env: TEST_VAGRANT_VERSION=v2.0.4 BUNDLER_VERSION=1.16.1
|
31
|
+
- rvm: 2.4.4
|
32
|
+
env: TEST_VAGRANT_VERSION=HEAD BUNDLER_VERSION=1.16.1
|
data/CHANGELOG
CHANGED
@@ -1,6 +1,30 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
3
|
|
4
|
+
2.8.1
|
5
|
+
-----
|
6
|
+
|
7
|
+
2018-05-02
|
8
|
+
|
9
|
+
This is a backwards compatible bugfix release.
|
10
|
+
|
11
|
+
* Added test coverage for Vagrant 1.9 and 2.0
|
12
|
+
|
13
|
+
* Deprecated support for vagrant versions earlier than 1.8. These will be
|
14
|
+
removed in the next major release.
|
15
|
+
|
16
|
+
* Hostnames are now resolved to IP addresses using the Addrinfo library
|
17
|
+
which wraps the system resolver. Previously the Resolv library was used
|
18
|
+
which is a pure-Ruby DNS resolver that did not pick up system-specific
|
19
|
+
configuration or behavior.
|
20
|
+
|
21
|
+
* Host synchronization is supported for FreeBSD, thanks to Brian Shumate.
|
22
|
+
|
23
|
+
* Errors that occur during host sync are now trapped and logged. This
|
24
|
+
means that an unreachable host will no longer block other operations
|
25
|
+
like `vagrant destroy`.
|
26
|
+
|
27
|
+
|
4
28
|
2.8.0
|
5
29
|
-----
|
6
30
|
|
data/Gemfile
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
+
require 'rubygems/version'
|
2
3
|
|
3
|
-
ENV['TEST_VAGRANT_VERSION']
|
4
|
+
vagrant_branch = ENV['TEST_VAGRANT_VERSION'] || 'v2.0.4'
|
5
|
+
vagrant_version = nil
|
4
6
|
|
5
7
|
# Wrapping gemspec in the :plugins group causes Vagrant 1.5 and newer to
|
6
8
|
# automagically load this plugin during acceptance tests.
|
@@ -9,19 +11,30 @@ group :plugins do
|
|
9
11
|
end
|
10
12
|
|
11
13
|
group :development do
|
12
|
-
gem 'yard', '~> 0.
|
14
|
+
gem 'yard', '~> 0.9.11'
|
13
15
|
gem 'redcarpet'
|
14
16
|
end
|
15
17
|
|
16
18
|
group :test do
|
17
|
-
|
18
|
-
|
19
|
+
case vagrant_branch
|
20
|
+
when /head/i
|
21
|
+
gem 'vagrant', :git => 'https://github.com/hashicorp/vagrant.git',
|
22
|
+
:branch => 'master'
|
19
23
|
else
|
20
|
-
|
24
|
+
vagrant_version = Gem::Version.new(vagrant_branch.sub(/^v/, ''))
|
25
|
+
gem 'vagrant', :git => 'https://github.com/hashicorp/vagrant.git',
|
26
|
+
:tag => vagrant_branch
|
21
27
|
end
|
22
28
|
|
23
|
-
|
24
|
-
|
29
|
+
if vagrant_branch.match(/head/i) || (vagrant_version > Gem::Version.new('1.9.3'))
|
30
|
+
# Pinned on 4/11/2017. Compatible with Vagrant > 1.9.3.
|
31
|
+
gem 'vagrant-spec', :git => 'https://github.com/hashicorp/vagrant-spec.git',
|
32
|
+
:ref => '1d09951'
|
33
|
+
elsif vagrant_version
|
34
|
+
# Pinned on 12/10/2014. Compatible with Vagrant 1.6.x -- 1.9.3.
|
35
|
+
gem 'vagrant-spec', :git => 'https://github.com/hashicorp/vagrant-spec.git',
|
36
|
+
:ref => '1df5a3a'
|
37
|
+
end
|
25
38
|
end
|
26
39
|
|
27
40
|
eval_gemfile "#{__FILE__}.local" if File.exists? "#{__FILE__}.local"
|
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'vagrant/version'
|
2
|
+
require 'rubygems/version'
|
3
|
+
|
4
|
+
# Check for deprecated Vagrant versions
|
5
|
+
module VagrantHosts::Action
|
6
|
+
class VersionCheck
|
7
|
+
MINIMUM_VERSION = '1.8.0'
|
8
|
+
|
9
|
+
def initialize(app, env)
|
10
|
+
@app = app
|
11
|
+
end
|
12
|
+
|
13
|
+
def call(env)
|
14
|
+
unless Gem::Version.new(Vagrant::VERSION) > Gem::Version.new(MINIMUM_VERSION)
|
15
|
+
env[:env].ui.warn I18n.t(
|
16
|
+
'vagrant_hosts.action.version_check.deprecated_vagrant_version',
|
17
|
+
minimum_version: MINIMUM_VERSION,
|
18
|
+
vagrant_version: Vagrant::VERSION
|
19
|
+
)
|
20
|
+
end
|
21
|
+
|
22
|
+
@app.call(env)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -1,5 +1,7 @@
|
|
1
|
-
require 'resolv'
|
2
1
|
require 'ipaddr'
|
2
|
+
require 'socket' # For Addrinfo
|
3
|
+
|
4
|
+
require 'vagrant/errors'
|
3
5
|
|
4
6
|
module VagrantHosts::Addresses
|
5
7
|
|
@@ -11,6 +13,10 @@ module VagrantHosts::Addresses
|
|
11
13
|
# @since 2.7.0
|
12
14
|
CACHE ||= {}
|
13
15
|
|
16
|
+
class UnresolvableHostname < ::Vagrant::Errors::VagrantError
|
17
|
+
error_key(:unresolvable_hostname, 'vagrant_hosts.errors')
|
18
|
+
end
|
19
|
+
|
14
20
|
private
|
15
21
|
|
16
22
|
def all_hosts(config)
|
@@ -92,7 +98,16 @@ module VagrantHosts::Addresses
|
|
92
98
|
host_provisioners(m).each do |p|
|
93
99
|
imports.each do |k|
|
94
100
|
next unless p.config.exports.has_key?(k)
|
95
|
-
|
101
|
+
begin
|
102
|
+
hosts.concat resolve_host_entries(p.config.exports[k], m)
|
103
|
+
rescue Vagrant::Errors::VagrantError => e
|
104
|
+
machine.ui.error I18n.t(
|
105
|
+
'vagrant_hosts.errors.collection_failed',
|
106
|
+
:host => m.name.to_s,
|
107
|
+
:error_class => e.class,
|
108
|
+
:message => e.message
|
109
|
+
)
|
110
|
+
end
|
96
111
|
end
|
97
112
|
end
|
98
113
|
end
|
@@ -184,9 +199,8 @@ module VagrantHosts::Addresses
|
|
184
199
|
#
|
185
200
|
# @param address [String] A string that might be an IP address or a hostname.
|
186
201
|
#
|
187
|
-
# @raise [
|
188
|
-
#
|
189
|
-
# @raise [Resolv::ResolvError] When a hostname cannot be resolved to an IP.
|
202
|
+
# @raise [VagrantHosts::Addresses::UnresolvableHostname] If `address` is a
|
203
|
+
# maformed IP address or unresolvable hostname.
|
190
204
|
#
|
191
205
|
# @return [IPAddr] An IP address.
|
192
206
|
#
|
@@ -195,8 +209,23 @@ module VagrantHosts::Addresses
|
|
195
209
|
ip = begin
|
196
210
|
IPAddr.new(address)
|
197
211
|
rescue IPAddr::InvalidAddressError
|
198
|
-
|
199
|
-
|
212
|
+
nil
|
213
|
+
end
|
214
|
+
|
215
|
+
ip ||= begin
|
216
|
+
# Wasn't an IP address. Resolve it. The "@vagrant_ssh" returns a
|
217
|
+
# hostname instead of IP when the AWS provider is in use.
|
218
|
+
#
|
219
|
+
# NOTE: Name resolution is done using Ruby's Addrinfo instead of Resolv
|
220
|
+
# as Addrinfo always uses the system resolver library and thus picks up
|
221
|
+
# platform-specific behavior such as the OS X /etc/resolver/ directory.
|
222
|
+
IPAddr.new(Addrinfo.ip(address).ip_address)
|
223
|
+
rescue IPAddr::InvalidAddressError, SocketError
|
224
|
+
nil
|
225
|
+
end
|
226
|
+
|
227
|
+
if ip.nil?
|
228
|
+
raise UnresolvableHostname, address: address
|
200
229
|
end
|
201
230
|
|
202
231
|
ip
|
data/lib/vagrant-hosts/plugin.rb
CHANGED
@@ -22,7 +22,7 @@ class VagrantHosts::Plugin < Vagrant.plugin(2)
|
|
22
22
|
|
23
23
|
# Guest capabilities for vagrant-hosts
|
24
24
|
|
25
|
-
[:darwin, :linux, :solaris, :solaris11].each do |os|
|
25
|
+
[:darwin, :freebsd, :linux, :solaris, :solaris11].each do |os|
|
26
26
|
guest_capability(os, 'sync_hosts') do
|
27
27
|
require_relative 'cap'
|
28
28
|
VagrantHosts::Cap::SyncHosts::POSIX
|
@@ -35,7 +35,7 @@ class VagrantHosts::Plugin < Vagrant.plugin(2)
|
|
35
35
|
end
|
36
36
|
|
37
37
|
|
38
|
-
[:darwin, :linux, :solaris, :solaris11].each do |os|
|
38
|
+
[:darwin, :freebsd, :linux, :solaris, :solaris11].each do |os|
|
39
39
|
guest_capability(os, 'network_facts') do
|
40
40
|
require_relative 'cap'
|
41
41
|
VagrantHosts::Cap::Facts::POSIX
|
@@ -52,6 +52,12 @@ class VagrantHosts::Plugin < Vagrant.plugin(2)
|
|
52
52
|
VagrantHosts::Command
|
53
53
|
end
|
54
54
|
|
55
|
+
# Internal action hooks
|
56
|
+
action_hook('Vagrant Hosts: vagrant version check', :environment_load) do |hook|
|
57
|
+
require 'vagrant-hosts/action/version_check'
|
58
|
+
hook.prepend VagrantHosts::Action::VersionCheck
|
59
|
+
end
|
60
|
+
|
55
61
|
# ConfigBuilder tie-ins
|
56
62
|
|
57
63
|
def self.config_builder_hook
|
data/spec/spec_helper.rb
CHANGED
@@ -3,6 +3,7 @@ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
|
|
3
3
|
# Disable Vagrant autoloading so that other plugins defined in the Gemfile for
|
4
4
|
# Acceptance tests are not loaded.
|
5
5
|
ENV['VAGRANT_NO_PLUGINS'] = '1'
|
6
|
+
ENV['VAGRANT_DISABLE_PLUGIN_INIT'] = '1'
|
6
7
|
|
7
8
|
# Load the vagrant-hosts plugin so that Provisioners and such can be found.
|
8
9
|
require 'vagrant-hosts'
|
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
require 'vagrant-hosts/addresses'
|
4
|
+
|
5
|
+
describe 'VagrantHosts::Addresses' do
|
6
|
+
subject do
|
7
|
+
# A simple class which simulates inclusion of VagrantHosts::Addresses
|
8
|
+
Class.new do
|
9
|
+
include VagrantHosts::Addresses
|
10
|
+
# Expose private methods included above for testing.
|
11
|
+
public *self.private_instance_methods
|
12
|
+
end.new
|
13
|
+
end
|
14
|
+
|
15
|
+
describe '#resolve_ip' do
|
16
|
+
it 'raises an error when passed an unresolvable hostname' do
|
17
|
+
expect{ subject.resolve_ip('somewhere.bogusdomain') }.to \
|
18
|
+
raise_error(VagrantHosts::Addresses::UnresolvableHostname, /somewhere.bogusdomain/)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
data/templates/locales/en.yml
CHANGED
@@ -1,3 +1,20 @@
|
|
1
1
|
---
|
2
2
|
en:
|
3
|
-
vagrant_hosts:
|
3
|
+
vagrant_hosts:
|
4
|
+
action:
|
5
|
+
version_check:
|
6
|
+
deprecated_vagrant_version: |-
|
7
|
+
The vagrant-hosts plugin has deprecated support for Vagrant
|
8
|
+
versions older than %{minimum_version}. Support for version %{vagrant_version}
|
9
|
+
will be removed in the next major release of the plugin.
|
10
|
+
errors:
|
11
|
+
unresolvable_hostname: |-
|
12
|
+
The hostname, %{address}, was not a valid IP address or resolvable hostname.
|
13
|
+
collection_failed: |-
|
14
|
+
An error of type %{error_class} occurred while collecting
|
15
|
+
host info from %{host}:
|
16
|
+
|
17
|
+
%{message}
|
18
|
+
|
19
|
+
If this was caused by a transient condition, then the next
|
20
|
+
sync should succeed.
|
data/vagrant-hosts.gemspec
CHANGED
@@ -12,9 +12,9 @@ Gem::Specification.new do |gem|
|
|
12
12
|
Manage static DNS entries and configuration for Vagrant guests.
|
13
13
|
EOD
|
14
14
|
|
15
|
-
gem.authors = 'Adrien Thebo'
|
16
|
-
gem.email = 'adrien@somethingsinistral.net'
|
17
|
-
gem.homepage = 'https://github.com/
|
15
|
+
gem.authors = ['Adrien Thebo', 'Charlie Sharpsteen']
|
16
|
+
gem.email = ['adrien@somethingsinistral.net', 'source@sharpsteen.net']
|
17
|
+
gem.homepage = 'https://github.com/oscar-stack/vagrant-hosts'
|
18
18
|
|
19
19
|
gem.has_rdoc = true
|
20
20
|
gem.license = 'Apache 2.0'
|
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-hosts
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.8.
|
4
|
+
version: 2.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrien Thebo
|
8
|
+
- Charlie Sharpsteen
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2018-05-02 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rake
|
@@ -40,7 +41,9 @@ dependencies:
|
|
40
41
|
version: 2.14.0
|
41
42
|
description: |2
|
42
43
|
Manage static DNS entries and configuration for Vagrant guests.
|
43
|
-
email:
|
44
|
+
email:
|
45
|
+
- adrien@somethingsinistral.net
|
46
|
+
- source@sharpsteen.net
|
44
47
|
executables: []
|
45
48
|
extensions: []
|
46
49
|
extra_rdoc_files: []
|
@@ -55,6 +58,7 @@ files:
|
|
55
58
|
- README.markdown
|
56
59
|
- Rakefile
|
57
60
|
- lib/vagrant-hosts.rb
|
61
|
+
- lib/vagrant-hosts/action/version_check.rb
|
58
62
|
- lib/vagrant-hosts/addresses.rb
|
59
63
|
- lib/vagrant-hosts/cap.rb
|
60
64
|
- lib/vagrant-hosts/cap/facts/base.rb
|
@@ -76,11 +80,12 @@ files:
|
|
76
80
|
- lib/vagrant-hosts/version.rb
|
77
81
|
- spec/integration/addresses_spec.rb
|
78
82
|
- spec/spec_helper.rb
|
83
|
+
- spec/unit/addresses_spec.rb
|
79
84
|
- spec/unit/config_spec.rb
|
80
85
|
- tasks/spec.rake
|
81
86
|
- templates/locales/en.yml
|
82
87
|
- vagrant-hosts.gemspec
|
83
|
-
homepage: https://github.com/
|
88
|
+
homepage: https://github.com/oscar-stack/vagrant-hosts
|
84
89
|
licenses:
|
85
90
|
- Apache 2.0
|
86
91
|
metadata: {}
|
@@ -100,9 +105,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
100
105
|
version: '0'
|
101
106
|
requirements: []
|
102
107
|
rubyforge_project:
|
103
|
-
rubygems_version: 2.
|
108
|
+
rubygems_version: 2.6.13
|
104
109
|
signing_key:
|
105
110
|
specification_version: 4
|
106
111
|
summary: Manage static DNS on vagrant guests
|
107
112
|
test_files: []
|
108
|
-
has_rdoc: true
|