vagrant-hypervnet 0.1.1 → 0.1.4

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: 6f024899cc74a4e7385cd03355e8bef3b435890225cff8b0a6148d25b52a86f9
4
- data.tar.gz: 1e00433fbdc4d9c3a134eb154c185b186cf8c1188816dd38f80d7af8db92adb7
3
+ metadata.gz: 133edcbb24475749a9bf3de3cb1bad3cb0066564b573d88fc85ca83fc49b0213
4
+ data.tar.gz: 586660e79703b88479704cbf69f6ea216d61e996de05d5a2e3956cd583073d3f
5
5
  SHA512:
6
- metadata.gz: 57d673018b5faef0970e51671bd53033908c914e5af64d526ff2c41115552686988067d905b347c005ffc1edd9794e70f77be3865784c952e6be517412c7d7d4
7
- data.tar.gz: e58247102736397f56cc419b56d3df1940f2f6704c2c7c81cdbb6211b533c98ce9c5710ec2e30818a1798b06bc5b0e0c71e8cc6cc2a67be1d26bbb5d1a54eed6
6
+ metadata.gz: c19f6e3e2c6bdcdeecd9603375bbf03dc59d746c3f09789cf9b0c2b9c45d3b15aa287df6e2a60129559119be77d287de4e29a6fee3e64253f8333377c773df03
7
+ data.tar.gz: 38870404a84145c4217a7f80d6141f5a676f54086f8d8c620d239bba590cd32d312a6c53bd62196e1f278a3dc31176a431b88344fe487d4ef4b8fde8d450d61c
data/README.md CHANGED
@@ -25,18 +25,41 @@ $ vagrant plugin install vagrant-hypervnet
25
25
  ```ruby
26
26
  Vagrant.configure("2") do |config|
27
27
 
28
- # install OpenSSH Server (Windows Capability) and insert vagrant ssh key on windows guests
28
+ # installs OpenSSH Server (Windows Capability) and inserts vagrant ssh key on windows guests
29
29
  config.hypervnet.install_ssh_server = true
30
30
 
31
- # install MSYS2 and rsync on windows guests
31
+ # installs MSYS2 and rsync on windows guests
32
32
  config.hypervnet.install_rsync = true
33
+
34
+ # enablee synced_folder synchronization before provision
35
+ config.hypervnet.folder_sync_on_provision = true
36
+
37
+ # Hyper-V switch connected to vagrant management interface
38
+ config.hypervnet.default_switch = "Default Switch"
39
+
40
+ # Hyper-V internal network: a new switch is created if can't find an existent switch with the specified subnet (192.168.100.100/24)
41
+ config.vm.network :private_network, ip: "192.168.100.101", netmask: "255.255.255.0"
42
+
43
+ # Hyper-V internal network: a new switch is created if can't find an existent switch whith the specified name ("my-internal-network")
44
+ config.vm.network :private_network, ip: "192.168.102.101", netmask: "255.255.255.0" hyperv__bridge: "my-internal-network"
45
+
46
+ # Hyper-V private network: a new switch is created if can't find an existent switch whith the specified name ("my-private-network")
47
+ config.vm.network :private_network, ip: "192.168.101.101", netmask: "255.255.255.0" hyperv__private: "my-private-network"
48
+
49
+ # Hyper-V external network: the existent switch whith the specified name ("my-external-network") is connected to this vm adapter
50
+ config.vm.network :public_network, ip: "192.168.102.101", netmask: "255.255.255.0" hyperv__bridge: "my-external-network"
51
+
52
+ # rsync synched folder
53
+ config.vm.synced_folder ".", "/vagrant", type: "rsync", rsync__exclude: ".git"
33
54
  end
34
55
  ```
35
56
 
36
57
  ### Config options
37
58
 
