vagrant-parallels 1.2.2 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -4,201 +4,10 @@ describe VagrantPlugins::Parallels::Driver::PD_8 do
4
4
  include_context "parallels"
5
5
  let(:parallels_version) { "8" }
6
6
 
7
- let(:vm_name) {'VM_Name'}
8
-
9
- let(:tpl_uuid) {'1234-some-template-uuid-5678'}
10
- let(:tpl_name) {'Some_Template_Name'}
11
-
12
- let(:tools_state) {'installed'}
13
- let(:tools_version) {'8.0.18615.123456'}
14
-
15
- let(:hostonly_iface) {'vnic10'}
16
-
17
- let(:vnic_options) do {
18
- name: 'vagrant_vnic6',
19
- adapter_ip: '11.11.11.11',
20
- netmask: '255.255.252.0',
21
- dhcp: {
22
- ip: '11.11.11.11',
23
- lower: '11.11.8.1',
24
- upper: '11.11.11.254'
25
- }
26
- } end
27
-
28
7
  subject { VagrantPlugins::Parallels::Driver::Meta.new(uuid) }
29
8
 
30
9
  it_behaves_like "parallels desktop driver"
31
10
 
32
- before do
33
- # Returns short info about all registered VMs
34
- # `prlctl list --all --json`
35
- subprocess.stub(:execute).
36
- with("prlctl", "list", "--all", "--json", kind_of(Hash)) do
37
- out = <<-eos
38
- INFO[
39
- {
40
- "uuid": "#{uuid}",
41
- "status": "stopped",
42
- "name": "#{vm_name}"
43
- }
44
- ]
45
- eos
46
- subprocess_result(stdout: out)
47
- end
48
-
49
- # Returns short info about all registered templates
50
- # `prlctl list --all --json --template`
51
- subprocess.stub(:execute).
52
- with("prlctl", "list", "--all", "--json", "--template", kind_of(Hash)) do
53
- out = <<-eos
54
- INFO[
55
- {
56
- "uuid": "1234-some-template-uuid-5678",
57
- "name": "Some_Template_Name"
58
- }
59
- ]
60
- eos
61
- subprocess_result(stdout: out)
62
- end
63
-
64
-
65
- # Returns detailed info about specified VM or all registered VMs
66
- # `prlctl list <vm_uuid> --info --json`
67
- # `prlctl list --all --info --json`
68
- subprocess.stub(:execute).
69
- with("prlctl", "list", kind_of(String), "--info", "--json",
70
- kind_of(Hash)) do
71
- out = <<-eos
72
- INFO[
73
- {
74
- "ID": "#{uuid}",
75
- "Name": "#{vm_name}",
76
- "State": "stopped",
77
- "Home": "/path/to/#{vm_name}.pvm/",
78
- "GuestTools": {
79
- "state": "#{tools_state}",
80
- "version": "#{tools_version}"
81
- },
82
- "Hardware": {
83
- "cpu": {
84
- "cpus": 1
85
- },
86
- "memory": {
87
- "size": "512Mb"
88
- },
89
- "hdd0": {
90
- "enabled": true,
91
- "image": "/path/to/disk1.hdd"
92
- },
93
- "net0": {
94
- "enabled": true,
95
- "type": "shared",
96
- "mac": "001C42B4B074",
97
- "card": "e1000",
98
- "dhcp": "yes"
99
- },
100
- "net1": {
101
- "enabled": true,
102
- "type": "bridged",
103
- "iface": "vnic2",
104
- "mac": "001C42EC0068",
105
- "card": "e1000",
106
- "ips": "33.33.33.5/255.255.255.0 "
107
- }
108
- },
109
- "Host Shared Folders": {
110
- "enabled": true,
111
- "shared_folder_1": {
112
- "enabled": true,
113
- "path": "/path/to/shared/folder/1"
114
- },
115
- "shared_folder_2": {
116
- "enabled": true,
117
- "path": "/path/to/shared/folder/2"
118
- }
119
- }
120
- }
121
- ]
122
- eos
123
- subprocess_result(stdout: out)
124
- end
125
-
126
- # Returns detailed info about specified template or all registered templates
127
- # `prlctl list <tpl_uuid> --info --json --template`
128
- # `prlctl list --all --info --json --template`
129
- subprocess.stub(:execute).
130
- with("prlctl", "list", kind_of(String), "--info", "--json", "--template",
131
- kind_of(Hash)) do
132
- out = <<-eos
133
- INFO[
134
- {
135
- "ID": "#{tpl_uuid}",
136
- "Name": "#{tpl_name}",
137
- "State": "stopped",
138
- "Home": "/path/to/#{tpl_name}.pvm/",
139
- "GuestTools": {
140
- "state": "#{tools_state}",
141
- "version": "#{tools_version}"
142
- },
143
- "Hardware": {
144
- "cpu": {
145
- "cpus": 1
146
- },
147
- "memory": {
148
- "size": "512Mb"
149
- },
150
- "hdd0": {
151
- "enabled": true,
152
- "image": "/path/to/harddisk.hdd"
153
- },
154
- "net0": {
155
- "enabled": true,
156
- "type": "shared",
157
- "mac": "001C42F6E500",
158
- "card": "e1000",
159
- "dhcp": "yes"
160
- },
161
- "net1": {
162
- "enabled": true,
163
- "type": "bridged",
164
- "iface": "vnic4",
165
- "mac": "001C42AB0071",
166
- "card": "e1000",
167
- "ips": "33.33.33.10/255.255.255.0 "
168
- }
169
- }
170
- }
171
- ]
172
- eos
173
- subprocess_result(stdout: out)
174
- end
175
-
176
- # Returns detailed info about virtual network interface
177
- # `prlsrvctl net info <net_name>, '--json', retryable: true)
178
- subprocess.stub(:execute).
179
- with("prlsrvctl", "net", "info", kind_of(String), "--json",
180
- kind_of(Hash)) do
181
- out = <<-eos
182
- {
183
- "Network ID": "#{vnic_options[:name]}",
184
- "Type": "host-only",
185
- "Bound To": "#{hostonly_iface}",
186
- "Parallels adapter": {
187
- "IP address": "#{vnic_options[:adapter_ip]}",
188
- "Subnet mask": "#{vnic_options[:netmask]}"
189
- },
190
- "DHCPv4 server": {
191
- "Server address": "#{vnic_options[:dhcp][:ip] || "10.37.132.1"}",
192
- "IP scope start address": "#{vnic_options[:dhcp][:lower] || "10.37.132.1"}",
193
- "IP scope end address": "#{vnic_options[:dhcp][:upper] || "10.37.132.254"}"
194
- }
195
- }
196
- eos
197
- subprocess_result(stdout: out)
198
- end
199
-
200
- end
201
-
202
11
  describe "ssh_ip" do
