vagrant-goodhosts 1.0.17 → 1.0.18

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 86f17cd749321e35fafab21b1187d95010f121ec7ef384341aef7d1e767f66c4
4
- data.tar.gz: ef74638b070b0ce806b27ae50b3ed05324d5e2715e55c9f26477f77ecead532d
3
+ metadata.gz: 74e9466d2e64e39de992c9940235deb31e8d64fd4e17e92d8b271392306dcabf
4
+ data.tar.gz: 918fb30d3de3daf04492cd8850d5cd1fc5bb2187f9a985f048b401301c527409
5
5
  SHA512:
6
- metadata.gz: b8dc33d45b72b7b6cc29b66d4eb4bf77e73c0e791b54e514905315108aa1d0ce8f1b6d7e3069eda8103f7613fbe1f06200b6c4a0e745b60348f27b78ffef3009
7
- data.tar.gz: 5d91d96b23d355281840675f3de98a701daaea12e3fec0bf0bd1adf7983c88ecf55e2e3fb8bb39f26da4ebc3643233053cea8bdd8e2b765f6d2512d345eb57ac
6
+ metadata.gz: 396c9ad919d3abaea678b2042f57a9ef02dac89d4212ceb5e18887c5be190ae86a3112fa28664fe6e7483fcf6f9e969eda012d891a4d828622b6fc15b671a050
7
+ data.tar.gz: f1d14ef933bfe527f6d0297300abf1cc3ed9a87f542b1ac5dc0ff017c71a52b32203984e1c04d37988fdbbe1d4f99343255f9ced3dd3a750ec1ded7b06870231
@@ -12,7 +12,6 @@ module VagrantPlugins
12
12
  if ([:halt, :suspend].include? machine_action) && (false == @machine.config.goodhosts.remove_on_suspend)
13
13
  @ui.info "[vagrant-goodhosts] Removing hosts on suspend disabled"
14
14
  else
15
- @ui.info "[vagrant-goodhosts] Removing hosts"
16
15
  removeHostEntries
17
16
  end
18
17
  end
@@ -4,7 +4,6 @@ module VagrantPlugins
4
4
  class UpdateHosts < BaseAction
5
5
 
6
6
  def run(env)
7
- @ui.info "[vagrant-goodhosts] Checking for host entries"
8
7
  addHostEntries()
9
8
  end
10
9
 
@@ -1,5 +1,6 @@
1
1
  require "rbconfig"
2
2
  require "open3"
3
+ require "resolv"
3
4
 
4
5
  module VagrantPlugins
5
6
  module GoodHosts
@@ -8,17 +9,17 @@ module VagrantPlugins
8
9
  ips = []
9
10
 
10
11
  if @machine.config.vm.networks.length == 0
11
- @ui.error("[vagrant-goodhosts] No ip address found for this virtual machine")
12
- exit
12
+ @ui.error("[vagrant-goodhosts] No networks are available yet for this virtual machine to add IP/hosts for")
13
+ return ips
13
14
  end
14
-
15
+
15
16
  @machine.config.vm.networks.each do |network|
16
17
  key, options = network[0], network[1]
17
- ip = options[:ip] if (key == :private_network || key == :public_network) && options[:goodhosts] != "skip"
18
- ips.push(ip) if ip
19
18
  if options[:goodhosts] == "skip"
20
19
  @ui.info '[vagrant-goodhosts] Skipped adding host entries (config.vm.network goodhosts: "skip" is set)'
21
20
  end
21
+ ip = options[:ip] if (key == :private_network || key == :public_network) && options[:goodhosts] != "skip"
22
+ ips.push(ip) if ip
22
23
 
23
24
  @machine.config.vm.provider :hyperv do |v|
24
25
  timeout = @machine.provider_config.ip_address_timeout
@@ -37,7 +38,6 @@ module VagrantPlugins
37
38
  end
38
39
  end
39
40
 
40
-
41
41
  end
42
42
  return ips
43
43
  end
@@ -45,16 +45,16 @@ module VagrantPlugins
45
45
  # https://stackoverflow.com/a/13586108/1902215