38
- * `install_ssh_server` (Boolean, default: `true`): install OpenSSH Server (Windows Capability) and insert vagrant ssh key on windows guests.
39
- * `install_rsync` (Boolean, default: `true`): install MSYS2 and rsync on windows guests.
59
+ * `install_ssh_server` (Boolean, default: `true`): installs OpenSSH Server (Windows Capability) and inserts vagrant ssh key on windows guests.
60
+ * `install_rsync` (Boolean, default: `true`): installs MSYS2 and rsync on windows guests if an rsync synced folder is defined .
61
+ * `folder_sync_on_provision` (Boolean, default: `true`): if enabled invokes synced folders synchronization before provision.
62
+ * `default_switch` (String, default: `Default Switch`): Hyper-V switch connected to interface used by vagrant to communicate with the vm.
40
63
 
41
64
  ## Usage
42
65
 
@@ -0,0 +1,28 @@
1
+ require "log4r"
2
+
3
+ module VagrantPlugins
4
+ module HyperVNet
5
+ module Action
6
+ class FolderSync
7
+
8
+ def initialize(app, env)
9
+ @app = app
10
+ @logger = Log4r::Logger.new("vagrant::hypervnet::folder_sync")
11
+ end
12
+
13
+ def call(env)
14
+ # Continue the middleware chain.
15
+ @app.call(env)
16
+
17
+ machine = env[:machine]
18
+ if(machine.config.hypervnet.folder_sync_on_provision)
19
+ env[:ui].output(I18n.t("vagrant_hypervnet.folder_sync"))
20
+ callable = Vagrant::Action::Builder.new
21
+ callable.use Vagrant::Action::Builtin::SyncedFolders
22
+ machine.action_raw(:sync_folders, callable, env)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -160,6 +160,7 @@ module VagrantPlugins
160
160
  return {
161
161
  type: :external,
162
162
  switch: switch[:name],
163
+ switch_id: switch[:id]
163
164
  }
164
165
  else
165
166
  raise Errors::NetworkNotFound, name: config[:bridge]
@@ -206,7 +207,25 @@ module VagrantPlugins
206
207
  if !switch
207
208
  @logger.info("Switch not found. Creating if we can.")
208
209
  if !config[:bridge]
209
- config[:bridge] = netaddr.to_s
210
+ index = 0
211
+ loop do
212
+ config[:bridge] = netaddr.to_s + (index > 0 ? "_#{index}" : "")
213
+ exists = @driver.find_switch_by_name(config[:bridge])
214
+ if !exists
215
+ break
216
+ else
217
+ index += 1
218
+ end
219
+ end
220
+ end
221
+
222
+ routes = @driver.get_routes
223
+ @logger.debug("Search if subnet #{netaddr.to_s} is already defined in host: #{routes.inspect} ")
224
+ existing_route = routes.find{|range| range.include?(netaddr)}
225
+ if existing_route
226
+ raise Errors::NetworkAddressOverlapping,
227
+ address: netaddr,
228
+ subnet: existing_route
210
229
  end
211
230
 
212
231
  # Create a new switch
@@ -216,6 +235,7 @@ module VagrantPlugins
216
235
 
217
236
  return {
218
237
  switch: switch[:name],
238
+ switch_id: switch[:id],
219
239
  type: :internal
220
240
  }
221
241
  end
@@ -255,6 +275,7 @@ module VagrantPlugins
255
275
  return {
256
276
  type: :private,
257
277
  switch: switch[:name],
278
+ switch_id: switch[:id]
258
279
  }
259
280
  end
260
281
 
@@ -273,9 +294,11 @@ module VagrantPlugins
273
294
  end
274
295
 
275
296
  def nat_adapter(config)
297
+ switch = @driver.find_switch_by_name(@env[:machine].config.hypervnet.default_switch)
276
298
  return {
277
- type: :nat,
278
- switch: "Default Switch"
299
+ type: :nat,
300
+ switch: switch[:name],
301
+ switch_id: switch[:id]
279
302
  }
280
303
  end
281
304
 
@@ -292,12 +315,12 @@ module VagrantPlugins
292
315
  adapters.each.with_index(0) do |adapter, index|
293
316
  if index < vm_adapters.length
294
317
  vm_adapter = vm_adapters[index]