203
12
  let(:content) {'10.200.0.99="1394547632,1800,001c420000ff,01001c420000ff"'}
204
13
 
@@ -2,203 +2,11 @@ require_relative "../base"
2
2
 
3
3
  describe VagrantPlugins::Parallels::Driver::PD_9 do
4
4
  include_context "parallels"
5
- let(:parallels_version) { "9" }
6
-
7
- let(:vm_name) {'VM_Name'}
8
-
9
- let(:tpl_uuid) {'1234-some-template-uuid-5678'}
10
- let(:tpl_name) {'Some_Template_Name'}
11
-
12
- let(:tools_state) {'installed'}
13
- let(:tools_version) {'9.0.23062.123456'}
14
-
15
- let(:hostonly_iface) {'vnic10'}
16
-
17
- let(:vnic_options) do {
18
- name: 'vagrant_vnic6',
19
- adapter_ip: '11.11.11.11',
20
- netmask: '255.255.252.0',
21
- dhcp: {
22
- ip: '11.11.11.11',
23
- lower: '11.11.8.1',
24
- upper: '11.11.11.254'
25
- }
26
- } end
27
5
 
28
6
  subject { VagrantPlugins::Parallels::Driver::Meta.new(uuid) }
29
7
 
30
8
  it_behaves_like "parallels desktop driver"
