vagrant 2.4.4 → 2.4.6

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +27 -1
  3. data/lib/vagrant/action/builtin/box_add.rb +51 -7
  4. data/lib/vagrant/action/builtin/cloud_init_setup.rb +56 -15
  5. data/lib/vagrant/action/builtin/cloud_init_wait.rb +28 -10
  6. data/lib/vagrant/action/builtin/disk.rb +4 -1
  7. data/lib/vagrant/box_metadata.rb +8 -2
  8. data/lib/vagrant/bundler.rb +8 -6
  9. data/lib/vagrant/errors.rb +16 -0
  10. data/lib/vagrant/util/file_checksum.rb +59 -50
  11. data/lib/vagrant/util/mime.rb +1 -1
  12. data/plugins/commands/autocomplete/command/root.rb +8 -10
  13. data/plugins/commands/box/command/root.rb +10 -12
  14. data/plugins/commands/cloud/auth/root.rb +10 -12
  15. data/plugins/commands/cloud/box/root.rb +10 -12
  16. data/plugins/commands/cloud/provider/root.rb +10 -12
  17. data/plugins/commands/cloud/root.rb +10 -12
  18. data/plugins/commands/cloud/version/root.rb +10 -12
  19. data/plugins/commands/plugin/command/root.rb +10 -12
  20. data/plugins/communicators/none/communicator.rb +46 -0
  21. data/plugins/communicators/none/plugin.rb +26 -0
  22. data/plugins/hosts/windows/cap/fs_iso.rb +25 -3
  23. data/plugins/kernel_v2/config/vm.rb +3 -0
  24. data/plugins/providers/hyperv/action/import.rb +16 -2
  25. data/plugins/providers/hyperv/action.rb +2 -0
  26. data/plugins/providers/hyperv/scripts/import_vm.ps1 +8 -1
  27. data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +22 -0
  28. data/plugins/providers/virtualbox/action/network.rb +6 -3
  29. data/plugins/providers/virtualbox/action.rb +2 -11
  30. data/plugins/providers/virtualbox/driver/base.rb +5 -4
  31. data/plugins/providers/virtualbox/driver/meta.rb +1 -0
  32. data/plugins/providers/virtualbox/driver/version_4_0.rb +2 -0
  33. data/plugins/providers/virtualbox/driver/version_4_1.rb +2 -0
  34. data/plugins/providers/virtualbox/driver/version_4_2.rb +2 -0
  35. data/plugins/providers/virtualbox/driver/version_4_3.rb +2 -0
  36. data/plugins/providers/virtualbox/driver/version_5_0.rb +2 -0
  37. data/plugins/providers/virtualbox/driver/version_7_0.rb +23 -20
  38. data/templates/locales/en.yml +43 -0
  39. data/vagrant.gemspec +0 -3
  40. data/version.txt +1 -1
  41. metadata +4 -44
@@ -55,18 +55,16 @@ module VagrantPlugins
55
55
  opts.banner = "Usage: vagrant cloud provider <subcommand> [<args>]"
56
56
  opts.separator ""
57
57
  opts.separator "For various provider actions with Vagrant Cloud"
58
- if !Vagrant.server_mode?
59
- opts.separator ""
60
- opts.separator "Available subcommands:"
61
-
62
- # Add the available subcommands as separators in order to print them
63
- # out as well.
64
- keys = []
65
- @subcommands.each { |key, value| keys << key.to_s }
66
-
67
- keys.sort.each do |key|
68
- opts.separator " #{key}"
69
- end
58
+ opts.separator ""
59
+ opts.separator "Available subcommands:"
60
+
61
+ # Add the available subcommands as separators in order to print them
62
+ # out as well.
63
+ keys = []
64
+ @subcommands.each { |key, value| keys << key.to_s }
65
+
66
+ keys.sort.each do |key|
67
+ opts.separator " #{key}"
70
68
  end
