vagrant-parallels 2.2.5 → 2.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +17 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/lib/vagrant-parallels/action/box_register.rb +3 -6
- data/lib/vagrant-parallels/action/import.rb +3 -1
- data/lib/vagrant-parallels/action/prepare_clone_snapshot.rb +7 -0
- data/lib/vagrant-parallels/action/prepare_nfs_settings.rb +1 -1
- data/lib/vagrant-parallels/action/sane_defaults.rb +5 -0
- data/lib/vagrant-parallels/driver/base.rb +18 -5
- data/lib/vagrant-parallels/driver/meta.rb +2 -1
- data/lib/vagrant-parallels/plugin.rb +1 -0
- data/lib/vagrant-parallels/util/common.rb +15 -0
- data/lib/vagrant-parallels/version.rb +1 -1
- data/locales/en.yml +1 -1
- metadata +21 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4cc3b37f94bef78ed214b98add9ae9814d6cad49650e5016fce26c7b7641eaaa
|
4
|
+
data.tar.gz: 0e1ffee3b192374a3acc9b36438334605702e7c5b472d1e47857a31acd5c7196
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f03a6bc1a95f28f95a736d3ce59dc52edb00bd609780e24ef26b38090ef32421ef8db5f362cd9692954aa88292e18af89cd884ea423f9a244d5932cdfff1749d
|
7
|
+
data.tar.gz: 86467aba98c5870183d5da52a0b688ca28f5f06eb5160d983ea26d80a582a20108958e0b54c2c4ee14adb8f3740608ffeaf4f84debdbafb614a79da75c9f8e5b
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,20 @@
|
|
1
|
+
## 2.3.0 (March 22, 2022)
|
2
|
+
IMPROVEMENTS:
|
3
|
+
- Support fetching the VM IP using prlctl
|
4
|
+
[[GH-434](https://github.com/Parallels/vagrant-parallels/pull/434)].
|
5
|
+
- Update gem dependensies and support Ruby 3.0
|
6
|
+
[[GH-437](https://github.com/Parallels/vagrant-parallels/pull/437)],
|
7
|
+
[[GH-439](https://github.com/Parallels/vagrant-parallels/pull/439)].
|
8
|
+
|
9
|
+
BUG FIXES:
|
10
|
+
- Fixes SSH access to `.macvm` VMs on Macs with Apple M-series chip
|
11
|
+
[[GH-435](https://github.com/Parallels/vagrant-parallels/issues/435)]
|
12
|
+
|
13
|
+
## 2.2.6 (December 19, 2022)
|
14
|
+
BUG FIXES:
|
15
|
+
- Fix the macOS VMs support on ARM-based Mac
|
16
|
+
[[GH-429](https://github.com/Parallels/vagrant-parallels/pull/429)]
|
17
|
+
|
1
18
|
## 2.2.5 (February 22, 2022)
|
2
19
|
BUG FIXES:
|
3
20
|
- Fixed Parallels Tool installation on M1 hosts with arm64
|
data/LICENSE.txt
CHANGED
data/README.md
CHANGED
@@ -53,6 +53,6 @@ please report it on the [Issue Tracker](https://github.com/Parallels/vagrant-par
|
|
53
53
|
|
54
54
|
* Author: Youssef Shahin <yshahin@gmail.com>
|
55
55
|
* Author: Mikhail Zholobov <legal90@gmail.com>
|
56
|
-
* Copyright 2013-
|
56
|
+
* Copyright 2013-2023, Parallels International GmbH.
|
57
57
|
|
58
58
|
Vagrant Parallels Provider is open-sourced software licensed under the [MIT license](https://opensource.org/licenses/MIT).
|
@@ -39,13 +39,13 @@ module VagrantPlugins
|
|
39
39
|
protected
|
40
40
|
|
41
41
|
def box_path(env)
|
42
|
-
|
42
|
+
res = Dir.glob(env[:machine].box.directory.join('*.{pvm,macvm}')).first
|
43
43
|
|
44
|
-
if !
|
44
|
+
if !res
|
45
45
|
raise Errors::BoxImageNotFound, name: env[:machine].box.name
|
46
46
|
end
|
47
47
|
|
48
|
-
|
48
|
+
res
|
49
49
|
end
|
50
50
|
|
51
51
|
def box_id(env)
|
@@ -120,9 +120,6 @@ module VagrantPlugins
|
|
120
120
|
f.write(env[:clone_id])
|
121
121
|
end
|
122
122
|
|
123
|
-
# Convert template to VM (compatibility with old-styled boxes)
|
124
|
-
env[:machine].provider.driver.execute_prlctl(
|
125
|
-
'set', env[:clone_id], '--template', 'off')
|
126
123
|
end
|
127
124
|
end
|
128
125
|
end
|
@@ -4,6 +4,7 @@ module VagrantPlugins
|
|
4
4
|
module Parallels
|
5
5
|
module Action
|
6
6
|
class Import
|
7
|
+
include VagrantPlugins::Parallels::Util::Common
|
7
8
|
@@lock = Mutex.new
|
8
9
|
|
9
10
|
def initialize(app, env)
|
@@ -24,7 +25,8 @@ module VagrantPlugins
|
|
24
25
|
end
|
25
26
|
|
26
27
|
# Linked clones are supported only for PD 11 and higher
|
27
|
-
|
28
|
+
# Linked clones are not supported in macvms
|
29
|
+
if env[:machine].provider_config.linked_clone and !is_macvm(env)
|
28
30
|
# Linked clone creation should not be concurrent [GH-206]
|
29
31
|
options[:snapshot_id] = env[:clone_snapshot_id]
|
30
32
|
options[:linked] = true
|
@@ -6,6 +6,7 @@ module VagrantPlugins
|
|
6
6
|
module Parallels
|
7
7
|
module Action
|
8
8
|
class PrepareCloneSnapshot
|
9
|
+
include VagrantPlugins::Parallels::Util::Common
|
9
10
|
@@lock = Mutex.new
|
10
11
|
|
11
12
|
def initialize(app, env)
|
@@ -19,6 +20,12 @@ module VagrantPlugins
|
|
19
20
|
return @app.call(env)
|
20
21
|
end
|
21
22
|
|
23
|
+
if is_macvm(env)
|
24
|
+
#Ignore, since macvms doesn't support snapshot creation
|
25
|
+
@logger.info('Snapshot creation is not supported yet for macOS ARM Guests, skip snapshot preparing')
|
26
|
+
return @app.call(env)
|
27
|
+
end
|
28
|
+
|
22
29
|
# If we're not doing a linked clone, snapshots don't matter
|
23
30
|
if !env[:machine].provider_config.linked_clone
|
24
31
|
return @app.call(env)
|
@@ -37,7 +37,7 @@ module VagrantPlugins
|
|
37
37
|
# The ! indicates that this method modifies its argument.
|
38
38
|
def add_ips_to_env!(env)
|
39
39
|
host_ip = @machine.provider.driver.read_shared_interface[:ip]
|
40
|
-
guest_ip = @machine.provider.driver.
|
40
|
+
guest_ip = @machine.provider.driver.ssh_ip
|
41
41
|
|
42
42
|
# If we couldn't determine either guest's or host's IP, then
|
43
43
|
# it is probably a bug. Display an appropriate error message.
|
@@ -4,6 +4,8 @@ module VagrantPlugins
|
|
4
4
|
module Parallels
|
5
5
|
module Action
|
6
6
|
class SaneDefaults
|
7
|
+
include VagrantPlugins::Parallels::Util::Common
|
8
|
+
|
7
9
|
def initialize(app, env)
|
8
10
|
@logger = Log4r::Logger.new('vagrant_parallels::action::sanedefaults')
|
9
11
|
@app = app
|
@@ -27,6 +29,9 @@ module VagrantPlugins
|
|
27
29
|
private
|
28
30
|
|
29
31
|
def default_settings
|
32
|
+
# Options defined below are not supported for `*.macvm` VMs
|
33
|
+
return {} if is_macvm(@env)
|
34
|
+
|
30
35
|
{
|
31
36
|
tools_autoupdate: 'no',
|
32
37
|
on_shutdown: 'close',
|
@@ -403,11 +403,12 @@ module VagrantPlugins
|
|
403
403
|
end
|
404
404
|
end
|
405
405
|
|
406
|
-
# Returns an IP of the virtual machine
|
407
|
-
# adapter is configured for this VM
|
406
|
+
# Returns an IP of the virtual machine fetched from the DHCP lease file.
|
407
|
+
# It requires that Shared network adapter is configured for this VM
|
408
|
+
# and it obtains an IP via DHCP.
|
408
409
|
#
|
409
410
|
# @return [String] IP address leased by DHCP server in "Shared" network
|
410
|
-
def
|
411
|
+
def read_guest_ip_dhcp
|
411
412
|
mac_addr = read_mac_address.downcase
|
412
413
|
leases_file = '/Library/Preferences/Parallels/parallels_dhcp_leases'
|
413
414
|
leases = {}
|
@@ -430,6 +431,15 @@ module VagrantPlugins
|
|
430
431
|
leases.max_by { |_ip, lease_time| lease_time }.first
|
431
432
|
end
|
432
433
|
|
434
|
+
# Returns an IP of the virtual machine fetched from prlctl.
|
435
|
+
#
|
436
|
+
# @return [String] IP address returned by `prlctl list -f` command
|
437
|
+
def read_guest_ip_prlctl
|
438
|
+
vm_info = json { execute_prlctl('list', @uuid, '--full', '--json') }
|
439
|
+
ip = vm_info.first.fetch('ip_configured', nil)
|
440
|
+
ip == '-' ? nil : ip
|
441
|
+
end
|
442
|
+
|
433
443
|
# Returns path to the Parallels Tools ISO file.
|
434
444
|
#
|
435
445
|
# @param [String] guest_os Guest os type: "linux", "darwin" or "windows"
|
@@ -757,11 +767,14 @@ module VagrantPlugins
|
|
757
767
|
end
|
758
768
|
end
|
759
769
|
|
760
|
-
# Reads the SSH IP of this VM
|
770
|
+
# Reads the SSH IP of this VM from DHCP lease file or from `prlctl list`
|
771
|
+
# command - whatever returns a non-empty result.
|
772
|
+
# The method with DHCP does not work for *.macvm VMs on Apple M-series Macs,
|
773
|
+
# so we try both sources here.
|
761
774
|
#
|
762
775
|
# @return [String] IP address to use for SSH connection to the VM.
|
763
776
|
def ssh_ip
|
764
|
-
|
777
|
+
read_guest_ip_dhcp || read_guest_ip_prlctl
|
765
778
|
end
|
766
779
|
|
767
780
|
# Reads the SSH port of this VM.
|
@@ -87,7 +87,8 @@ module VagrantPlugins
|
|
87
87
|
:read_bridged_interfaces,
|
88
88
|
:read_current_snapshot,
|
89
89
|
:read_forwarded_ports,
|
90
|
-
:
|
90
|
+
:read_guest_ip_dhcp,
|
91
|
+
:read_guest_ip_prlctl,
|
91
92
|
:read_guest_tools_state,
|
92
93
|
:read_guest_tools_iso_path,
|
93
94
|
:read_host_only_interfaces,
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module VagrantPlugins
|
2
|
+
module Parallels
|
3
|
+
module Util
|
4
|
+
module Common
|
5
|
+
|
6
|
+
# Determines whether the VM's box contains a macOS guest for an Apple Silicon host.
|
7
|
+
# In this case the image file ends with '.macvm' instead of '.pvm'
|
8
|
+
def is_macvm(env)
|
9
|
+
return !!Dir.glob(env[:machine].box.directory.join('*.macvm')).first
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/locales/en.yml
CHANGED
@@ -16,7 +16,7 @@ en:
|
|
16
16
|
Box VM config: "%{config}"
|
17
17
|
|
18
18
|
box_image_not_found: |-
|
19
|
-
Parallels VM image (*.pvm) could not be found in the directory of
|
19
|
+
Parallels VM image (*.pvm or *.macvm) could not be found in the directory of
|
20
20
|
'%{name}' box. This is usually because the image has been removed manually.
|
21
21
|
Please remove the box, re-add it, and try again.
|
22
22
|
dhcp_leases_file_not_accessible: |-
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-parallels
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mikhail Zholobov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2023-03-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: nokogiri
|
@@ -45,14 +45,14 @@ dependencies:
|
|
45
45
|
requirements:
|
46
46
|
- - "~>"
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 3.
|
48
|
+
version: '3.11'
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - "~>"
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 3.
|
55
|
+
version: '3.11'
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
57
|
name: rspec-its
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,9 +67,23 @@ dependencies:
|
|
67
67
|
- - "~>"
|
68
68
|
- !ruby/object:Gem::Version
|
69
69
|
version: 1.3.0
|
70
|
+
- !ruby/object:Gem::Dependency
|
71
|
+
name: webrick
|
72
|
+
requirement: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 1.8.0
|
77
|
+
type: :development
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - "~>"
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: 1.8.0
|
70
84
|
description: Enables Vagrant to manage Parallels virtual machines.
|
71
85
|
email:
|
72
|
-
-
|
86
|
+
- legal90@gmail.com
|
73
87
|
- yshahin@gmail.com
|
74
88
|
executables: []
|
75
89
|
extensions: []
|
@@ -128,6 +142,7 @@ files:
|
|
128
142
|
- lib/vagrant-parallels/plugin.rb
|
129
143
|
- lib/vagrant-parallels/provider.rb
|
130
144
|
- lib/vagrant-parallels/synced_folder.rb
|
145
|
+
- lib/vagrant-parallels/util/common.rb
|
131
146
|
- lib/vagrant-parallels/util/compile_forwarded_ports.rb
|
132
147
|
- lib/vagrant-parallels/util/unix_mount_helpers.rb
|
133
148
|
- lib/vagrant-parallels/version.rb
|
@@ -151,7 +166,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
166
|
- !ruby/object:Gem::Version
|
152
167
|
version: 1.3.6
|
153
168
|
requirements: []
|
154
|
-
rubygems_version: 3.
|
169
|
+
rubygems_version: 3.2.33
|
155
170
|
signing_key:
|
156
171
|
specification_version: 4
|
157
172
|
summary: Parallels provider for Vagrant.
|