fog-libvirt 0.11.0 → 0.12.0
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/lib/fog/libvirt/models/compute/server.rb +172 -2
- data/lib/fog/libvirt/requests/compute/list_domains.rb +1 -1
- data/lib/fog/libvirt/version.rb +1 -1
- data/minitests/server/server_test.rb +4 -4
- data/tests/libvirt/models/compute/server_tests.rb +20 -0
- metadata +3 -4
- data/lib/fog/libvirt/models/compute/templates/server.xml.erb +0 -155
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 173406401f8c728989e70e75ae9765bffc53d84e14ae838db08576f34ba44539
|
|
4
|
+
data.tar.gz: 58c5ac60c88a3a2cbdca2744231f939d5a4871db89d35e4cbf7483d5a2ef638b
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1d23624637ceb4b353a83cbd5f0b49917adf1d8dc20a471eb05bfd04259a6b39fe40f3c689278a31c13e708d9a5e599b11da7bdf67fbaec622316a2ec2ed7082
|
|
7
|
+
data.tar.gz: 00abab82645d5f8f9a176d2188c7e5c2d6004118f87195994a65b4ce4c949b0d3b52a23ca6dab19d4a9c83134bb8dc59742e9e81ecc41982306903b5290a32b7
|
|
@@ -147,7 +147,7 @@ module Fog
|
|
|
147
147
|
|
|
148
148
|
def volumes
|
|
149
149
|
# lazy loading of volumes
|
|
150
|
-
@volumes ||= (@volumes_path || []).map{|path| service.volumes.all(:path => path).first }
|
|
150
|
+
@volumes ||= (@volumes_path || []).map{ |path| service.volumes.all(:path => path).first }.compact
|
|
151
151
|
end
|
|
152
152
|
|
|
153
153
|
def private_ip_address
|
|
@@ -267,9 +267,179 @@ module Fog
|
|
|
267
267
|
"#{name}-cloud-init.iso"
|
|
268
268
|
end
|
|
269
269
|
|
|
270
|
+
# rubocop:disable Metrics
|
|
271
|
+
def to_xml
|
|
272
|
+
builder = Nokogiri::XML::Builder.new do |xml|
|
|
273
|
+
xml.domain(:type => domain_type) do
|
|
274
|
+
xml.name(name)
|
|
275
|
+
xml.memory(memory_size)
|
|
276
|
+
|
|
277
|
+
if hugepages
|
|
278
|
+
xml.memoryBacking do
|
|
279
|
+
xml.hugepages
|
|
280
|
+
end
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
xml.vcpu(cpus)
|
|
284
|
+
xml.os do
|
|
285
|
+
type = xml.type(os_type, :arch => arch)
|
|
286
|
+
type[:machine] = "q35" if ["i686", "x86_64"].include?(arch)
|
|
287
|
+
|
|
288
|
+
boot_order.each do |dev|
|
|
289
|
+
xml.boot(:dev => dev)
|
|
290
|
+
end
|
|
291
|
+
end
|
|
292
|
+
xml.features do
|
|
293
|
+
xml.acpi
|
|
294
|
+
xml.apic
|
|
295
|
+
end
|
|
296
|
+
|
|
297
|
+
unless cpu.empty?
|
|
298
|
+
if cpu.dig(:model, :name)
|
|
299
|
+
xml.cpu do
|
|
300
|
+
xml.model(cpu.dig(:model, :name), :fallback => cpu.dig(:model, :fallback) || "allow")
|
|
301
|
+
end
|
|
302
|
+
else
|
|
303
|
+
xml.cpu(
|
|
304
|
+
:mode => cpu.dig(:model, :name) || "host-passthrough",
|
|
305
|
+
:check => cpu.fetch(:check, "none"),
|
|
306
|
+
:migratable => cpu.fetch(:migratable, "on")
|
|
307
|
+
)
|
|
308
|
+
end
|
|
309
|
+
end
|
|
310
|
+
|
|
311
|
+
xml.clock(:offset => "utc") do
|
|
312
|
+
xml.timer(:name => "rtc", :tickpolicy => "catchup")
|
|
313
|
+
xml.timer(:name => "pit", :tickpolicy => "delay")
|
|
314
|
+
xml.timer(:name => "hpet", :present => "no")
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
xml.devices do
|
|
318
|
+
ceph_args = read_ceph_args
|
|
319
|
+
|
|
320
|
+
volumes.each_with_index do |volume, index|
|
|
321
|
+
target_device = "vd#{('a'..'z').to_a[index]}"
|
|
322
|
+
if ceph_args && volume.pool_name.include?(ceph_args["libvirt_ceph_pool"])
|
|
323
|
+
xml.disk(:type => "network", :device => "disk") do
|
|
324
|
+
xml.driver(:name => "qemu", :type => volume.format_type, :cache => "writeback", :discard => "unmap")
|
|
325
|
+
xml.source(:protocol => "rbd", :name => volume.path)
|
|
326
|
+
|
|
327
|
+
ceph_args["monitor"]&.split(",")&.each do |monitor|
|
|
328
|
+
xml.host(:name => monitor, :port => ceph_args["port"])
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
xml.auth(:username => ceph_args["auth_username"]) do
|
|
332
|
+
if ceph_args.key?("auth_uuid")
|
|
333
|
+
xml.secret(:type => "ceph", :uuid => ceph_args["auth_uuid"])
|
|
334
|
+
else
|
|
335
|
+
xml.secret(:type => "ceph", :usage => ceph_args["auth_usage"])
|
|
336
|
+
end
|
|
337
|
+
end
|
|
338
|
+
|
|
339
|
+
xml.target(:dev => target_device, :bus => args["bus_type"] == "virtio" ? "virtio" : "scsi")
|
|
340
|
+
end
|
|
341
|
+
else
|
|
342
|
+
is_block = volume.path.start_with?("/dev/")
|
|
343
|
+
xml.disk(:type => is_block ? "block" : "file", :device => "disk") do
|
|
344
|
+
xml.driver(:name => "qemu", :type => volume.format_type)
|
|
345
|
+
if is_block
|
|
346
|
+
xml.source(:dev => volume.path)
|
|
347
|
+
else
|
|
348
|
+
xml.source(:file => volume.path)
|
|
349
|
+
end
|
|
350
|
+
xml.target(:dev => target_device, :bus => "virtio")
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
if iso_file
|
|
356
|
+
xml.disk(:type => "file", :device => "cdrom") do
|
|
357
|
+
xml.driver(:name => "qemu", :type => "raw")
|
|
358
|
+
xml.source(:file => "#{iso_dir}/#{iso_file}")
|
|
359
|
+
xml.target(:dev => "hdc", :bus => "ide")
|
|
360
|
+
xml.readonly
|
|
361
|
+
xml.address(:type => "drive", :controller => 0, :bus => 1, :unit => 0)
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
nics.each do |nic|
|
|
366
|
+
xml.interface(:type => nic.type) do
|
|
367
|
+
if nic.type == "bridge"
|
|
368
|
+
xml.source(:bridge => nic.bridge)
|
|
369
|
+
else
|
|
370
|
+
xml.source(:network => nic.network)
|
|
371
|
+
end
|
|
372
|
+
xml.model(:type => nic.model)
|
|
373
|
+
end
|
|
374
|
+
end
|
|
375
|
+
|
|
376
|
+
if guest_agent
|
|
377
|
+
xml.channel(:type => "unix") do
|
|
378
|
+
xml.target(:type => "virtio", :name => "org.qemu.guest_agent.0")
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
|
|
382
|
+
xml.rng(:model => "virtio") do
|
|
383
|
+
xml.backend(virtio_rng[:backend_path], :model => virtio_rng.fetch(:backend_model, "random"))
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
if arch == "s390x"
|
|
387
|
+
xml.controller(:type => "scsi", :index => "0", :model => "virtio-scsi")
|
|
388
|
+
xml.console(:type => "pty") do
|
|
389
|
+
xml.target(:type => "sclp")
|
|
390
|
+
end
|
|
391
|
+
xml.memballoon(:model => "virtio")
|
|
392
|
+
else
|
|
393
|
+
xml.serial(:type => "pty") do
|
|
394
|
+
xml.target(:port => 0)
|
|
395
|
+
end
|
|
396
|
+
xml.console(:type => "pty") do
|
|
397
|
+
xml.target(:port => 0)
|
|
398
|
+
end
|
|
399
|
+
xml.input(:type => "tablet", :bus => "usb")
|
|
400
|
+
xml.input(:type => "mouse", :bus => "ps2")
|
|
401
|
+
|
|
402
|
+
graphics = xml.graphics(:type => display[:type])
|
|
403
|
+
if display[:port].empty?
|
|
404
|
+
graphics.port = display[:port]
|
|
405
|
+
graphics.autoport = "no"
|
|
406
|
+
else
|
|
407
|
+
graphics.port = -1
|
|
408
|
+
graphics.autoport = "yes"
|
|
409
|
+
end
|
|
410
|
+
graphics.listen = display[:listen] unless display[:listen].empty?
|
|
411
|
+
graphics.password = display[:password] unless display[:password].empty?
|
|
412
|
+
|
|
413
|
+
xml.video do
|
|
414
|
+
xml.model(:type => "cirrus", :vram => 9216, :heads => 1)
|
|
415
|
+
end
|
|
416
|
+
end
|
|
417
|
+
end
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
builder.to_xml
|
|
422
|
+
end
|
|
423
|
+
# rubocop:enable Metrics
|
|
424
|
+
|
|
270
425
|
private
|
|
271
426
|
attr_accessor :volumes_path
|
|
272
427
|
|
|
428
|
+
def read_ceph_args(path = "/etc/foreman/ceph.conf")
|
|
429
|
+
return unless File.file?(path)
|
|
430
|
+
|
|
431
|
+
args = {}
|
|
432
|
+
|
|
433
|
+
File.readlines(path).each do |line|
|
|
434
|
+
pair = line.strip.split("=")
|
|
435
|
+
key = pair[0]
|
|
436
|
+
value = pair[1]
|
|
437
|
+
args[key] = value
|
|
438
|
+
end
|
|
439
|
+
|
|
440
|
+
args
|
|
441
|
+
end
|
|
442
|
+
|
|
273
443
|
# This tests the library version before redefining the address
|
|
274
444
|
# method for this instance to use a method compatible with
|
|
275
445
|
# earlier libvirt libraries, or uses the dhcp method from more
|
|
@@ -479,7 +649,7 @@ module Fog
|
|
|
479
649
|
{
|
|
480
650
|
:persistent => true,
|
|
481
651
|
:cpus => 1,
|
|
482
|
-
:memory_size => 256 *1024,
|
|
652
|
+
:memory_size => 256 * 1024,
|
|
483
653
|
:name => randomized_name,
|
|
484
654
|
:os_type => "hvm",
|
|
485
655
|
:arch => "x86_64",
|
data/lib/fog/libvirt/version.rb
CHANGED
|
@@ -36,8 +36,8 @@ class ServerTest < Minitest::Test
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def test_ssh_ip_command_success
|
|
39
|
-
fog_ssh =
|
|
40
|
-
result =
|
|
39
|
+
fog_ssh = Minitest::Mock.new
|
|
40
|
+
result = Minitest::Mock.new
|
|
41
41
|
result.expect(:status, 0)
|
|
42
42
|
result.expect(:stdout, "any_ip")
|
|
43
43
|
fog_ssh.expect(:run, [result], [String])
|
|
@@ -49,10 +49,10 @@ class ServerTest < Minitest::Test
|
|
|
49
49
|
end
|
|
50
50
|
|
|
51
51
|
def test_local_ip_command_success
|
|
52
|
-
proc_info =
|
|
52
|
+
proc_info = Minitest::Mock.new
|
|
53
53
|
proc_info.expect(:each_line, "127.0.0.1")
|
|
54
54
|
proc_info.expect(:pid, 0)
|
|
55
|
-
status =
|
|
55
|
+
status = Minitest::Mock.new
|
|
56
56
|
status.expect(:exitstatus, 0)
|
|
57
57
|
Process.stubs(:waitpid2).returns([0, status])
|
|
58
58
|
IO.stub(:popen, true, proc_info) do
|
|
@@ -59,5 +59,25 @@ Shindo.tests('Fog::Compute[:libvirt] | server model', ['libvirt']) do
|
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
test('be a kind of Fog::Libvirt::Compute::Server') { server.kind_of? Fog::Libvirt::Compute::Server }
|
|
62
|
+
tests("serializes to xml") do
|
|
63
|
+
test("with memory") { server.to_xml.match?(%r{<memory>\d+</memory>}) }
|
|
64
|
+
test("with disk of type file") do
|
|
65
|
+
xml = server.to_xml
|
|
66
|
+
xml.match?(/<disk type="file" device="disk">/) && xml.match?(%r{<source file="path/to/disk"/>})
|
|
67
|
+
end
|
|
68
|
+
test("with disk of type block") do
|
|
69
|
+
server = Fog::Libvirt::Compute::Server.new(
|
|
70
|
+
{
|
|
71
|
+
:nics => [],
|
|
72
|
+
:volumes => [
|
|
73
|
+
Fog::Libvirt::Compute::Volume.new({ :path => "/dev/sda", :pool_name => "dummy" })
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
xml = server.to_xml
|
|
78
|
+
xml.match?(/<disk type="block" device="disk">/) && xml.match?(%r{<source dev="/dev/sda"/>})
|
|
79
|
+
end
|
|
80
|
+
test("with q35 machine type on x86_64") { server.to_xml.match?(%r{<type arch="x86_64" machine="q35">hvm</type>}) }
|
|
81
|
+
end
|
|
62
82
|
end
|
|
63
83
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fog-libvirt
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.12.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- geemus (Wesley Beary)
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-11-10 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: fog-core
|
|
@@ -258,7 +258,6 @@ files:
|
|
|
258
258
|
- lib/fog/libvirt/models/compute/servers.rb
|
|
259
259
|
- lib/fog/libvirt/models/compute/templates/network.xml.erb
|
|
260
260
|
- lib/fog/libvirt/models/compute/templates/pool.xml.erb
|
|
261
|
-
- lib/fog/libvirt/models/compute/templates/server.xml.erb
|
|
262
261
|
- lib/fog/libvirt/models/compute/templates/volume.xml.erb
|
|
263
262
|
- lib/fog/libvirt/models/compute/util/uri.rb
|
|
264
263
|
- lib/fog/libvirt/models/compute/util/util.rb
|
|
@@ -335,7 +334,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
335
334
|
- !ruby/object:Gem::Version
|
|
336
335
|
version: '0'
|
|
337
336
|
requirements: []
|
|
338
|
-
rubygems_version: 3.
|
|
337
|
+
rubygems_version: 3.4.10
|
|
339
338
|
signing_key:
|
|
340
339
|
specification_version: 2
|
|
341
340
|
summary: Module for the 'fog' gem to support libvirt
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
<domain type='<%= domain_type %>'>
|
|
2
|
-
<name><%= name %></name>
|
|
3
|
-
<memory><%= memory_size %></memory>
|
|
4
|
-
<% if hugepages -%>
|
|
5
|
-
<memoryBacking>
|
|
6
|
-
<hugepages/>
|
|
7
|
-
</memoryBacking>
|
|
8
|
-
<% end -%>
|
|
9
|
-
<vcpu><%= cpus %></vcpu>
|
|
10
|
-
<os>
|
|
11
|
-
<type arch='<%= arch %>'><%= os_type %></type>
|
|
12
|
-
<% boot_order.each do |dev| -%>
|
|
13
|
-
<boot dev='<%= dev %>'/>
|
|
14
|
-
<% end -%>
|
|
15
|
-
</os>
|
|
16
|
-
<features>
|
|
17
|
-
<acpi/>
|
|
18
|
-
<apic/>
|
|
19
|
-
<pae/>
|
|
20
|
-
</features>
|
|
21
|
-
<% if !cpu.empty? -%>
|
|
22
|
-
<% if cpu[:mode] -%>
|
|
23
|
-
<cpu mode='<%= cpu[:mode] %>'>
|
|
24
|
-
<% else -%>
|
|
25
|
-
<cpu>
|
|
26
|
-
<% end -%>
|
|
27
|
-
<%
|
|
28
|
-
fallback = 'allow'
|
|
29
|
-
model = ''
|
|
30
|
-
if cpu[:model]
|
|
31
|
-
fallback = cpu[:model][:fallback] if cpu[:model][:fallback]
|
|
32
|
-
model = cpu[:model][:name] if cpu[:model][:name]
|
|
33
|
-
end
|
|
34
|
-
-%>
|
|
35
|
-
<model fallback='<%= fallback %>'><%= model %></model>
|
|
36
|
-
</cpu>
|
|
37
|
-
<% end -%>
|
|
38
|
-
<clock offset='utc'/>
|
|
39
|
-
<devices>
|
|
40
|
-
<% args = {}
|
|
41
|
-
if File.file?('/etc/foreman/ceph.conf')
|
|
42
|
-
File.readlines('/etc/foreman/ceph.conf').each do |line|
|
|
43
|
-
pair = line.strip.split("=")
|
|
44
|
-
key = pair[0]
|
|
45
|
-
value = pair[1]
|
|
46
|
-
args[key] = value
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
%>
|
|
50
|
-
<% volumes.each do |vol| -%>
|
|
51
|
-
<% if File.file?('/etc/foreman/ceph.conf') && vol.pool_name.include?(args["libvirt_ceph_pool"]) %>
|
|
52
|
-
<disk type='network' device='disk'>
|
|
53
|
-
<driver name='qemu' type='<%= vol.format_type %>' cache='writeback' discard='unmap'/>
|
|
54
|
-
<source protocol='rbd' name='<%= vol.path %>'>
|
|
55
|
-
<% if args.key?("monitor") -%>
|
|
56
|
-
<% args["monitor"].split(",").each do |mon| %>
|
|
57
|
-
<host name='<%= mon %>' port='<%= args["port"] %>'/>
|
|
58
|
-
<% end %>
|
|
59
|
-
<% end %>
|
|
60
|
-
</source>
|
|
61
|
-
<auth username='<%= args["auth_username"] %>'>
|
|
62
|
-
<% if args.key?("auth_uuid") -%>
|
|
63
|
-
<secret type='ceph' uuid='<%= args["auth_uuid"] %>'/>
|
|
64
|
-
<% else -%>
|
|
65
|
-
<secret type='ceph' usage='<%= args["auth_usage"] %>'/>
|
|
66
|
-
<% end -%>
|
|
67
|
-
</auth>
|
|
68
|
-
<% if args['bus_type'] == 'virtio' %>
|
|
69
|
-
<target dev='vd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='virtio'/>
|
|
70
|
-
<% else %>
|
|
71
|
-
<target dev='sd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='scsi'/>
|
|
72
|
-
<% end %>
|
|
73
|
-
</disk>
|
|
74
|
-
<% else %>
|
|
75
|
-
<disk type='file' device='disk'>
|
|
76
|
-
<driver name='qemu' type='<%= vol.format_type %>'/>
|
|
77
|
-
<source file='<%= vol.path %>'/>
|
|
78
|
-
<%# we need to ensure a unique target dev -%>
|
|
79
|
-
<target dev='vd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='virtio'/>
|
|
80
|
-
</disk>
|
|
81
|
-
<% end %>
|
|
82
|
-
<% end -%>
|
|
83
|
-
<% if iso_file -%>
|
|
84
|
-
<disk type='file' device='cdrom'>
|
|
85
|
-
<driver name='qemu' type='raw'/>
|
|
86
|
-
<source file='<%= "#{iso_dir}/#{iso_file}" %>'/>
|
|
87
|
-
<target dev='hdc' bus='ide'/>
|
|
88
|
-
<readonly/>
|
|
89
|
-
<address type='drive' controller='0' bus='1' unit='0'/>
|
|
90
|
-
</disk>
|
|
91
|
-
<% end -%>
|
|
92
|
-
<% nics.each do |nic| -%>
|
|
93
|
-
<interface type='<%= nic.type %>'>
|
|
94
|
-
<source <%= nic.type == 'bridge' ? "bridge='#{nic.bridge}'" : "network='#{nic.network}'" %> />
|
|
95
|
-
<model type='<%= nic.model %>'/>
|
|
96
|
-
</interface>
|
|
97
|
-
<% end -%>
|
|
98
|
-
<% if guest_agent -%>
|
|
99
|
-
<channel type='unix'>
|
|
100
|
-
<target type='virtio' name='org.qemu.guest_agent.0'/>
|
|
101
|
-
</channel>
|
|
102
|
-
<% end -%>
|
|
103
|
-
<rng model='virtio'>
|
|
104
|
-
<%
|
|
105
|
-
rng_backend_model = virtio_rng[:backend_model] ? virtio_rng[:backend_model] : 'random'
|
|
106
|
-
-%>
|
|
107
|
-
<% if virtio_rng[:backend_path] -%>
|
|
108
|
-
<backend model='<%= rng_backend_model %>'><%= virtio_rng[:backend_path] %></backend>
|
|
109
|
-
<% else -%>
|
|
110
|
-
<backend model='<%= rng_backend_model %>'/>
|
|
111
|
-
<% end -%>
|
|
112
|
-
</rng>
|
|
113
|
-
<% if arch == "s390x" -%>
|
|
114
|
-
<controller type="scsi" index="0" model="virtio-scsi"/>
|
|
115
|
-
<console type="pty">
|
|
116
|
-
<target type="sclp"/>
|
|
117
|
-
</console>
|
|
118
|
-
<memballoon model="virtio"/>
|
|
119
|
-
<% else -%>
|
|
120
|
-
<serial type='pty'>
|
|
121
|
-
<target port='0'/>
|
|
122
|
-
</serial>
|
|
123
|
-
<console type='pty'>
|
|
124
|
-
<target port='0'/>
|
|
125
|
-
</console>
|
|
126
|
-
<input type='tablet' bus='usb'/>
|
|
127
|
-
<input type='mouse' bus='ps2'/>
|
|
128
|
-
<% end -%>
|
|
129
|
-
<%
|
|
130
|
-
display_type = display[:type]
|
|
131
|
-
|
|
132
|
-
if display[:port].empty?
|
|
133
|
-
display_port = display[:port]
|
|
134
|
-
autoport = 'no'
|
|
135
|
-
else
|
|
136
|
-
display_port = '-1'
|
|
137
|
-
autoport = 'yes'
|
|
138
|
-
end
|
|
139
|
-
|
|
140
|
-
unless display[:listen].empty?
|
|
141
|
-
display_listen = "listen='#{display[:listen]}'"
|
|
142
|
-
end
|
|
143
|
-
|
|
144
|
-
unless display[:password].empty?
|
|
145
|
-
display_password = "passwd='#{display[:password]}'"
|
|
146
|
-
end
|
|
147
|
-
-%>
|
|
148
|
-
<% if arch != "s390x" -%>
|
|
149
|
-
<graphics type='<%= display_type %>' port='<%= display_port %>' autoport='<%= autoport %>' <%= display_listen %> <%= display_password %> />
|
|
150
|
-
<video>
|
|
151
|
-
<model type='cirrus' vram='9216' heads='1'/>
|
|
152
|
-
</video>
|
|
153
|
-
<% end -%>
|
|
154
|
-
</devices>
|
|
155
|
-
</domain>
|