31
9
 
32
- before do
33
- # Returns short info about all registered VMs
34
- # `prlctl list --all --json`
35
- subprocess.stub(:execute).
36
- with("prlctl", "list", "--all", "--json", kind_of(Hash)) do
37
- out = <<-eos
38
- [
39
- {
40
- "uuid": "#{uuid}",
41
- "status": "stopped",
42
- "name": "#{vm_name}"
43
- }
44
- ]
45
- eos
46
- subprocess_result(stdout: out)
47
- end
48
-
49
- # Returns short info about all registered templates
50
- # `prlctl list --all --json --template`
51
- subprocess.stub(:execute).
52
- with("prlctl", "list", "--all", "--json", "--template", kind_of(Hash)) do
53
- out = <<-eos
54
- [
55
- {
56
- "uuid": "1234-some-template-uuid-5678",
57
- "name": "Some_Template_Name"
58
- }
59
- ]
60
- eos
61
- subprocess_result(stdout: out)
62
- end
63
-
64
-
65
- # Returns detailed info about specified VM or all registered VMs
66
- # `prlctl list <vm_uuid> --info --json`
67
- # `prlctl list --all --info --json`
68
- subprocess.stub(:execute).
69
- with("prlctl", "list", kind_of(String), "--info", "--json",
70
- kind_of(Hash)) do
71
- out = <<-eos
72
- [
73
- {
74
- "ID": "#{uuid}",
75
- "Name": "#{vm_name}",
76
- "State": "stopped",
77
- "Home": "/path/to/#{vm_name}.pvm/",
78
- "GuestTools": {
79
- "state": "#{tools_state}",
80
- "version": "#{tools_version}"
81
- },
82
- "Hardware": {
83
- "cpu": {
84
- "cpus": 1
85
- },
86
- "memory": {
87
- "size": "512Mb"
88
- },
89
- "hdd0": {
90
- "enabled": true,
91
- "image": "/path/to/disk1.hdd"
92
- },
93
- "net0": {
94
- "enabled": true,
95
- "type": "shared",
96
- "mac": "001C42B4B074",
97
- "card": "e1000",
98
- "dhcp": "yes"
99
- },
100
- "net1": {
101
- "enabled": true,
102
- "type": "bridged",
103
- "iface": "vnic2",
104
- "mac": "001C42EC0068",
105
- "card": "e1000",
106
- "ips": "33.33.33.5/255.255.255.0 "
107
- }
108
- },
109
- "Host Shared Folders": {
110
- "enabled": true,
111
- "shared_folder_1": {
112
- "enabled": true,
113
- "path": "/path/to/shared/folder/1"
114
- },
115
- "shared_folder_2": {
116
- "enabled": true,
117
- "path": "/path/to/shared/folder/2"
118
- }
119
- }
120
- }
121
- ]
122
- eos
123
- subprocess_result(stdout: out)
124
- end
125
-
126
- # Returns detailed info about specified template or all registered templates
127
- # `prlctl list <tpl_uuid> --info --json --template`
128
- # `prlctl list --all --info --json --template`
129
- subprocess.stub(:execute).
130
- with("prlctl", "list", kind_of(String), "--info", "--json", "--template",
131
- kind_of(Hash)) do
132
- out = <<-eos
133
- [
134
- {
135
- "ID": "#{tpl_uuid}",
136
- "Name": "#{tpl_name}",
137
- "State": "stopped",
138
- "Home": "/path/to/#{tpl_name}.pvm/",
139
- "GuestTools": {
140
- "state": "#{tools_state}",
141
- "version": "#{tools_version}"
142
- },
143
- "Hardware": {
144
- "cpu": {
145
- "cpus": 1
146
- },
147
- "memory": {
148
- "size": "512Mb"
149
- },
150
- "hdd0": {
151
- "enabled": true,
152
- "image": "/path/to/harddisk.hdd"
153
- },
154
- "net0": {
155
- "enabled": true,
156
- "type": "shared",
157
- "mac": "001C42F6E500",
158
- "card": "e1000",
159
- "dhcp": "yes"
160
- },
161
- "net1": {
162
- "enabled": true,
163
- "type": "bridged",
164
- "iface": "vnic4",
165
- "mac": "001C42AB0071",
166
- "card": "e1000",
167
- "ips": "33.33.33.10/255.255.255.0 "
168
- }
169
- }
170
- }
171
- ]
172
- eos
173
- subprocess_result(stdout: out)
174
- end
175
-
176
- # Returns detailed info about virtual network interface
177
- # `prlsrvctl net info <net_name>, '--json', retryable: true)
178
- subprocess.stub(:execute).
179
- with("prlsrvctl", "net", "info", kind_of(String), "--json",
180
- kind_of(Hash)) do
181
- out = <<-eos
182
- {
183
- "Network ID": "#{vnic_options[:name]}",
184
- "Type": "host-only",
185
- "Bound To": "#{hostonly_iface}",
186
- "Parallels adapter": {
187
- "IP address": "#{vnic_options[:adapter_ip]}",
188
- "Subnet mask": "#{vnic_options[:netmask]}"
189
- },
190
- "DHCPv4 server": {
191
- "Server address": "#{vnic_options[:dhcp][:ip] || "10.37.132.1"}",
192
- "IP scope start address": "#{vnic_options[:dhcp][:lower] || "10.37.132.1"}",
193
- "IP scope end address": "#{vnic_options[:dhcp][:upper] || "10.37.132.254"}"
194
- }
195
- }
196
- eos
197
- subprocess_result(stdout: out)
198
- end
199
-
200
- end
201
-
202
10
  describe "set_power_consumption_mode" do