295
- @logger.info("Connecting adapter #{vm_adapter.inspect} to switch #{adapter[:switch]}")
296
- @driver.connect_vm_adapter(vm_adapter[:id], adapter[:switch])
297
318
  else
298
- vm_adapter = @driver.add_vm_adapter(adapter[:switch])
319
+ vm_adapter = @driver.add_vm_adapter
299
320
  @logger.info("Created adapter: #{vm_adapter.inspect}")
300
321
  end
322
+ @logger.info("Connecting adapter #{vm_adapter.inspect} to switch #{adapter[:switch]}")
323
+ @driver.connect_vm_adapter(vm_adapter[:id], adapter[:switch_id])
301
324
  end
302
325
 
303
326
  if vm_adapters.length > adapters.length
@@ -1,6 +1,7 @@
1
1
  require_relative 'action/disable_builtin_network_configure'
2
2
  require_relative 'action/network'
3
3
  require_relative 'action/ssh_server'
4
+ require_relative 'action/folder_sync'
4
5
 
5
6
  module VagrantPlugins
6
7
  module HyperVNet
@@ -26,6 +27,14 @@ module VagrantPlugins
26
27
  builder.use SshServer
27
28
  end
28
29
  end
30
+
31
+ def self.folder_sync
32
+ Vagrant::Action::Builder.new.tap do |builder|
33
+ builder.use ConfigValidate
34
+ builder.use FolderSync
35
+ end
36
+ end
37
+
29
38
  end
30
39
  end
31
40
  end
@@ -8,11 +8,15 @@ module VagrantPlugins
8
8
 
9
9
  attr_accessor :install_ssh_server
10
10
  attr_accessor :install_rsync
11
+ attr_accessor :folder_sync_on_provision
12
+ attr_accessor :default_switch
11
13
 
12
14
  def initialize
13
15
  @network_adapters = []
14
16
  @install_ssh_server = UNSET_VALUE
15
17
  @install_rsync = UNSET_VALUE
18
+ @folder_sync_on_provision = UNSET_VALUE
19
+ @default_switch = UNSET_VALUE
16
20
 
17
21
  network_adapter(:nat)
18
22
  end
@@ -24,6 +28,8 @@ module VagrantPlugins
24
28
  def finalize!
25
29
  @install_ssh_server = true if @install_ssh_server == UNSET_VALUE
26
30
  @install_rsync = true if @install_rsync == UNSET_VALUE
31
+ @folder_sync_on_provision = true if @folder_sync_on_provision == UNSET_VALUE
32
+ @default_switch = "Default Switch" if @default_switch == UNSET_VALUE
27
33
  end
28
34
 
29
35
  def validate(machine)
@@ -63,11 +63,19 @@ module VagrantPlugins
63
63
  def find_switch_by_name(name)
64
64
  data = execute(:get_switch_by_name, Name: name)
65
65
  if data && data.kind_of?(Array)
66
- data = data[0]
66
+ if data.length > 1
67
+ raise Errors::NetworkNotUnique,
68
+ networks: data.inspect
69
+ elsif data.length == 1
70
+ data = data[0]
71
+ else
72
+ data = nil
73
+ end
67
74
  end
68
75
 
69
76
  if data
70
77
  switch = {}
78
+ switch[:id] = data["Id"]
71
79
  switch[:name] = data["Name"]
72
80
  switch[:type] = data["SwitchType"]
73
81
  end
@@ -78,11 +86,19 @@ module VagrantPlugins
78
86
  def find_switch_by_address(ip_address, prefix_length)
79
87
  data = execute(:get_switch_by_address, DestinationPrefix: "#{ip_address}/#{prefix_length}")
80
88
  if data && data.kind_of?(Array)
81
- data = data[0]
89
+ if data.length > 1
90
+ raise Errors::NetworkNotUnique,
91
+ networks: data.inspect
92
+ elsif data.length == 1
93
+ data = data[0]
94
+ else
95
+ data = nil
96
+ end
82
97
  end
83
98
 
84
99
  if data
85
100
  switch = {}
101
+ switch[:id] = data["Id"]
86
102
  switch[:name] = data["Name"]
