vagrant-libvirt 0.6.3 → 0.8.1
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 +4 -4
- data/README.md +65 -13
- data/lib/vagrant-libvirt/action/cleanup_on_failure.rb +76 -0
- data/lib/vagrant-libvirt/action/create_domain.rb +56 -10
- data/lib/vagrant-libvirt/action/create_network_interfaces.rb +5 -1
- data/lib/vagrant-libvirt/action/create_networks.rb +24 -0
- data/lib/vagrant-libvirt/action/destroy_domain.rb +106 -21
- data/lib/vagrant-libvirt/action/destroy_networks.rb +1 -1
- data/lib/vagrant-libvirt/action/forward_ports.rb +12 -11
- data/lib/vagrant-libvirt/action/prepare_nfs_settings.rb +1 -1
- data/lib/vagrant-libvirt/action/start_domain.rb +36 -0
- data/lib/vagrant-libvirt/action/wait_till_up.rb +6 -32
- data/lib/vagrant-libvirt/action.rb +72 -83
- data/lib/vagrant-libvirt/config.rb +85 -30
- data/lib/vagrant-libvirt/driver.rb +11 -9
- data/lib/vagrant-libvirt/errors.rb +12 -0
- data/lib/vagrant-libvirt/templates/domain.xml.erb +228 -218
- data/lib/vagrant-libvirt/templates/private_network.xml.erb +4 -1
- data/lib/vagrant-libvirt/util/network_util.rb +15 -3
- data/lib/vagrant-libvirt/util/nfs.rb +2 -0
- data/lib/vagrant-libvirt/util/resolvers.rb +80 -0
- data/lib/vagrant-libvirt/version +1 -1
- data/locales/en.yml +17 -0
- data/spec/spec_helper.rb +36 -23
- data/spec/support/libvirt_context.rb +7 -4
- data/spec/support/sharedcontext.rb +1 -1
- data/spec/unit/action/cleanup_on_failure_spec.rb +131 -0
- data/spec/unit/action/create_domain_spec/additional_disks_domain.xml +6 -18
- data/spec/unit/action/create_domain_spec/custom_disk_settings.xml +43 -0
- data/spec/unit/action/create_domain_spec/default_domain.xml +6 -18
- data/spec/unit/action/create_domain_spec/two_disk_settings.xml +49 -0
- data/spec/unit/action/create_domain_spec.rb +51 -7
- data/spec/unit/action/create_domain_volume_spec.rb +5 -3
- data/spec/unit/action/destroy_domain_spec/additional_disks_domain.xml +47 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks.xml +55 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks.xml +72 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_and_custom_disks_no_aliases.xml +67 -0
- data/spec/unit/action/destroy_domain_spec/box_multiple_disks_and_additional_disks.xml +67 -0
- data/spec/unit/action/destroy_domain_spec/cdrom_domain.xml +48 -0
- data/spec/unit/action/destroy_domain_spec.rb +134 -30
- data/spec/unit/action/forward_ports_spec.rb +10 -2
- data/spec/unit/action/prepare_nfs_settings_spec.rb +59 -0
- data/spec/unit/action/shutdown_domain_spec.rb +1 -1
- data/spec/unit/action/start_domain_spec/clock_timer_rtc.xml +6 -18
- data/spec/unit/action/start_domain_spec/default.xml +6 -18
- data/spec/unit/action/start_domain_spec/default_added_tpm_path.xml +6 -18
- data/spec/unit/action/start_domain_spec/default_added_tpm_version.xml +6 -18
- data/spec/unit/action/start_domain_spec/existing.xml +1 -1
- data/spec/unit/action/wait_till_up_spec.rb +4 -43
- data/spec/unit/action_spec.rb +2 -0
- data/spec/unit/config_spec.rb +133 -26
- data/spec/unit/driver_spec.rb +154 -10
- data/spec/unit/templates/domain_all_settings.xml +56 -77
- data/spec/unit/templates/domain_cpu_mode_passthrough.xml +39 -0
- data/spec/unit/templates/domain_custom_cpu_model.xml +6 -18
- data/spec/unit/templates/domain_defaults.xml +6 -18
- data/spec/unit/templates/domain_spec.rb +39 -13
- data/spec/unit/templates/tpm/version_1.2.xml +6 -18
- data/spec/unit/templates/tpm/version_2.0.xml +6 -18
- data/spec/unit/util/resolvers_spec.rb +116 -0
- metadata +40 -41
@@ -5,115 +5,111 @@
|
|
5
5
|
<uuid><%= @uuid %></uuid>
|
6
6
|
<memory><%= @memory_size %></memory>
|
7
7
|
<vcpu<% if @cpuset %> cpuset='<%= @cpuset %>'<% end %>><%= @cpus %></vcpu>
|
8
|
-
|
9
|
-
|
10
8
|
<cpu mode='<%= @cpu_mode %>'>
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
9
|
+
<%- if @cpu_mode != 'host-passthrough' -%>
|
10
|
+
<model fallback='<%= @cpu_fallback %>'><% if @cpu_mode == 'custom' %><%= @cpu_model %><% end %></model>
|
11
|
+
<%- end -%>
|
12
|
+
<%- if @nested -%>
|
13
|
+
<%- if @cpu_features.select{|x| x[:name] == 'vmx'}.empty? -%>
|
14
|
+
<feature policy='optional' name='vmx'/>
|
15
|
+
<%- end -%>
|
16
|
+
<%- if @cpu_features.select{|x| x[:name] == 'svm'}.empty? -%>
|
17
|
+
<feature policy='optional' name='svm'/>
|
18
|
+
<%- end -%>
|
19
|
+
<%- end -%>
|
20
|
+
<%- @cpu_features.each do |cpu_feature| -%>
|
21
|
+
<feature name='<%= cpu_feature[:name] %>' policy='<%= cpu_feature[:policy] %>'/>
|
22
|
+
<%- end -%>
|
23
|
+
<%- unless @cpu_topology.empty? -%>
|
24
|
+
<%# CPU topology -%>
|
25
|
+
<topology sockets='<%= @cpu_topology[:sockets] %>' cores='<%= @cpu_topology[:cores] %>' threads='<%= @cpu_topology[:threads] %>'/>
|
26
|
+
<%- end -%>
|
27
|
+
<%- if @numa_nodes -%>
|
28
|
+
<numa>
|
29
|
+
<%- @numa_nodes.each_with_index do |node, index| -%>
|
30
|
+
<cell id='<%= index %>' cpus='<%= node[:cpus] %>' memory='<%= node[:memory] %>'<% if node.key?(:memAccess) %> memAccess='<%= node[:memAccess] %>'<% end %>/>
|
31
|
+
<%- end -%>
|
32
|
+
</numa>
|
33
|
+
<%- end -%>
|
36
34
|
</cpu>
|
37
|
-
|
38
35
|
<%- if @nodeset -%>
|
39
36
|
<numatune>
|
40
37
|
<memory nodeset='<%= @nodeset %>'/>
|
41
38
|
</numatune>
|
42
39
|
<%- end -%>
|
43
|
-
|
40
|
+
<%- unless @memory_backing.empty? -%>
|
44
41
|
<memoryBacking>
|
45
|
-
|
42
|
+
<%- @memory_backing.each do |backing| -%>
|
46
43
|
<<%= backing[:name] %> <%= backing[:config].map { |k,v| "#{k}='#{v}'"}.join(' ') %>/>
|
47
|
-
|
44
|
+
<%- end -%>
|
48
45
|
</memoryBacking>
|
49
|
-
|
50
|
-
|
46
|
+
<%- end%>
|
47
|
+
<%- if @shares -%>
|
51
48
|
<cputune>
|
52
49
|
<shares><%= @shares %></shares>
|
53
50
|
</cputune>
|
54
|
-
|
55
|
-
|
51
|
+
<%- end -%>
|
56
52
|
<os>
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
53
|
+
<%- if @machine_type -%>
|
54
|
+
<%- if @machine_arch -%>
|
55
|
+
<type arch='<%= @machine_arch %>' machine='<%= @machine_type %>'>hvm</type>
|
56
|
+
<%- else -%>
|
57
|
+
<type machine='<%= @machine_type %>'>hvm</type>
|
58
|
+
<%- end -%>
|
59
|
+
<%- else -%>
|
60
|
+
<%- if @machine_arch -%>
|
61
|
+
<type arch='<%= @machine_arch %>'>hvm</type>
|
62
|
+
<%- else -%>
|
63
|
+
<type>hvm</type>
|
64
|
+
<%- end -%>
|
65
|
+
<%- end -%>
|
66
|
+
<%- if @loader -%>
|
67
|
+
<%- if @nvram -%>
|
68
|
+
<loader readonly='yes' type='pflash'><%= @loader %></loader>
|
69
|
+
<%- else -%>
|
70
|
+
<loader readonly='yes' type='rom'><%= @loader %></loader>
|
71
|
+
<%- end -%>
|
72
|
+
<%- end -%>
|
73
|
+
<%- if @nvram -%>
|
74
|
+
<nvram><%= @nvram %></nvram>
|
75
|
+
<%- end -%>
|
76
|
+
<%- if @boot_order.count >= 1 -%>
|
77
|
+
<bootmenu enable='yes'/>
|
78
|
+
<%- end -%>
|
83
79
|
<kernel><%= @kernel %></kernel>
|
84
80
|
<initrd><%= @initrd %></initrd>
|
85
81
|
<cmdline><%= @cmd_line %></cmdline>
|
86
|
-
|
87
|
-
|
88
|
-
|
82
|
+
<%- if @dtb -%>
|
83
|
+
<dtb><%= @dtb %></dtb>
|
84
|
+
<% end -%>
|
89
85
|
</os>
|
90
86
|
<features>
|
91
|
-
|
87
|
+
<%- @features.each do |feature| -%>
|
92
88
|
<<%= feature %>/>
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
89
|
+
<%- end -%>
|
90
|
+
<%- if @kvm_hidden -%>
|
91
|
+
<kvm>
|
92
|
+
<hidden state='on'/>
|
93
|
+
</kvm>
|
94
|
+
<%- end -%>
|
95
|
+
<%- if !@features_hyperv.empty? -%>
|
100
96
|
<hyperv>
|
101
|
-
|
97
|
+
<%- @features_hyperv.each do |feature| -%>
|
102
98
|
<<%= feature[:name] %> state='<%= feature[:state] %>'<% if feature[:name] == 'spinlocks' %> retries='<%= feature[:retries] %>'<% end %> />
|
103
|
-
|
99
|
+
<%- end -%>
|
104
100
|
</hyperv>
|
105
|
-
|
101
|
+
<%- end -%>
|
106
102
|
</features>
|
107
103
|
<clock offset='<%= @clock_offset %>'>
|
108
|
-
|
104
|
+
<%- @clock_timers.each do |clock_timer| -%>
|
109
105
|
<timer<% clock_timer.each do |attr, value| %> <%= attr %>='<%= value %>'<% end %>/>
|
110
|
-
|
106
|
+
<%- end -%>
|
111
107
|
</clock>
|
112
108
|
<devices>
|
113
|
-
|
109
|
+
<%- if @emulator_path -%>
|
114
110
|
<emulator><%= @emulator_path %></emulator>
|
115
|
-
|
116
|
-
|
111
|
+
<%- end -%>
|
112
|
+
<%- @domain_volumes.each_with_index do |volume, index| -%>
|
117
113
|
<disk type='file' device='disk'>
|
118
114
|
<alias name='ua-box-volume-<%= index -%>'/>
|
119
115
|
<driver name='qemu' type='qcow2' <%=
|
@@ -125,9 +121,9 @@
|
|
125
121
|
<%# we need to ensure a unique target dev -%>
|
126
122
|
<target dev='<%= volume[:dev] %>' bus='<%= volume[:bus] %>'/>
|
127
123
|
</disk>
|
128
|
-
|
124
|
+
<%- end -%>
|
129
125
|
<%# additional disks -%>
|
130
|
-
|
126
|
+
<%- @disks.each_with_index do |d, index| -%>
|
131
127
|
<disk type='file' device='disk'>
|
132
128
|
<alias name='ua-disk-volume-<%= index -%>'/>
|
133
129
|
<driver name='qemu' type='<%= d[:type] %>' <%=
|
@@ -138,174 +134,188 @@
|
|
138
134
|
-%>/>
|
139
135
|
<source file='<%= d[:absolute_path] %>'/>
|
140
136
|
<target dev='<%= d[:device] %>' bus='<%= d[:bus] %>'/>
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
137
|
+
<%- if d[:shareable] -%>
|
138
|
+
<shareable/>
|
139
|
+
<%- end -%>
|
140
|
+
<%- if d[:serial] -%>
|
141
|
+
<serial><%= d[:serial] %></serial>
|
142
|
+
<%- end -%>
|
143
|
+
<%- if d[:wwn] -%>
|
144
|
+
<wwn><%= d[:wwn] %></wwn>
|
145
|
+
<%- end -%>
|
150
146
|
<%# this will get auto generated by Libvirt
|
151
147
|
<address type='pci' domain='0x0000' bus='0x00' slot='???' function='0x0'/>
|
152
148
|
-%>
|
153
149
|
</disk>
|
154
150
|
<% end -%>
|
155
|
-
|
156
|
-
<% @cdroms.each do |c| %>
|
151
|
+
<%- @cdroms.each do |c| -%>
|
157
152
|
<disk type='file' device='cdrom'>
|
158
153
|
<driver name='qemu' type='<%= c[:type] %>' />
|
159
154
|
<source file='<%= c[:path] %>'/>
|
160
155
|
<target dev='<%= c[:dev] %>' bus='<%= c[:bus] %>'/>
|
161
156
|
<readonly/>
|
162
157
|
</disk>
|
163
|
-
|
164
|
-
|
165
|
-
<serial type='
|
166
|
-
|
158
|
+
<%- end -%>
|
159
|
+
<%- @serials.each_with_index do |serial, port| -%>
|
160
|
+
<serial type='<%= serial[:type] %>'>
|
161
|
+
<%- unless serial[:source].nil? -%>
|
162
|
+
<source path='<%= serial[:source][:path] %>'/>
|
163
|
+
<%- end -%>
|
164
|
+
<target port='<%= port %>'/>
|
167
165
|
</serial>
|
168
|
-
|
166
|
+
<%- end -%>
|
167
|
+
<%- unless @serials.empty? -%>
|
168
|
+
<%- console_log = @serials.first -%>
|
169
|
+
<console type='<%= console_log[:type] %>'>
|
170
|
+
<%- unless console_log[:source].nil? -%>
|
171
|
+
<source path='<%= console_log[:source][:path] %>'/>
|
172
|
+
<%- end -%>
|
169
173
|
<target port='0'/>
|
170
174
|
</console>
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
<source
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
<% if channel[:target_port] %>
|
192
|
-
port="<%= channel[:target_port] %>"
|
193
|
-
<% end %>
|
194
|
-
/>
|
195
|
-
</channel>
|
196
|
-
<% end %>
|
197
|
-
|
198
|
-
<% @inputs.each do |input| %>
|
175
|
+
<%- end -%>
|
176
|
+
<%- @channels.each do |channel| -%>
|
177
|
+
<channel type='<%= channel[:type] %>' >
|
178
|
+
<%-if channel[:source_mode] or channel[:source_path] -%>
|
179
|
+
<source <%=
|
180
|
+
channel.select { |k,_| [:source_mode, :source_path].include? k }
|
181
|
+
.reject { |k,v| v.nil? }
|
182
|
+
.map { |k,v| "#{k.to_s.split('_').last}='#{v}'"}
|
183
|
+
.join(' ')
|
184
|
+
-%>/>
|
185
|
+
<%- end -%>
|
186
|
+
<target type='<%= channel[:target_type] %>' <%=
|
187
|
+
channel.select { |k,_| [:target_name, :target_address, :target_port].include? k }
|
188
|
+
.reject { |k,v| v.nil? }
|
189
|
+
.map { |k,v| "#{k.to_s.split('_').last}='#{v}'"}
|
190
|
+
.join(' ')
|
191
|
+
-%>/>
|
192
|
+
</channel>
|
193
|
+
<%- end -%>
|
194
|
+
<%- @inputs.each do |input| -%>
|
199
195
|
<input type='<%= input[:type] %>' bus='<%= input[:bus] %>'/>
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
196
|
+
<%- end -%>
|
197
|
+
<%- if !@sound_type.nil? -%>
|
198
|
+
<%# Sound device-%>
|
199
|
+
<sound model='<%= @sound_type %>'>
|
200
|
+
</sound>
|
201
|
+
<%# End Sound%>
|
202
|
+
<%- end -%>
|
203
|
+
<%- if @graphics_type != 'none'
|
204
|
+
graphics = {
|
205
|
+
'type' => @graphics_type,
|
206
|
+
'port' => @graphics_port,
|
207
|
+
'autoport' => @graphics_autoport,
|
208
|
+
'listen' => @graphics_ip,
|
209
|
+
'keymap' => @keymap,
|
210
|
+
'passwd' => @graphics_passwd,
|
211
|
+
}
|
212
|
+
-%>
|
213
|
+
<%# Video device -%>
|
214
|
+
<graphics <%=
|
215
|
+
graphics.reject { |k,v| v.nil? }
|
216
|
+
.map { |k,v| "#{k}='#{v}'" }
|
217
|
+
.join(' ')
|
218
|
+
-%><%- if not @graphics_gl %>/><% else %>>
|
219
|
+
<gl enable='yes'/>
|
220
|
+
</graphics><% end -%>
|
221
|
+
<video>
|
222
|
+
<model type='<%= @video_type %>' vram='<%= @video_vram %>' heads='1'<% if not @video_accel3d %>/><% else %>>
|
223
|
+
<acceleration accel3d='yes'/>
|
224
|
+
</model><% end -%>
|
225
|
+
</video>
|
226
|
+
<%#End Video -%>
|
227
|
+
<%- end -%>
|
228
|
+
<%- if @rng[:model] == "random"%>
|
229
|
+
<rng model='virtio'>
|
230
|
+
<backend model='random'>/dev/random</backend>
|
231
|
+
</rng>
|
232
|
+
<%- end -%>
|
233
|
+
<%- @pcis.each do |pci| -%>
|
234
|
+
<hostdev mode='subsystem' type='pci' managed='yes'>
|
235
|
+
<source>
|
236
|
+
<address <%= pci.select { |k,_| [:domain, :bus, :slot, :function].include? k }
|
237
|
+
.reject { |k,v| v.nil? }
|
238
|
+
.map { |k,v| "#{k.to_s}='#{v}'" }
|
239
|
+
.join(' ')
|
240
|
+
-%>/>
|
241
|
+
</source>
|
242
|
+
</hostdev>
|
243
|
+
<%- end -%>
|
244
|
+
<%- @usbs.each do |usb| -%>
|
245
|
+
<hostdev mode='subsystem' type='usb'>
|
246
|
+
<source startupPolicy='<%= usb[:startupPolicy] || "mandatory" %>'>
|
247
|
+
<%- if usb[:vendor] -%>
|
248
|
+
<vendor id='<%= usb[:vendor] %>'/>
|
249
|
+
<%- end -%>
|
250
|
+
<%- if usb[:product] -%>
|
251
|
+
<product id='<%= usb[:product] %>'/>
|
252
|
+
<%- end -%>
|
253
|
+
<%- if usb[:bus] && usb[:device] -%>
|
254
|
+
<address bus='<%= usb[:bus] %>' device='<%= usb[:device] %>'/>
|
255
|
+
<%- end -%>
|
256
|
+
</source>
|
257
|
+
</hostdev>
|
258
|
+
<%- end -%>
|
259
|
+
<%- unless @redirdevs.empty? -%>
|
260
|
+
<%- @redirdevs.each do |redirdev| -%>
|
261
|
+
<redirdev bus='usb' type='<%= redirdev[:type] %>'>
|
262
|
+
</redirdev>
|
263
|
+
<%- end -%>
|
264
|
+
<%- unless @redirfilters.empty? -%>
|
265
|
+
<redirfilter>
|
266
|
+
<%- @redirfilters.each do |usbdev| -%>
|
267
|
+
<usbdev class='<%= usbdev[:class] %>' vendor='<%= usbdev[:vendor] %>' product='<%= usbdev[:product] %>' version='<%= usbdev[:version] %>' allow='<%= usbdev[:allow] %>'/>
|
268
|
+
<%- end -%>
|
269
|
+
</redirfilter>
|
270
|
+
<%- end -%>
|
271
|
+
<%- end -%>
|
272
|
+
<%- unless @watchdog_dev.empty? -%>
|
260
273
|
<%# Watchdog Device -%>
|
261
274
|
<watchdog model='<%= @watchdog_dev[:model] %>' action='<%= @watchdog_dev[:action] %>'/>
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
<% if @tpm_path || @tpm_version -%>
|
275
|
+
<%- end -%>
|
276
|
+
<%- unless @smartcard_dev.empty? -%>
|
277
|
+
<%- if @smartcard_dev[:mode] == 'passthrough' -%>
|
278
|
+
<%- if @smartcard_dev[:type] == 'tcp' -%>
|
279
|
+
<smartcard mode='<%= @smartcard_dev[:mode] %>' type='<%= @smartcard_dev[:type] %>'>
|
280
|
+
<source mode='<%= @smartcard_dev[:source_mode] %>' host='<%= @smartcard_dev[:source_host] %>' service='<%= @smartcard_dev[:source_service] %>'/>
|
281
|
+
</smartcard>
|
282
|
+
<%- else -%>
|
283
|
+
<smartcard mode='<%= @smartcard_dev[:mode] %>' type='<%= @smartcard_dev[:type] %>'/>
|
284
|
+
<%- end -%>
|
285
|
+
<%- end -%>
|
286
|
+
<%- end -%>
|
287
|
+
<%- if @tpm_path || @tpm_version -%>
|
277
288
|
<%# TPM Device -%>
|
278
289
|
<tpm model='<%= @tpm_model %>'>
|
279
290
|
<backend type='<%= @tpm_type %>'<% if @tpm_version %> version='<%= @tpm_version %>'<% end %>>
|
280
|
-
|
291
|
+
<%- if @tpm_path -%>
|
281
292
|
<device path='<%= @tpm_path %>'/>
|
282
|
-
|
293
|
+
<%- end -%>
|
283
294
|
</backend>
|
284
295
|
</tpm>
|
285
|
-
|
286
|
-
|
296
|
+
<%- end -%>
|
297
|
+
<%- if not @usbctl_dev.empty? -%>
|
287
298
|
<%# USB Controller -%>
|
288
299
|
<controller type='usb' model='<%= @usbctl_dev[:model] %>' <%= "ports=\"#{@usbctl_dev[:ports]}\" " if @usbctl_dev[:ports] %>/>
|
289
|
-
|
290
|
-
|
291
|
-
|
300
|
+
<%- end -%>
|
301
|
+
<%- unless @memballoon_enabled.nil? -%>
|
302
|
+
<%- if @memballoon_enabled -%>
|
292
303
|
<memballoon model='<%= @memballoon_model %>'>
|
293
304
|
<address type='pci' domain='0x0000' bus='<%= @memballoon_pci_bus %>' slot='<%= @memballoon_pci_slot %>' function='0x0'/>
|
294
305
|
</memballoon>
|
295
|
-
|
306
|
+
<%- else -%>
|
296
307
|
<memballoon model='none'/>
|
297
|
-
|
298
|
-
|
308
|
+
<%- end -%>
|
309
|
+
<%- end -%>
|
299
310
|
</devices>
|
300
|
-
|
301
|
-
<% if not @qemu_args.empty? or not @qemu_env.empty? %>
|
311
|
+
<%- if not @qemu_args.empty? or not @qemu_env.empty? -%>
|
302
312
|
<qemu:commandline>
|
303
|
-
|
313
|
+
<%- @qemu_args.each do |arg| -%>
|
304
314
|
<qemu:arg value='<%= arg[:value] %>'/>
|
305
|
-
|
306
|
-
|
315
|
+
<%- end -%>
|
316
|
+
<%- @qemu_env.each do |env_var, env_value| -%>
|
307
317
|
<qemu:env name='<%= env_var.to_s %>' value='<%= env_value %>'/>
|
308
|
-
|
318
|
+
<%- end -%>
|
309
319
|
</qemu:commandline>
|
310
|
-
|
320
|
+
<%- end -%>
|
311
321
|
</domain>
|
@@ -18,8 +18,11 @@
|
|
18
18
|
<% end %>
|
19
19
|
<% end %>
|
20
20
|
|
21
|
-
<% if @network_forward_mode != 'veryisolated' %>
|
21
|
+
<% if @network_forward_mode != 'veryisolated' && !@network_address.nil? %>
|
22
22
|
<ip address="<%= @network_address %>" netmask="<%= @network_netmask %>">
|
23
|
+
<% if @tftp_root %>
|
24
|
+
<tftp root="<%= @tftp_root %>" />
|
25
|
+
<% end %>
|
23
26
|
<% if @network_dhcp_enabled %>
|
24
27
|
<dhcp>
|
25
28
|
<range start="<%= @network_range_start %>" end="<%= @network_range_stop %>" />
|
@@ -32,6 +32,7 @@ module VagrantPlugins
|
|
32
32
|
management_network_pci_slot = env[:machine].provider_config.management_network_pci_slot
|
33
33
|
management_network_domain = env[:machine].provider_config.management_network_domain
|
34
34
|
management_network_mtu = env[:machine].provider_config.management_network_mtu
|
35
|
+
management_network_keep = env[:machine].provider_config.management_network_keep
|
35
36
|
logger.info "Using #{management_network_name} at #{management_network_address} as the management network #{management_network_mode} is the mode"
|
36
37
|
|
37
38
|
begin
|
@@ -92,8 +93,18 @@ module VagrantPlugins
|
|
92
93
|
management_network_options[:slot] = management_network_pci_slot
|
93
94
|
end
|
94
95
|
|
95
|
-
if
|
96
|
-
|
96
|
+
if management_network_keep
|
97
|
+
management_network_options[:always_destroy] = false
|
98
|
+
end
|
99
|
+
|
100
|
+
# if there is a box and management network is disabled
|
101
|
+
# need qemu agent enabled and at least one network that can be accessed
|
102
|
+
if (
|
103
|
+
env[:machine].config.vm.box &&
|
104
|
+
!env[:machine].provider_config.mgmt_attach &&
|
105
|
+
!env[:machine].provider_config.qemu_use_agent &&
|
106
|
+
!env[:machine].config.vm.networks.any? { |type, _| ["private_network", "public_network"].include?(type.to_s) }
|
107
|
+
)
|
97
108
|
raise Errors::ManagementNetworkRequired
|
98
109
|
end
|
99
110
|
|
@@ -119,7 +130,8 @@ module VagrantPlugins
|
|
119
130
|
IPAddr.new(options[:network_address]).get_mask :
|
120
131
|
'255.255.255.0',
|
121
132
|
dhcp_enabled: true,
|
122
|
-
forward_mode: 'nat'
|
133
|
+
forward_mode: 'nat',
|
134
|
+
always_destroy: true
|
123
135
|
}.merge(options)
|
124
136
|
|
125
137
|
if options[:type].to_s == 'dhcp' && options[:ip].nil?
|