203
11
  it "turns 'longer-battery-life' on" do
204
12
  subprocess.should_receive(:execute).
@@ -1,31 +1,225 @@
1
- shared_context "parallels" do
1
+ shared_context 'parallels' do
2
2
  let(:parallels_context) { true }
3
- let(:uuid) { "1234-here-is-uuid-5678" }
4
- let(:parallels_version) { "9" }
5
- let(:subprocess) { double("Vagrant::Util::Subprocess") }
6
- let(:driver) { subject.instance_variable_get("@driver") }
3
+ let(:uuid) { '1234-here-is-uuid-5678' }
4
+ let(:parallels_version) { '9' }
5
+ let(:subprocess) { double('Vagrant::Util::Subprocess') }
6
+ let(:driver) { subject.instance_variable_get('@driver') }
7
+
8
+ let(:vm_name) {'VM_Name'}
9
+ let(:tpl_uuid) {'1234-some-template-uuid-5678'}
10
+ let(:tpl_name) {'Some_Template_Name'}
11
+ let(:tools_state) {'installed'}
12
+ let(:tools_version) {'8.0.18615.123456'}
13
+ let(:hostonly_iface) {'vnic10'}
14
+
15
+ let(:vnic_options) do {
16
+ name: 'vagrant_vnic6',
17
+ adapter_ip: '11.11.11.11',
18
+ netmask: '255.255.252.0',
19
+ dhcp: {
20
+ ip: '11.11.11.11',
21
+ lower: '11.11.8.1',
22
+ upper: '11.11.11.254'
23
+ }
24
+ } end
7
25
 
8
26
  # this is a helper that returns a duck type suitable from a system command
9
27
  # execution; allows setting exit_code, stdout, and stderr in stubs.
10
28
  def subprocess_result(options={})