46
46
  def get_os_binary
47
47
  return os ||= (host_os = RbConfig::CONFIG["host_os"]
48
- case host_os
49
- when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
50
- :'cli.exe'
51
- when /darwin|mac os/
52
- :'cli_osx'
53
- when /linux/
54
- :'cli'
55
- else
56
- raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
57
- end)
48
+ case host_os
49
+ when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
50
+ :'cli.exe'
51
+ when /darwin|mac os/
52
+ :'cli_osx'
53
+ when /linux/
54
+ :'cli'
55
+ else
56
+ raise Error::WebDriverError, "unknown os: #{host_os.inspect}"
57
+ end)
58
58
  end
59
59
 
60
60
  def get_cli
@@ -84,7 +84,7 @@ module VagrantPlugins
84
84
 
85
85
  return hostnames
86
86
  end
87
-
87
+
88
88
  def disableClean(ip_address)
89
89
  unless ip_address.nil?
90
90
  return @machine.config.goodhosts.disable_clean
@@ -97,27 +97,22 @@ module VagrantPlugins
97
97
  errorText = ""
98
98
  cli = get_cli
99
99
  hostnames_by_ips = generateHostnamesByIps
100
-
100
+
101
101
  return if not hostnames_by_ips.any?
102
102
 
103
+ @ui.info "[vagrant-goodhosts] Checking for host entries"
104
+
103
105
  hostnames_by_ips.each do |ip_address, hostnames|
104
106
  if ip_address.nil?
105
107
  @ui.error "[vagrant-goodhosts] Error adding some hosts, no IP was provided for the following hostnames: #{hostnames}"
106
108
  next
107
109
  end
108
- if cli.include? ".exe"
109
- clean = "\"--clean\","
110
- if disableClean(ip_address)
111
- clean = ''
112
- end
113
- stdin, stdout, stderr, wait_thr = Open3.popen3("powershell", "-Command", "Start-Process '#{cli}' -ArgumentList \"add\",#{clean}\"#{ip_address}\",\"#{hostnames}\" -Verb RunAs")
114
- else
115
- clean = "--clean"
116
- if disableClean(ip_address)
117
- clean = ''
118
- end
119
- stdin, stdout, stderr, wait_thr = Open3.popen3("sudo '#{cli}' add #{clean} #{ip_address} #{hostnames}")
120
- end
110
+
111
+ # filter out the hosts we've already added
112
+ hosts_to_add = check_hostnames_to_add( ip_address, hostnames)
113
+ next if not hosts_to_add.any?
114
+
115
+ stdin, stdout, stderr, wait_thr = add_goodhost_entries(ip_address, hosts_to_add)
121
116
  if !wait_thr.value.success?
122
117
  error = true
123
118
  errorText = stderr.read.strip
@@ -126,6 +121,40 @@ module VagrantPlugins
126
121
  printReadme(error, errorText)
127
122
  end
128
123
 
124
+ def check_hostnames_to_add(ip_address, hostnames)
125
+ hostnames_to_add = Array.new
126
+
127
+ # check which hostnames actually need adding
128
+ hostnames.each do |hostname|
129
+ begin
130
+ address = Resolv.getaddress(hostname)
131
+ if address != ip_address
132
+ hostnames_to_add.append( hostname )
133
+ end
134
+ rescue => exception
135
+ hostnames_to_add.append(hostname)
136
+ end
137
+ end
138
+ return hostnames_to_add
139
+ end
140
+
141
+ def add_goodhost_entries(ip_address, hostnames)
142
+ if cli.include? ".exe"
143
+ clean = "\"--clean\","
144
+ if disableClean(ip_address)
145
+ clean = ''
146
+ end
147
+ stdin, stdout, stderr, wait_thr = Open3.popen3("powershell", "-Command", "Start-Process '#{cli}' -ArgumentList \"add\",#{clean}\"#{ip_address}\",\"#{hostnames}\" -Verb RunAs")
148
+ else
149
+ clean = "--clean"
150
+ if disableClean(ip_address)
151
+ clean = ''
152
+ end
153
+ stdin, stdout, stderr, wait_thr = Open3.popen3("sudo '#{cli}' add #{clean} #{ip_address} #{hostnames}")
154
+ end
155
+ return stdin, stdout, stderr, wait_thr
156
+ end
157
+
129
158
  def removeHostEntries