71
69
  opts.separator ""
72
70
  opts.separator "For help on any individual subcommand run `vagrant cloud provider <subcommand> -h`"
@@ -83,18 +83,16 @@ module VagrantPlugins
83
83
  opts.separator ""
84
84
  opts.separator "The cloud command can be used for taking actions against"
85
85
  opts.separator "Vagrant Cloud like searching or uploading a Vagrant Box"
86
- if !Vagrant.server_mode?
87
- opts.separator ""
88
- opts.separator "Available subcommands:"
89
-
90
- # Add the available subcommands as separators in order to print them
91
- # out as well.
92
- keys = []
93
- @subcommands.each { |key, value| keys << key.to_s }
94
-
95
- keys.sort.each do |key|
96
- opts.separator " #{key.ljust(15)} #{@subcommand_helptext[key.to_sym]}"
97
- end
86
+ opts.separator ""
87
+ opts.separator "Available subcommands:"
88
+
89
+ # Add the available subcommands as separators in order to print them
90
+ # out as well.
91
+ keys = []
92
+ @subcommands.each { |key, value| keys << key.to_s }
93
+
94
+ keys.sort.each do |key|
95
+ opts.separator " #{key.ljust(15)} #{@subcommand_helptext[key.to_sym]}"
98
96
  end
99
97
  opts.separator ""
100
98
  opts.separator "For help on any individual subcommand run `vagrant cloud <subcommand> -h`"
@@ -59,18 +59,16 @@ module VagrantPlugins
59
59
  opts.banner = "Usage: vagrant cloud version <subcommand> [<args>]"
60
60
  opts.separator ""
61
61
  opts.separator "For taking various actions against a Vagrant box's version attribute on Vagrant Cloud"
62
- if !Vagrant.server_mode?
63
- opts.separator ""
64
- opts.separator "Available subcommands:"
65
-
66
- # Add the available subcommands as separators in order to print them
67
- # out as well.
68
- keys = []
69
- @subcommands.each { |key, value| keys << key.to_s }
70
-
71
- keys.sort.each do |key|
72
- opts.separator " #{key}"
73
- end
62
+ opts.separator ""
63
+ opts.separator "Available subcommands:"
64
+
65
+ # Add the available subcommands as separators in order to print them
66
+ # out as well.
67
+ keys = []
68
+ @subcommands.each { |key, value| keys << key.to_s }
69
+
70
+ keys.sort.each do |key|
71
+ opts.separator " #{key}"
74
72
  end
75
73
  opts.separator ""
76
74
  opts.separator "For help on any individual subcommand run `vagrant cloud version <subcommand> -h`"
@@ -73,18 +73,16 @@ module VagrantPlugins
73
73
  def help
74
74
  opts = OptionParser.new do |o|
75
75
  o.banner = "Usage: vagrant plugin <command> [<args>]"
76
- if !Vagrant.server_mode?
77
- o.separator ""
78
- o.separator "Available subcommands:"
79
-
80
- # Add the available subcommands as separators in order to print them
81
- # out as well.
82
- keys = []
83
- @subcommands.each { |key, value| keys << key.to_s }
84
-
85
- keys.sort.each do |key|
86
- o.separator " #{key}"
87
- end
76
+ o.separator ""
77
+ o.separator "Available subcommands:"
78
+
79
+ # Add the available subcommands as separators in order to print them
80
+ # out as well.
81
+ keys = []
82
+ @subcommands.each { |key, value| keys << key.to_s }
83
+
84
+ keys.sort.each do |key|
85
+ o.separator " #{key}"
88
86
  end
89
87
  o.separator ""
90
88
  o.separator "For help on any individual command run `vagrant plugin COMMAND -h`"