87
103
  switch[:type] = data["SwitchType"]
88
104
  end
@@ -118,7 +134,8 @@ module VagrantPlugins
118
134
  data.each do |value|
119
135
  adapter = {}
120
136
  adapter[:id] = value["Id"]
121
- adapter[:name] = value["Name"]
137
+ adapter[:name] = value["Name"]
138
+ adapter[:switch_id] = value["SwitchId"]
122
139
  adapter[:switch] = value["SwitchName"]
123
140
  adapter[:mac_address] = value["MacAddress"]
124
141
  adapters << adapter
@@ -127,6 +144,29 @@ module VagrantPlugins
127
144
  adapters
128
145
  end
129
146
 
147
+ def get_routes
148
+ routes = []
149
+ data = execute(:get_routes)
150
+ if data
151
+ if data.kind_of?(Hash)
152
+ data = [] << data
153
+ end
154
+ data.each do |value|
155
+ begin
156
+ netaddr = IPAddr.new(value["DestinationPrefix"])
157
+ if netaddr.prefix > 0
158
+ routes << netaddr
159
+ end
160
+ rescue IPAddr::Error => e
161
+ raise Vagrant::Errors::NetworkAddressInvalid,
162
+ address: data["DestinationPrefix"], mask: "",
163
+ error: e.message
164
+ end
165
+ end
166
+ end
167
+ routes
168
+ end
169
+
130
170
  def create_switch(type, name, ip_address = nil, prefix_length = nil)
131
171
  case type
132
172
  when :internal
@@ -137,6 +177,7 @@ module VagrantPlugins
137
177
 
138
178
  if data
139
179
  switch = {}
180
+ switch[:id] = data["Id"]
140
181
  switch[:name] = data["Name"]
141
182
  switch[:type] = data["SwitchType"]
142
183
  end
@@ -144,14 +185,12 @@ module VagrantPlugins
144
185
  switch
145
186
  end
146
187
 
147
- def add_vm_adapter(switch)
148
- data = execute(:add_vm_adapter, VmId: @vmId, SwitchName: switch)
188
+ def add_vm_adapter
189
+ data = execute(:add_vm_adapter, VmId: @vmId)
149
190
 
150
191
  adapter = {}
151
192
  adapter[:id] = data["Id"]
152
193
  adapter[:name] = data["Name"]
153
- adapter[:switch] = data["SwitchName"]
154
- adapter[:mac_address] = data["MacAddress"]
155
194
 
156
195
  adapter
157
196
  end
@@ -160,8 +199,8 @@ module VagrantPlugins
160
199
  execute(:remove_vm_adapter, VmId: @vmId, Id: id)
161
200
  end
162
201
 
163
- def connect_vm_adapter(id, switch)
164
- execute(:connect_vm_adapter, VmId: @vmId, Id: id, SwitchName: switch)
202
+ def connect_vm_adapter(id, switch_id)
203
+ execute(:connect_vm_adapter, VmId: @vmId, Id: id, SwitchId: switch_id)
165
204
  end
166
205
 
167
206
  protected
@@ -22,6 +22,14 @@ module VagrantPlugins
22
22
  error_key(:network_address_invalid)
23
23
  end
24
24
 
25
+ class NetworkAddressOverlapping < HyperVNetError
26
+ error_key(:network_address_overlapping)
27
+ end
28
+
29
+ class NetworkNotUnique < HyperVNetError
30
+ error_key(:network_not_unique)
31
+ end
32
+
25
33
  class NetworkNotFound < HyperVNetError
26
34
  error_key(:network_not_found)
27
35
  end
@@ -2,14 +2,17 @@
2
2
 
3
3
  param (
4
4
  [parameter (Mandatory=$true)]
5
- [string]$VmId,
6
- [parameter (Mandatory=$true)]
7
- [string]$SwitchName
8
-
5
+ [string]$VmId
9
6
  )
10
7
 