11
- defaults = {exit_code: 0, stdout: "", stderr: ""}
12
- double("subprocess_result", defaults.merge(options))
29
+ defaults = {exit_code: 0, stdout: '', stderr: ''}
30
+ double('subprocess_result', defaults.merge(options))
13
31
  end
14
32
 
15
33
  before do
16
34
  # we don't want unit tests to ever run commands on the system; so we wire
17
35
  # in a double to ensure any unexpected messages raise exceptions
18
- stub_const("Vagrant::Util::Subprocess", subprocess)
36
+ stub_const('Vagrant::Util::Subprocess', subprocess)
19
37
 
20
38
  # drivers will blow up on instantiation if they cannot determine the
21
39
  # Parallels Desktop version, so wire this stub in automatically
22
40
  subprocess.stub(:execute).
23
- with("prlctl", "--version", an_instance_of(Hash)).
41
+ with('prlctl', '--version', an_instance_of(Hash)).
24
42
  and_return(subprocess_result(stdout: "prlctl version #{parallels_version}.0.98765"))
25
43
 
26
44
  # drivers also call vm_exists? during init;
27
45
  subprocess.stub(:execute).
28
- with("prlctl", "list", uuid, kind_of(Hash)).
46
+ with('prlctl', 'list', uuid, kind_of(Hash)).
29
47
  and_return(subprocess_result(exit_code: 0))