130
159
  error = false
131
160
  errorText = ""
@@ -134,24 +163,15 @@ module VagrantPlugins
134
163
 
135
164
  return if not hostnames_by_ips.any?
136
165
 
166
+ @ui.info "[vagrant-goodhosts] Removing hosts"
167
+
137
168
  hostnames_by_ips.each do |ip_address, hostnames|
138
169
  if ip_address.nil?
139
170
  @ui.error "[vagrant-goodhosts] Error adding some hosts, no IP was provided for the following hostnames: #{hostnames}"
140
171
  next
141
172
  end
142
- if cli.include? ".exe"
143
- clean = "\"--clean\","
144
- if disableClean(ip_address)
145
- clean = ''
146
- end
147
- stdin, stdout, stderr, wait_thr = Open3.popen3("powershell", "-Command", "Start-Process '#{cli}' -ArgumentList \"remove\",#{clean}\"#{ip_address}\",\"#{hostnames}\" -Verb RunAs")
148
- else
149
- clean = "\"--clean\","
150
- if disableClean(ip_address)
151
- clean = ''
152
- end
153
- stdin, stdout, stderr, wait_thr = Open3.popen3("sudo '#{cli}' remove #{clean} #{ip_address} #{hostnames}")
154
- end
173
+
174
+ stdin, stdout, stderr, wait_thr = remove_goodhost_entries(ip_address, hostnames)
155
175
  if !wait_thr.value.success?
156
176
  error = true
157
177
  errorText = stderr.read.strip
@@ -160,6 +180,23 @@ module VagrantPlugins
160
180
  printReadme(error, errorText)
161
181
  end
162
182
 
183
+ def remove_goodhost_entries(ip_address, hostnames)
184
+ if cli.include? ".exe"
185
+ clean = "\"--clean\","
186
+ if disableClean(ip_address)
187
+ clean = ''
188
+ end
189
+ stdin, stdout, stderr, wait_thr = Open3.popen3("powershell", "-Command", "Start-Process '#{cli}' -ArgumentList \"remove\",#{clean}\"#{ip_address}\",\"#{hostnames}\" -Verb RunAs")
190
+ else
191
+ clean = "\"--clean\","
192
+ if disableClean(ip_address)
193
+ clean = ''
194
+ end
195
+ stdin, stdout, stderr, wait_thr = Open3.popen3("sudo '#{cli}' remove #{clean} #{ip_address} #{hostnames}")
196
+ end
197
+ return stdin, stdout, stderr, wait_thr
198
+ end
199
+
163
200
  def printReadme(error, errorText)
164
201
  if error
165
202
  cli = get_cli
@@ -21,6 +21,10 @@ module VagrantPlugins
21
21
  hook.append(Action::UpdateHosts)
22
22
  end
23
23
 
24
+ action_hook(:goodhosts, :machine_action_boot) do |hook|
25
+ hook.append(Action::UpdateHosts)
26
+ end
27
+
24
28
  action_hook(:goodhosts, :machine_action_provision) do |hook|
25
29
  hook.before(Vagrant::Action::Builtin::Provision, Action::UpdateHosts)
26
30
  end
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module GoodHosts
3
- VERSION = '1.0.17'
3
+ VERSION = '1.0.18'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-goodhosts
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.17
4
+ version: 1.0.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniele Scasciafratte
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-15 00:00:00.000000000 Z
11
+ date: 2021-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  requirements: []
85
- rubygems_version: 3.2.5
85
+ rubygems_version: 3.2.27
86
86
  signing_key:
87
87
  specification_version: 4
88
88
  summary: Enables Vagrant to update hosts file on the host machine with goodhosts