@@ -0,0 +1,46 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "log4r"
5
+ require "vagrant"
6
+
7
+ module VagrantPlugins
8
+ module CommunicatorNone
9
+ # This class provides no communication with the VM.
10
+ # It allows Vagrant to manage a machine lifecycle
11
+ # while not actually connecting to it. The communicator
12
+ # stubs out all methods to be successful allowing
13
+ # Vagrant to proceed "as normal" without actually
14
+ # doing anything.
15
+ class Communicator < Vagrant.plugin("2", :communicator)
16
+ def self.match?(_)
17
+ # Any machine can be not communicated with
18
+ true
19
+ end
20
+
21
+ def initialize(_)
22
+ @logger = Log4r::Logger.new(self.class.name.downcase)
23
+ end
24
+
25
+ def ready?
26
+ @logger.debug("#ready? stub called on none")
27
+ true
28
+ end
29
+
30
+ def execute(*_)
31
+ @logger.debug("#execute stub called on none")
32
+ 0
33
+ end
34
+
35
+ def sudo(*_)
36
+ @logger.debug("#sudo stub called on none")
37
+ 0
38
+ end
39
+
40
+ def test(*_)
41
+ @logger.debug("#test stub called on none")
42
+ true
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,26 @@
1
+ # Copyright (c) HashiCorp, Inc.
2
+ # SPDX-License-Identifier: BUSL-1.1
3
+
4
+ require "vagrant"
5
+
6
+ module VagrantPlugins
7
+ Vagrant::Util::Experimental.guard_with(:none_communicator) do
8
+ module CommunicatorNone
9
+ class Plugin < Vagrant.plugin("2")
10
+ name "none communicator"
11
+ description <<-DESC
12
+ This plugin provides no communication to remote machines.
13
+ It allows Vagrant to manage remote machines without the
14
+ ability to connect to them for configuration/provisioning.
15
+ Any calls to methods provided by this communicator will
16
+ always be successful.
17
+ DESC
18
+
19
+ communicator("none") do
20
+ require File.expand_path("../communicator", __FILE__)
21
+ Communicator
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -12,14 +12,22 @@ module VagrantPlugins
12
12
 
13
13
  @@logger = Log4r::Logger.new("vagrant::host::windows::fs_iso")
14
14
 
15
- BUILD_ISO_CMD = "oscdimg".freeze
15
+ BUILD_ISO_CMD = "oscdimg.exe".freeze
16
+ DEPLOYMENT_KIT_PATHS = [
17
+ "C:/Program Files (x86)/Windows Kits/10/Assessment and Deployment Kit/Deployment Tools".freeze,
18
+ ].freeze
16
19
 
17
20
  # Check that the host has the ability to generate ISOs
18
21
  #
19
22
  # @param [Vagrant::Environment] env
20
23
  # @return [Boolean]
21
24
  def self.isofs_available(env)
22
- !!Vagrant::Util::Which.which(BUILD_ISO_CMD)
25
+ begin
26
+ oscdimg_path
27
+ true
28
+ rescue Vagrant::Errors::OscdimgCommandMissingError
29
+ false
30
+ end
23
31
  end
24
32
 
25
33
  # Generate an ISO file of the given source directory
@@ -36,7 +44,7 @@ module VagrantPlugins
36
44
  source_directory = Pathname.new(source_directory)
37
45
  file_destination = self.ensure_output_iso(extra_opts[:file_destination])
38
46
 
39
- iso_command = [BUILD_ISO_CMD, "-j1", "-o", "-m"]
47
+ iso_command = [oscdimg_path, "-j1", "-o", "-m"]
40
48
  iso_command << "-l#{extra_opts[:volume_id]}" if extra_opts[:volume_id]
41
49
  iso_command << source_directory.to_s
42
50
  iso_command << file_destination.to_s
@@ -45,6 +53,20 @@ module VagrantPlugins
45
53
  @@logger.info("ISO available at #{file_destination}")
46
54
  file_destination
47
55
  end