48
+
49
+ # Returns detailed info about specified VM or all registered VMs
50
+ # `prlctl list <vm_uuid> --info --no-header --json`
51
+ # `prlctl list --all --info --no-header --json`
52
+ subprocess.stub(:execute).
53
+ with('prlctl', 'list', kind_of(String), '--info', '--no-header', '--json',
54
+ kind_of(Hash)) do
55
+ out = <<-eos
56
+ [
57
+ {
58
+ "ID": "#{uuid}",
59
+ "Name": "#{vm_name}",
60
+ "State": "stopped",
61
+ "Home": "/path/to/#{vm_name}.pvm/",
62
+ "GuestTools": {
63
+ "state": "#{tools_state}",
64
+ "version": "#{tools_version}"
65
+ },
66
+ "Hardware": {
67
+ "cpu": {
68
+ "cpus": 1
69
+ },
70
+ "memory": {
71
+ "size": "512Mb"
72
+ },
73
+ "hdd0": {
74
+ "enabled": true,
75
+ "image": "/path/to/disk1.hdd"
76
+ },
77
+ "net0": {
78
+ "enabled": true,
79
+ "type": "shared",
80
+ "mac": "001C42B4B074",
81
+ "card": "e1000",
82
+ "dhcp": "yes"
83
+ },
84
+ "net1": {
85
+ "enabled": true,
86
+ "type": "bridged",
87
+ "iface": "vnic2",
88
+ "mac": "001C42EC0068",
89
+ "card": "e1000",
90
+ "ips": "33.33.33.5/255.255.255.0 "
91
+ }
92
+ },
93
+ "Host Shared Folders": {
94
+ "enabled": true,
95
+ "shared_folder_1": {
96
+ "enabled": true,
97
+ "path": "/path/to/shared/folder/1"
98
+ },
99
+ "shared_folder_2": {
100
+ "enabled": true,
101
+ "path": "/path/to/shared/folder/2"
102
+ }
103
+ }
104
+ }
105
+ ]
106
+ eos
107
+ subprocess_result(stdout: out)
108
+ end
109
+
110
+ # Returns detailed info about specified template or all registered templates
111
+ # `prlctl list <tpl_uuid> --info --json --no-header --template`
112
+ # `prlctl list --all --info --no-header --json --template`
113
+ subprocess.stub(:execute).
114
+ with('prlctl', 'list', kind_of(String), '--info', '--no-header', '--json',
115
+ '--template', kind_of(Hash)) do
116
+ out = <<-eos
117
+ [
118
+ {
119
+ "ID": "#{tpl_uuid}",
120
+ "Name": "#{tpl_name}",
121
+ "State": "stopped",
122
+ "Home": "/path/to/#{tpl_name}.pvm/",
123
+ "GuestTools": {
124
+ "state": "#{tools_state}",
125
+ "version": "#{tools_version}"
126
+ },
127
+ "Hardware": {
128
+ "cpu": {
129
+ "cpus": 1
130
+ },
131
+ "memory": {
132
+ "size": "512Mb"
133
+ },
134
+ "hdd0": {
135
+ "enabled": true,
136
+ "image": "/path/to/harddisk.hdd"
137
+ },
138
+ "net0": {
139
+ "enabled": true,
140
+ "type": "shared",
141
+ "mac": "001C42F6E500",
142
+ "card": "e1000",
143
+ "dhcp": "yes"
144
+ },
145
+ "net1": {
146
+ "enabled": true,
147
+ "type": "bridged",
148
+ "iface": "vnic4",
149
+ "mac": "001C42AB0071",
150
+ "card": "e1000",
151
+ "ips": "33.33.33.10/255.255.255.0 "
152
+ }
153
+ }
154
+ }
155
+ ]
156
+ eos
157
+ subprocess_result(stdout: out)
158
+ end
159
+
160
+ # Returns detailed info about virtual network interface
161
+ # `prlsrvctl net info <net_name>, '--json'`
162
+ subprocess.stub(:execute).
163
+ with('prlsrvctl', 'net', 'info', kind_of(String), '--json',
164
+ kind_of(Hash)) do
165
+ out = <<-eos
166
+ {
167
+ "Network ID": "#{vnic_options[:name]}",
168
+ "Type": "host-only",
169
+ "Bound To": "#{hostonly_iface}",
170
+ "Parallels adapter": {
171
+ "IP address": "#{vnic_options[:adapter_ip]}",
172
+ "Subnet mask": "#{vnic_options[:netmask]}"
173
+ },
174
+ "DHCPv4 server": {
175
+ "Server address": "#{vnic_options[:dhcp][:ip] || '10.37.132.1'}",
176
+ "IP scope start address": "#{vnic_options[:dhcp][:lower] || '10.37.132.1'}",
177
+ "IP scope end address": "#{vnic_options[:dhcp][:upper] || '10.37.132.254'}"
178
+ }
179
+ }
180
+ eos
181
+ subprocess_result(stdout: out)
182
+ end
183
+
184
+ # Returns values of 'name' and 'uuid' options for all registered VMs
185
+ # `prlctl list --all --no-header --json -o name,uuid`
186
+ subprocess.stub(:execute).
187
+ with('prlctl', 'list', '--all', '--no-header', '--json', '-o', 'name,uuid',
188
+ kind_of(Hash)) do
189
+ out = <<-eos
190
+ [
191
+ {
192
+ "name": "#{vm_name}",
193
+ "uuid": "#{uuid}"
194
+ }
195
+ ]
196
+ eos
197
+ subprocess_result(stdout: out)
198
+ end
199
+
200
+ # Returns values of 'name' and 'uuid' options for all registered templates
201
+ # `prlctl list --all --no-header --json -o name,uuid --template`
202
+ subprocess.stub(:execute).
203
+ with('prlctl', 'list', '--all', '--no-header', '--json', '-o', 'name,uuid',
204
+ '--template', kind_of(Hash)) do
205
+ out = <<-eos
206
+ [
207
+ {
208
+ "name": "#{tpl_name}",
209
+ "uuid": "#{tpl_uuid}"
210
+ }
211
+ ]
212
+ eos
213
+ subprocess_result(stdout: out)
214
+ end
215
+
216
+ # Returns value of 'mac' options for the specified VM
217
+ # `prlctl list --all --no-header -o mac`
218
+ subprocess.stub(:execute).
219
+ with('prlctl', 'list', kind_of(String), '--no-header', '-o', 'mac',
220
+ kind_of(Hash)) do
221
+ subprocess_result(stdout: "001C42B4B074\n")
222
+ end
223
+
30
224
  end
31
225
  end