<domain type='<%= domain_type %>'>
  <name><%= name %></name>
  <memory><%= memory_size %></memory>
<% if hugepages -%>
  <memoryBacking>
    <hugepages/>
  </memoryBacking>
<% end -%>
  <vcpu><%= cpus %></vcpu>
  <os>
    <type arch='<%= arch %>'><%= os_type %></type>
<% boot_order.each do |dev| -%>
    <boot dev='<%= dev %>'/>
<% end -%>
  </os>
  <features>
    <acpi/>
    <apic/>
    <pae/>
  </features>
<% if !cpu.empty? -%>
<% if cpu[:mode] -%>
  <cpu mode='<%= cpu[:mode] %>'>
<% else -%>
  <cpu>
<% end -%>
<%
  fallback = 'allow'
  model = ''
  if cpu[:model]
    fallback = cpu[:model][:fallback] if cpu[:model][:fallback]
    model    = cpu[:model][:name]     if cpu[:model][:name]
  end
-%>
    <model fallback='<%= fallback %>'><%= model %></model>
  </cpu>
<% end -%>
  <clock offset='utc'/>
  <devices>
<% args = {}
   if File.file?('/etc/foreman/ceph.conf')
     File.readlines('/etc/foreman/ceph.conf').each do |line|
       pair = line.strip.split("=")
       key = pair[0]
       value = pair[1]
       args[key] = value
     end
   end
%>
<% volumes.each do |vol| -%>
  <% if File.file?('/etc/foreman/ceph.conf') && vol.pool_name.include?(args["libvirt_ceph_pool"]) %>
    <disk type='network' device='disk'>
      <driver name='qemu' type='<%= vol.format_type %>' cache='writeback' discard='unmap'/>
      <source protocol='rbd' name='<%= vol.path %>'>
      <% if args.key?("monitor") -%>
        <% args["monitor"].split(",").each do |mon| %>
        <host name='<%= mon %>' port='<%= args["port"] %>'/>
        <% end %>
      <% end %>
      </source>
      <auth username='<%= args["auth_username"] %>'>
       <% if args.key?("auth_uuid") -%>
        <secret type='ceph' uuid='<%= args["auth_uuid"] %>'/>
       <% else -%>
        <secret type='ceph' usage='<%= args["auth_usage"] %>'/>
       <% end -%>
      </auth>
      <% if args['bus_type'] == 'virtio' %>
        <target dev='vd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='virtio'/>
      <% else %>
        <target dev='sd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='scsi'/>
      <% end %>
    </disk>
  <% else %>
    <disk type='file' device='disk'>
      <driver name='qemu' type='<%= vol.format_type %>'/>
      <source file='<%= vol.path %>'/>
      <%# we need to ensure a unique target dev -%>
      <target dev='vd<%= ('a'..'z').to_a[volumes.index(vol)] %>' bus='virtio'/>
    </disk>
  <% end %>
<% end -%>
<% if iso_file -%>
    <disk type='file' device='cdrom'>
      <driver name='qemu' type='raw'/>
      <source file='<%= "#{iso_dir}/#{iso_file}" %>'/>
      <target dev='hdc' bus='ide'/>
      <readonly/>
      <address type='drive' controller='0' bus='1' unit='0'/>
    </disk>
<% end -%>
<% nics.each do |nic| -%>
    <interface type='<%= nic.type %>'>
      <source <%= nic.type == 'bridge' ? "bridge='#{nic.bridge}'" : "network='#{nic.network}'" %> />
      <model type='<%= nic.model %>'/>
    </interface>
<% end -%>
<% if guest_agent -%>
    <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
    </channel>
<% end -%>
    <rng model='virtio'>
<%
  rng_backend_model = virtio_rng[:backend_model] ? virtio_rng[:backend_model] : 'random'
-%>
<% if virtio_rng[:backend_path] -%>
      <backend model='<%= rng_backend_model %>'><%= virtio_rng[:backend_path] %></backend>
<% else -%>
      <backend model='<%= rng_backend_model %>'/>
<% end -%>
    </rng>
<% if arch == "s390x" -%>
    <controller type="scsi" index="0" model="virtio-scsi"/>
    <console type="pty">
      <target type="sclp"/>
    </console>
    <memballoon model="virtio"/>
<% else -%>
    <serial type='pty'>
      <target port='0'/>
    </serial>
    <console type='pty'>
      <target port='0'/>
    </console>
    <input type='tablet' bus='usb'/>
    <input type='mouse' bus='ps2'/>
<% end -%>
<%
display_type = display[:type]

if display[:port].empty?
  display_port = display[:port]
  autoport = 'no'
else
  display_port = '-1'
  autoport = 'yes'
end

unless display[:listen].empty?
  display_listen = "listen='#{display[:listen]}'"
end

unless display[:password].empty?
  display_password = "passwd='#{display[:password]}'"
end
-%>
<% if arch != "s390x" -%>
    <graphics type='<%= display_type %>' port='<%= display_port %>' autoport='<%= autoport %>' <%= display_listen %> <%= display_password %> />
    <video>
      <model type='cirrus' vram='9216' heads='1'/>
    </video>
<% end -%>
  </devices>
</domain>