56
+
57
+ # @return [String] oscdimg executable
58
+ def self.oscdimg_path
59
+ return BUILD_ISO_CMD if Vagrant::Util::Which.which(BUILD_ISO_CMD)
60
+ @@logger.debug("#{BUILD_ISO_CMD} not found on PATH")
61
+ DEPLOYMENT_KIT_PATHS.each do |base|
62
+ path = File.join(base, Vagrant::Util::Platform.architecture,
63
+ "Oscdimg", BUILD_ISO_CMD)
64
+ @@logger.debug("#{BUILD_ISO_CMD} check at #{path}")
65
+ return path if File.executable?(path)
66
+ end
67
+
68
+ raise Vagrant::Errors::OscdimgCommandMissingError
69
+ end
48
70
  end
49
71
  end
50
72
  end
@@ -47,6 +47,7 @@ module VagrantPlugins
47
47
  attr_accessor :box_download_insecure
48
48
  attr_accessor :box_download_location_trusted
49
49
  attr_accessor :box_download_options
50
+ attr_accessor :cloud_init_first_boot_only
50
51
  attr_accessor :communicator
51
52
  attr_accessor :graceful_halt_timeout
52
53
  attr_accessor :guest
@@ -87,6 +88,7 @@ module VagrantPlugins
87
88
  @box_version = UNSET_VALUE
88
89
  @allow_hosts_modification = UNSET_VALUE
89
90
  @clone = UNSET_VALUE
91
+ @cloud_init_first_boot_only = UNSET_VALUE
90
92
  @communicator = UNSET_VALUE
91
93
  @graceful_halt_timeout = UNSET_VALUE
92
94
  @guest = UNSET_VALUE
@@ -536,6 +538,7 @@ module VagrantPlugins
536
538
  @box_extra_download_options = Vagrant::Util::MapCommandOptions.map_to_command_options(@box_download_options)
537
539
  @allow_hosts_modification = true if @allow_hosts_modification == UNSET_VALUE
538
540
  @clone = nil if @clone == UNSET_VALUE
541
+ @cloud_init_first_boot_only = @cloud_init_first_boot_only == UNSET_VALUE ? true : !!@cloud_init_first_boot_only
539
542
  @communicator = nil if @communicator == UNSET_VALUE
540
543
  @graceful_halt_timeout = 60 if @graceful_halt_timeout == UNSET_VALUE
541
544
  @guest = nil if @guest == UNSET_VALUE
@@ -70,14 +70,28 @@ module VagrantPlugins
70
70
  "LinkedClone" => !!env[:machine].provider_config.linked_clone,
71
71
  "SourcePath" => Vagrant::Util::Platform.wsl_to_windows_path(image_path).gsub("/", "\\"),
72
72
  "VMName" => env[:machine].provider_config.vmname,
73
+ "Memory" => env[:machine].provider_config.memory,
74
+ "MaxMemory" => env[:machine].provider_config.maxmemory,
75
+ "Processors" => env[:machine].provider_config.cpus,
73
76
  }
74
77
 
75
-
76
78
  env[:ui].detail("Creating and registering the VM...")
77
79
  server = env[:machine].provider.driver.import(options)
78
80
 
81
+ @logger.debug("import result value: #{server.inspect}")
82
+
83
+ sid = case server["id"]
84
+ when String
85
+ server["id"]
86
+ when Array
87
+ server["id"].first
88
+ else
89
+ raise TypeError,
90
+ "Expected String or Array value, received: #{server["id"].class}"
91
+ end
92
+
79
93
  env[:ui].detail("Successfully imported VM")
80
- env[:machine].id = server["id"]
94
+ env[:machine].id = sid
81
95
  @app.call(env)
82
96
  end
83
97
  end
@@ -152,12 +152,14 @@ module VagrantPlugins
152
152
  b3.use NetSetMac
153
153
  end
154
154
 
155
+ b3.use CloudInitSetup
155
156
  b3.use CleanupDisks