11
- $vm = Get-VM -Id $VmId
12
- $adapter = Add-VMNetworkAdapter -PassThru -VM $vm -SwitchName $SwitchName |
13
- Select-Object -Property "Name", "Id", "SwitchName", "MacAddress"
8
+ try{
9
+ $vm = Get-VM -Id $VmId
10
+ $adapter = Add-VMNetworkAdapter -PassThru -VM $vm |
11
+ Select-Object -Property "Name", "Id"
12
+ }
13
+ catch {
14
+ Write-ErrorMessage "Failed to add adapter to VM ${VmId}: ${PSItem}"
15
+ exit 1
16
+ }
14
17
 
15
18
  Write-OutputMessage $(ConvertTo-JSON $adapter)
@@ -4,9 +4,16 @@ param (
4
4
  [parameter (Mandatory=$true)]
5
5
  [string]$Id,
6
6
  [parameter (Mandatory=$true)]
7
- [string]$SwitchName
7
+ [string]$SwitchId
8
8
 
9
9
  )
10
10
 
11
- $vm = Get-VM -Id $VmId
12
- Get-VMNetworkAdapter -VM $vm | Where-Object -Property Id -EQ -Value $Id | Connect-VMNetworkAdapter -SwitchName $SwitchName
11
+ try {
12
+ $vm = Get-VM -Id $VmId
13
+ $switch = Get-VMSwitch -Id $SwitchId
14
+ Get-VMNetworkAdapter -VM $vm | Where-Object -Property Id -EQ -Value $Id | Connect-VMNetworkAdapter -VMSwitch $switch
15
+ }
16
+ catch {
17
+ Write-ErrorMessage "Failed to connect adapter ${Id} of VM ${VmId} to switch ${SwitchId}: ${PSItem}"
18
+ exit 1
19
+ }
@@ -0,0 +1,11 @@
1
+ #Requires -Modules VagrantMessages
2
+
3
+ try {
4
+ $routes = Get-NetRoute | Select-Object -Property "DestinationPrefix"
5
+ }
6
+ catch {
7
+ Write-ErrorMessage "Failed to get host routes: ${PSItem}"
8
+ exit 1
9
+ }
10
+
11
+ Write-OutputMessage $(ConvertTo-JSON $routes)
@@ -7,16 +7,24 @@ param (
7
7
 
8
8
  $switches = @()
9
9
 
10
- foreach($route in Get-NetRoute | Where-Object -Property DestinationPrefix -EQ -Value $DestinationPrefix) {
11
- foreach($adapter in Get-NetAdapter -InterfaceIndex $route.ifIndex) {
12
- foreach($vmAdapter in Get-VMNetworkAdapter -ManagementOS | Where-Object -Property DeviceId -EQ -Value $adapter.DeviceId) {
13
- foreach($switch in Get-VMSwitch -Name $vmAdapter.SwitchName |
14
- Select-Object -Property Name,
15
- @{Name='SwitchType';Expression={"$($_.SwitchType)"}},
16
- @{Name='NetAdapter';Expression={$switch_adapter[$_.Name]}}) {
17
- $switches += $switch
18
- }
10
+ try {
11
+ foreach($route in Get-NetRoute | Where-Object -Property DestinationPrefix -EQ -Value $DestinationPrefix) {
12
+ foreach($adapter in Get-NetAdapter -InterfaceIndex $route.ifIndex) {
13
+ foreach($vmAdapter in Get-VMNetworkAdapter -ManagementOS | Where-Object -Property DeviceId -EQ -Value $adapter.DeviceId) {
14
+ foreach($switch in Get-VMSwitch -Name $vmAdapter.SwitchName |
15
+ Select-Object -Property Name, Id,
16
+ @{Name='SwitchType';Expression={"$($_.SwitchType)"}},
17
+ @{Name='NetAdapter';Expression={$switch_adapter[$_.Name]}}) {
18
+ $switches += $switch
19
+ }
20
+ }
19
21
  }
20
22
  }
21
23
  }
24
+ catch {
25
+ Write-ErrorMessage "Failed to find switch by IP ${DestinationPrefix}: ${PSItem}"
26
+ exit 1
27
+ }
28
+
29
+
22
30
  Write-OutputMessage $(ConvertTo-JSON $switches)
@@ -7,11 +7,17 @@ param (
7
7
 
8
8
  $switches = @()
9
9
 
10
- foreach($switch in Get-VMSwitch | Where-Object -Property Name -EQ -Value $Name |
11
- Select-Object -Property Name,
12
- @{Name='SwitchType';Expression={"$($_.SwitchType)"}},
13
- @{Name='NetAdapter';Expression={$switch_adapter[$_.Name]}}) {
14
- $switches += $switch
15
- }
10
+ try {
11
+ foreach($switch in Get-VMSwitch | Where-Object -Property Name -EQ -Value $Name |
12
+ Select-Object -Property Name, Id,
13
+ @{Name='SwitchType';Expression={"$($_.SwitchType)"}},
14
+ @{Name='NetAdapter';Expression={$switch_adapter[$_.Name]}}) {
15
+ $switches += $switch
16
+ }
17
+ }
18
+ catch {
19
+ Write-ErrorMessage "Failed to find switch by name ${Name}: ${PSItem}"
20
+ exit 1
21
+ }
16
22
 
17
23
  Write-OutputMessage $(ConvertTo-JSON $switches)
@@ -4,8 +4,15 @@ param (
4
4
  [parameter (Mandatory=$true)]
5
5
  [string]$VmId
6
6
  )
7
- $vm = Get-VM -Id $VmId
8
- $adapters = Get-VMNetworkAdapter -VM $vm |
9
- Select-Object -Property "Name", "Id", "SwitchName", "MacAddress"
7
+
8
+ try {
9
+ $vm = Get-VM -Id $VmId
10
+ $adapters = Get-VMNetworkAdapter -VM $vm |
11
+ Select-Object -Property "Name", "Id", "SwitchName", "SwitchId", "MacAddress"
12
+ }
13
+ catch {
14
+ Write-ErrorMessage "Failed to get adapters of VM ${VmId}: ${PSItem}"
15
+ exit 1
16
+ }
10
17
 
11
18
  Write-OutputMessage $(ConvertTo-JSON $adapters)
@@ -12,15 +12,27 @@ param (
12
12
 
13
13
  )
14
14
 
15
- $switch = New-VMSwitch -Name $Name -SwitchType $SwitchType
15
+ try {
16
+ $switch = New-VMSwitch -Name $Name -SwitchType $SwitchType
17
+ }
18
+ catch {
19
+ Write-ErrorMessage "Failed to create switch ${Name}: ${PSItem}"
20
+ exit 1
21
+ }
16
22
 
17
23
  if($IPAddress) {
18
- $vmAdapter = Get-VMNetworkAdapter -ManagementOS -SwitchName $switch.Name
19
- $adapter = Get-NetAdapter | Where-Object -Property DeviceId -EQ -Value $vmAdapter.DeviceId
20
- New-NetIPAddress -IPAddress $IPAddress -PrefixLength $PrefixLength -InterfaceIndex $adapter.ifIndex
24
+ try {
25
+ $vmAdapter = Get-VMNetworkAdapter -ManagementOS | Where-Object -Property SwitchId -EQ -Value $switch.Id
26
+ $adapter = Get-NetAdapter | Where-Object -Property DeviceId -EQ -Value $vmAdapter.DeviceId
27
+ New-NetIPAddress -IPAddress $IPAddress -PrefixLength $PrefixLength -InterfaceIndex $adapter.ifIndex
28
+ }
29
+ catch {
30
+ Write-ErrorMessage "Failed to add IP address ${IPAddress} for switch ${Name}: ${PSItem}"
31
+ exit 1
32
+ }
21
33
  }
22
34
 
23
- Write-OutputMessage $($switch | Select-Object -Property Name,
35
+ Write-OutputMessage $($switch | Select-Object -Property Name, Id,
24
36
  @{Name='SwitchType';Expression={"$($_.SwitchType)"}},
25
37
  @{Name='NetAdapter';Expression={$switch_adapter[$_.Name]}} |
26
38
  ConvertTo-JSON)
@@ -5,5 +5,11 @@ param (
5
5
  [string]$Id
6
6
  )
7
7
 
8
- $vm = Get-VM -Id $VmId
9
- Get-VMNetworkAdapter -VM $vm | Where-Object -Property Id -EQ -Value $Id | Remove-VMNetworkAdapter
8
+ try {
9
+ $vm = Get-VM -Id $VmId
10
+ Get-VMNetworkAdapter -VM $vm | Where-Object -Property Id -EQ -Value $Id | Remove-VMNetworkAdapter
11
+ }
12
+ catch {
13
+ Write-ErrorMessage "Failed to remove adapter ${Id} from VM ${VmId}: ${PSItem}"
14
+ exit 1
15
+ }
@@ -2,6 +2,6 @@
2
2
 
3
3
  module VagrantPlugins
4
4
  module HyperVNet
5
- VERSION = "0.1.1"
5
+ VERSION = "0.1.4"
6
6
  end
7
7
  end
@@ -84,6 +84,12 @@ module VagrantPlugins
84
84
  end
85
85
  hook.before(Vagrant::Action::Builtin::SyncedFolders, Action.ssh_server)
86
86
  end
87
+
88
+ action_hook(:hypervnet, :provision) do |hook|
89
+ require_relative 'vagrant-hypervnet/action'
90
+
91
+ hook.after(Vagrant::Action::Builtin::Provision, Action.folder_sync)
92
+ end
87
93
  end
88
94
  end
89
95
  end
data/locales/en.yml CHANGED
@@ -4,6 +4,8 @@ en:
4
4
  Adapter %{adapter}: %{type} %{switch}
5
5
  network_config: |-
6
6
  network %{network} -> %{interface}: %{type} %{ip}/%{netmask}
7
+ folder_sync: |-
8
+ Synchronizing synchronized folders...
7
9
  ssh:
8
10
  install: |-
9
11
  Installing OpenSSH server to the VM...
@@ -62,6 +64,16 @@ en:
62
64
  Address: %{address}
63
65
  Netmask: %{mask}
64
66
  Error: %{error}
67
+ network_address_overlapping: |-
68
+ The IP address configured for the host-only network is overlapping
69
+ a subnet already defined. Please update the address used and run the command again.
70
+
71
+ Address: %{address}
72
+ Subnet: %{subnet}
73
+ network_not_unique: |-
74
+ The specified host network match morte then one item:
75
+
76
+ Networks: '%{networks}.'
65
77
  network_not_found: |-
66
78
  The specified host network could not be found: '%{name}.'
67
79
  If the name specification is removed, Vagrant will create a new
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-hypervnet
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Luca Bompani
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-04-05 00:00:00.000000000 Z
11
+ date: 2023-04-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Vagrant plugin which extends Hyper-V provider implementing networks creation
14
14
  and configuration.
@@ -25,6 +25,7 @@ files:
25
25
  - lib/vagrant-hypervnet.rb
26
26
  - lib/vagrant-hypervnet/action.rb
27
27
  - lib/vagrant-hypervnet/action/disable_builtin_network_configure.rb
28
+ - lib/vagrant-hypervnet/action/folder_sync.rb
28
29
  - lib/vagrant-hypervnet/action/network.rb
29
30
  - lib/vagrant-hypervnet/action/ssh_server.rb
30
31
  - lib/vagrant-hypervnet/cap.rb
@@ -38,6 +39,7 @@ files:
38
39
  - lib/vagrant-hypervnet/errors.rb
39
40
  - lib/vagrant-hypervnet/scripts/add_vm_adapter.ps1
40
41
  - lib/vagrant-hypervnet/scripts/connect_vm_adapter.ps1
42
+ - lib/vagrant-hypervnet/scripts/get_routes.ps1
41
43
  - lib/vagrant-hypervnet/scripts/get_switch_by_address.ps1
42
44
  - lib/vagrant-hypervnet/scripts/get_switch_by_name.ps1
43
45
  - lib/vagrant-hypervnet/scripts/get_vm_adapters.ps1