File tree Expand file tree Collapse file tree 3 files changed +64
-1
lines changed
lib/fog/libvirt/models/compute
tests/libvirt/models/compute Expand file tree Collapse file tree 3 files changed +64
-1
lines changed Original file line number Diff line number Diff line change @@ -17,3 +17,7 @@ Style/SignalException:
17
17
18
18
Metrics/ClassLength :
19
19
Enabled : false
20
+
21
+ Metrics/BlockLength :
22
+ Exclude :
23
+ - tests/**/*.rb
Original file line number Diff line number Diff line change @@ -13,6 +13,8 @@ class Server < Fog::Compute::Server
13
13
14
14
attribute :cpus
15
15
attribute :cputime
16
+ attribute :os_firmware
17
+ attribute :os_firmware_features
16
18
attribute :os_type
17
19
attribute :memory_size
18
20
attribute :max_memory_size
@@ -287,14 +289,28 @@ def to_xml
287
289
end
288
290
289
291
xml . vcpu ( cpus )
290
- xml . os do
292
+ os_tags = { }
293
+
294
+ # Set firmware only if it's EFI, BIOS don't need to be set
295
+ os_tags [ :firmware ] = "efi" if os_firmware == "efi"
296
+
297
+ xml . os ( **os_tags ) do
291
298
type = xml . type ( os_type , :arch => arch )
292
299
type [ :machine ] = "q35" if [ "i686" , "x86_64" ] . include? ( arch )
293
300
294
301
boot_order . each do |dev |
295
302
xml . boot ( :dev => dev )
296
303
end
304
+
305
+ if os_firmware == "efi"
306
+ xml . firmware do
307
+ os_firmware_features . each_pair do |key , value |
308
+ xml . feature ( :name => key , :enabled => value )
309
+ end
310
+ end
311
+ end
297
312
end
313
+
298
314
xml . features do
299
315
xml . acpi
300
316
xml . apic
Original file line number Diff line number Diff line change 32
32
attributes = [ :id ,
33
33
:cpus ,
34
34
:cputime ,
35
+ :os_firmware ,
36
+ :os_firmware_features ,
35
37
:os_type ,
36
38
:memory_size ,
37
39
:max_memory_size ,
67
69
68
70
test ( 'be a kind of Fog::Libvirt::Compute::Server' ) { server . kind_of? Fog ::Libvirt ::Compute ::Server }
69
71
tests ( "serializes to xml" ) do
72
+ test ( "without firmware" ) { server . to_xml . include? ( "<os>" ) }
70
73
test ( "with memory" ) { server . to_xml . match? ( %r{<memory>\d +</memory>} ) }
71
74
test ( "with disk of type file" ) do
72
75
xml = server . to_xml
86
89
end
87
90
test ( "with q35 machine type on x86_64" ) { server . to_xml . match? ( %r{<type arch="x86_64" machine="q35">hvm</type>} ) }
88
91
end
92
+ test ( "with efi firmware" ) do
93
+ server = Fog ::Libvirt ::Compute ::Server . new (
94
+ {
95
+ :os_firmware => "efi" ,
96
+ :os_firmware_features => {
97
+ "secure-boot" => "no" ,
98
+ "enrolled-keys" => "no"
99
+ } ,
100
+ :nics => [ ] ,
101
+ :volumes => [ ]
102
+ }
103
+ )
104
+ xml = server . to_xml
105
+
106
+ os_firmware = xml . include? ( '<os firmware="efi">' )
107
+ secure_boot = !xml . include? ( '<feature name="secure-boot" enabled="no" />' )
108
+ enrolled_keys = !xml . include? ( '<feature name="enrolled-keys" enabled="no" />' )
109
+
110
+ os_firmware && secure_boot && enrolled_keys
111
+ end
112
+ test ( "with secure boot" ) do
113
+ server = Fog ::Libvirt ::Compute ::Server . new (
114
+ {
115
+ :os_firmware => "efi" ,
116
+ :os_firmware_features => {
117
+ "secure-boot" => "yes" ,
118
+ "enrolled-keys" => "yes"
119
+ } ,
120
+ :nics => [ ] ,
121
+ :volumes => [ ]
122
+ }
123
+ )
124
+ xml = server . to_xml
125
+
126
+ os_firmware = xml . include? ( '<os firmware="efi">' )
127
+ secure_boot = xml . include? ( '<feature name="secure-boot" enabled="yes"/>' )
128
+ enrolled_keys = xml . include? ( '<feature name="enrolled-keys" enabled="yes"/>' )
129
+
130
+ os_firmware && secure_boot && enrolled_keys
131
+ end
89
132
end
90
133
end
You can’t perform that action at this time.
0 commit comments