156
157
  b3.use Disk
157
158
  b3.use SyncedFolderCleanup
158
159
  b3.use StartInstance
159
160
  b3.use WaitForIPAddress
160
161
  b3.use WaitForCommunicator, [:running]
162
+ b3.use CloudInitWait
161
163
  b3.use SyncedFolders
162
164
  b3.use SetHostname
163
165
  end
@@ -15,6 +15,12 @@ param(
15
15
  [parameter (Mandatory=$false)]
16
16
  [switch] $LinkedClone,
17
17
  [parameter (Mandatory=$false)]
18
+ [int] $Memory = $null,
19
+ [parameter (Mandatory=$false)]
20
+ [int] $MaxMemory = $null,
21
+ [parameter (Mandatory=$false)]
22
+ [int] $Processors = $null,
23
+ [parameter (Mandatory=$false)]
18
24
  [string] $VMName=$null
19
25
  )
20
26
 
@@ -28,7 +34,8 @@ try {
28
34
  }
29
35
 
30
36
  $VM = New-VagrantVM -VMConfigFile $VMConfigFile -DestinationPath $DestinationPath `
31
- -DataPath $DataPath -SourcePath $SourcePath -LinkedClone $linked -VMName $VMName
37
+ -DataPath $DataPath -SourcePath $SourcePath -LinkedClone $linked -Memory $Memory `
38
+ -MaxMemory $MaxMemory -CPUCount $Processors -VMName $VMName
32
39
 
