def call(env)
begin
domain = env[:machine].provider
.driver
.connection
.client
.lookup_domain_by_uuid(
env[:machine].id.to_s
)
rescue => e
raise Errors::NoDomainError,
error_message: e.message
end
if @boot_order.count >= 1
xml = Nokogiri::XML(domain.xml_desc)
xml.search('/domain/os/boot').each(&:remove)
hd = xml.search("/domain/devices/disk[@device='disk']")
cdrom = xml.search("/domain/devices/disk[@device='cdrom']")
nets = @boot_order.flat_map do |x|
x.class == Hash ? x : nil
end.compact
raise 'Defined only for 1 network for boot' if nets.size > 1
network = search_network(nets, xml)
devices = { 'hd' => hd,
'cdrom' => cdrom,
'network' => network }
final_boot_order = final_boot_order(@boot_order, devices)
final_boot_order.each_with_index do |node, index|
boot = "<boot order='#{index + 1}'/>"
node.add_child(boot)
logger_msg(node, index)
end
env[:machine].provider
.driver
.connection
.client
.define_domain_xml(xml.to_s)
end
@app.call(env)
end