33
40
  $Result = @{
34
41
  id = $VM.Id.Guid;
@@ -33,6 +33,12 @@ function New-VagrantVM {
33
33
  [string] $SourcePath,
34
34
  [parameter (Mandatory=$false)]
35
35
  [bool] $LinkedClone = $false,
36
+ [parameter (Mandatory=$false)]
37
+ [int] $Memory = $null,
38
+ [parameter (Mandatory=$false)]
39
+ [int] $MaxMemory = $null,
40
+ [parameter (Mandatory=$false)]
41
+ [int] $CPUCount = $null,
36
42
  [parameter(Mandatory=$false)]
37
43
  [string] $VMName
38
44
  )
@@ -93,6 +99,12 @@ function New-VagrantVMVMCX {
93
99
  [string] $SourcePath,
94
100
  [parameter (Mandatory=$false)]
95
101
  [bool] $LinkedClone = $false,
102
+ [parameter (Mandatory=$false)]
103
+ [int] $Memory = $null,
104
+ [parameter (Mandatory=$false)]
105
+ [int] $MaxMemory = $null,
106
+ [parameter (Mandatory=$false)]
107
+ [int] $CPUCount = $null,
96
108
  [parameter(Mandatory=$false)]
97
109
  [string] $VMName
98
110
  )
@@ -127,6 +139,16 @@ function New-VagrantVMVMCX {
127
139
  # Disconnect adapters from switches
128
140
  Hyper-V\Get-VMNetworkAdapter -VM $VM | Hyper-V\Disconnect-VMNetworkAdapter
129
141
 
142
+ # If we have a memory value provided, set it here
143
+ if($Memory -ne $null) {
144
+ Set-VagrantVMMemory -VM $VM -Memory $Memory -MaxMemory $MaxMemory
145
+ }
146
+
147
+ # If we have a CPU count provided, set it here
148
+ if($CPUCount -ne $null) {
149
+ Set-VagrantVMCPUS -VM $VM -CPUCount $CPUCount
150
+ }
151
+
130
152
  # Verify new VM
131
153
  $Report = Hyper-V\Compare-VM -CompatibilityReport $VMConfig
132
154
  if($Report.Incompatibilities.Length -gt 0){
@@ -27,7 +27,10 @@ module VagrantPlugins
27
27
  # Version of VirtualBox on darwin platform that ignores restrictions
28
28
  DARWIN_IGNORE_HOSTONLY_VALIDATE_VERSION = Gem::Version.new("7.0.0")
29
29
  # Default valid range for hostonly networks
30
- HOSTONLY_DEFAULT_RANGE = [IPAddr.new("192.168.56.0/21").freeze].freeze
30
+ HOSTONLY_DEFAULT_RANGE = [
31
+ IPAddr.new("192.168.56.0/21").freeze,
32
+ IPAddr.new("fe80::/10").freeze
33
+ ].freeze
31
34
 
32
35
  include Vagrant::Util::NetworkIP
33
36
  include Vagrant::Util::ScopedHashOverride
@@ -359,9 +362,9 @@ module VagrantPlugins
359
362
  # Find the hostonly interface name if display name was
360
363
  # provided
361
364
  if options[:name]
362
- hostif = @env[:machine].provider.driver.read_host_only_networks.detect { |interface|
365
+ hostif = @env[:machine].provider.driver.read_host_only_interfaces.detect { |interface|
363
366
  interface[:name] == options[:name] ||
364
- interface[:vboxnetworkname] == options[:name]
367
+ interface[:display_name] == options[:name]
365
368
  }
366
369
  options[:name] = hostif[:name] if hostif
367
370
  end
@@ -82,22 +82,14 @@ module VagrantPlugins
82
82
  b.use ForwardPorts
83
83
  b.use SetHostname
84
84
  b.use SaneDefaults
85
- b.use Call, IsEnvSet, :cloud_init do |env, b2|
86
- if env[:result]
87
- b2.use CloudInitSetup
88
- end
89
- end
85
+ b.use CloudInitSetup
90
86
  b.use CleanupDisks
91
87
  b.use Disk
92
88
  b.use Customize, "pre-boot"
93
89
  b.use Boot
94
90
  b.use Customize, "post-boot"
95
91
  b.use WaitForCommunicator, [:starting, :running, :paused]
96
- b.use Call, IsEnvSet, :cloud_init do |env, b2|
97
- if env[:result]
98
- b2.use CloudInitWait
99
- end
100
- end
92
+ b.use CloudInitWait
101
93
  b.use Customize, "post-comm"
102
94
  b.use CheckGuestAdditions
103
95
  end
@@ -424,7 +416,6 @@ module VagrantPlugins
424
416
  end
425
417
  end
426
418
 
427
- b.use EnvSet, cloud_init: true
428
419
  b.use action_start
429
420
  end
430
421
  end
@@ -256,10 +256,11 @@ module VagrantPlugins
256
256
  # Each interface is represented as a Hash with the following details:
257
257
  #
258
258
  # {
259
- # :name => String, # interface name, e.g. "vboxnet0"
260
- # :ip => String, # IP address of the interface, e.g. "172.28.128.1"
261
- # :netmask => String, # netmask associated with the interface, e.g. "255.255.255.0"
262
- # :status => String, # status of the interface, e.g. "Up", "Down"
259
+ # :name => String, # interface name, e.g. "vboxnet0"
260
+ # :ip => String, # IP address of the interface, e.g. "172.28.128.1"
261
+ # :netmask => String, # netmask associated with the interface, e.g. "255.255.255.0"
262
+ # :status => String, # status of the interface, e.g. "Up", "Down"
263
+ # :display_name => String, # user friendly display name if available
263
264
  # }
264
265
  #
265
266
  # @return [Array<Hash>] See comment above for details
@@ -134,6 +134,7 @@ module VagrantPlugins
134
134
  :read_guest_ip,
135
135
  :read_guest_property,
136
136
  :read_host_only_interfaces,
137
+ :read_host_only_networks,
137
138
  :read_mac_address,
138
139
  :read_mac_addresses,
139
140
  :read_machine_folder,
@@ -345,6 +345,8 @@ module VagrantPlugins
345
345
  info[:ipv6_prefix] = $1.to_s.strip
346
346
  elsif status = line[/^Status:\s+(.+?)$/, 1]
347
347
  info[:status] = status
348
+ elsif line =~ /^VBoxNetworkName:\s+(.+?)$/
349
+ info[:display_name] = $1.to_s
348
350
  end
349
351
  end
350
352
 
@@ -447,6 +447,8 @@ module VagrantPlugins
447
447
  info[:ipv6_prefix] = $1.to_s.strip
448
448
  elsif status = line[/^Status:\s+(.+?)$/, 1]
449
449
  info[:status] = status
450
+ elsif line =~ /^VBoxNetworkName:\s+(.+?)$/
451
+ info[:display_name] = $1.to_s
450
452
  end
451
453
  end
452
454
 
@@ -381,6 +381,8 @@ module VagrantPlugins
381
381
  info[:ipv6_prefix] = $1.to_s.strip
382
382
  elsif line =~ /^Status:\s+(.+?)$/
383
383
  info[:status] = $1.to_s
384
+ elsif line =~ /^VBoxNetworkName:\s+(.+?)$/
385
+ info[:display_name] = $1.to_s
384
386
  end
385
387
  end
386
388
 
@@ -492,6 +492,8 @@ module VagrantPlugins
492
492
  info[:ipv6_prefix] = $1.to_s.strip
493
493
  elsif line =~ /^Status:\s+(.+?)$/
494
494
  info[:status] = $1.to_s
495
+ elsif line =~ /^VBoxNetworkName:\s+(.+?)$/
496
+ info[:display_name] = $1.to_s
495
497
  end
496
498
  end
497
499
 
@@ -635,6 +635,8 @@ module VagrantPlugins
635
635
  info[:ipv6_prefix] = $1.to_s.strip
636
636
  elsif line =~ /^Status:\s+(.+?)$/
637
637
  info[:status] = $1.to_s
638
+ elsif line =~ /^VBoxNetworkName:\s+(.+?)$/
639
+ info[:display_name] = $1.to_s
638
640
  end
639
641
  end
640
642
 
@@ -215,26 +215,6 @@ module VagrantPlugins
215
215
  end
216
216
  end
217
217
 
218
- # Generate list of host only networks
219
- def read_host_only_networks
220
- networks = []
221
- current = nil
222
- execute("list", "hostonlynets", retryable: true).split("\n").each do |line|
223
- line.chomp!
224
- next if line.empty?
225
- key, value = line.split(":", 2).map(&:strip)
226
- key = key.downcase
227
- if key == "name"
228
- networks.push(current) if !current.nil?
229
- current = Vagrant::Util::HashWithIndifferentAccess.new
230
- end
231
- current[key] = value
232
- end
233
- networks.push(current) if !current.nil?
234
-
235
- networks
236
- end
237
-
238
218
  # The initial VirtualBox 7.0 release has an issue with displaying port
239
219
  # forward information. When a single port forward is defined, the forwarding
240
220
  # information can be found in the `showvminfo` output. Once more than a
@@ -282,6 +262,29 @@ module VagrantPlugins
282
262
  results
283
263
  end
284
264
 
265
+ protected
266
+
267
+ # Generate list of host only networks
268
+ # NOTE: This is darwin specific
269
+ def read_host_only_networks
270
+ networks = []
271
+ current = nil
272
+ execute("list", "hostonlynets", retryable: true).split("\n").each do |line|
273
+ line.chomp!
274
+ next if line.empty?
275
+ key, value = line.split(":", 2).map(&:strip)
276
+ key = key.downcase
277
+ if key == "name"
278
+ networks.push(current) if !current.nil?
279
+ current = Vagrant::Util::HashWithIndifferentAccess.new
280
+ end
281
+ current[key] = value
282
+ end
283
+ networks.push(current) if !current.nil?
284
+
285
+ networks
286
+ end
287
+
285
288
  private
286
289
 
287
290
  # Returns if hostonlynets are enabled on the current
@@ -510,6 +510,41 @@ en:
510
510
  Name: %{name}
511
511
  Address: %{url}
512
512
  Requested provider: %{requested}
513
+ box_add_no_architecture_support: |-
514
+ The box you're attempting to add doesn't support the requested
515
+ architecture. Please find an alternate box that support the
516
+ requested architecture.
517
+
518
+ Box: %{name}
519
+ Address: %{url}
520
+ Architecture: %{architecture}
521
+ box_add_no_matching_architecture: |-
522
+ The box you're attempting to add doesn't support the requested
523
+ architecture with the current provider. The following providers
524
+ support the requested architecture for this box:
525
+
526
+ %{supported_providers}
527
+
528
+ If the above providers cannot be used, please find and alternate
529
+ box that supports the requested architecture.
530
+
531
+ Box: %{name}
532
+ Address: %{url}
533
+ Architecture: %{architecture}
534
+ Provider: %{provider}
535
+ box_add_no_matching_provider_version: |-
536
+ The box you're attempting to add has no available version that
537
+ matches the constraints you requested with support for the
538
+ required provider and architecture. Versions of the box that
539
+ support the required provider and architecture are listed
540
+ below.
541
+
542
+ Box: %{name}
543
+ Address: %{url}
544
+ Constraints: %{constraints}
545
+ Architecture: %{architecture}
546
+ Provider: %{provider}
547
+ Supported versions: %{versions}
513
548
  box_add_no_matching_version: |-
514
549
  The box you're attempting to add has no available version that
515
550
  matches the constraints you requested. Please double-check your
@@ -1215,6 +1250,14 @@ en:
1215
1250
  get an ID of a target machine from `vagrant global-status` to run
1216
1251
  this command on. A final option is to change to a directory with a
1217
1252
  Vagrantfile and to try again.
1253
+ oscdimg_command_missing: |-
1254
+ Vagrant failed to locate the oscdimg.exe executable which is required
1255
+ for creating ISO files. Please ensure the oscdimg.exe executable is
1256
+ available on the configured PATH. If the oscdimg.exe executable is
1257
+ not found on the local system, it can be installed with the Windows
1258
+ Assessment and Deployment Kit:
1259
+
1260
+ https://go.microsoft.com/fwlink/?linkid=2196127
1218
1261
  plugin_gem_not_found: |-
1219
1262
  The plugin '%{name}' could not be installed because it could not
1220
1263
  be found. Please double check the name and try again.
data/vagrant.gemspec CHANGED
@@ -21,8 +21,6 @@ Gem::Specification.new do |s|
21
21
  s.add_dependency "csv", "~> 3.3"
22
22
  s.add_dependency "ed25519", "~> 1.3.0"
23
23
  s.add_dependency "erubi"
24
- s.add_dependency 'googleapis-common-protos-types', '~> 1.3'
25
- s.add_dependency "grpc", "~> 1.62"
26
24
  s.add_dependency "hashicorp-checkpoint", "~> 0.1.5"
27
25
  s.add_dependency "i18n", "~> 1.12"
28
26
  s.add_dependency "listen", "~> 3.7"
@@ -36,7 +34,6 @@ Gem::Specification.new do |s|
36
34
  s.add_dependency "ostruct", "~> 0.6.0"
37
35
  s.add_dependency "rb-kqueue", "~> 0.2.0"
38
36
  s.add_dependency "rexml", "~> 3.2"
39
- s.add_dependency "rgl", "~> 0.5.10"
40
37
  s.add_dependency "rubyzip", "~> 2.3.2"
41
38
  s.add_dependency "vagrant_cloud", "~> 3.1.2"
42
39
  s.add_dependency "wdm", "~> 0.2.0"
data/version.txt CHANGED
@@ -1 +1 @@
1
- 2.4.4
1
+ 2.4.6