--- /dev/null
+#!/usr/bin/python
+# mclu (mini cluster)
+# Copyright (C) 2014 Red Hat Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+import os
+import sys
+
+# Generate libvirt XML. Would be nice to use virt-install here, but
+# it doesn't work: RHBZ#1095789
+def generate_libvirt_xml (vm_name, memory, vcpus, virtio, output):
+ network_model = "virtio"
+ if not virtio:
+ network_model = "e1000"
+
+ # XXX Quoting, and we should use a real XML generator.
+ xml = """
+<domain type='kvm'>
+ <name>%s</name>
+ <memory unit='MiB'>%d</memory>
+ <currentMemory unit='MiB'>%d</currentMemory>
+ <vcpu>%d</vcpu>
+ <os>
+ <type>hvm</type>
+ <boot dev='hd'/>
+ </os>
+ <features>
+ <acpi/>
+ <apic/>
+ <pae/>
+ </features>
+ <cpu mode='host-model' fallback='allow' />
+ <clock offset='utc'>
+ <timer name='rtc' tickpolicy='catchup'/>
+ <timer name='pit' tickpolicy='delay'/>
+ <timer name='hpet' present='no'/>
+ </clock>
+ <on_poweroff>destroy</on_poweroff>
+ <on_reboot>restart</on_reboot>
+ <on_crash>restart</on_crash>
+ <devices>
+ <interface type='bridge'>
+ <source bridge='br0'/>
+ <model type='%s'/>
+ </interface>
+ <console type='pty'>
+ <target type='virtio' port='0'/>
+ </console>
+ <input type='tablet' bus='usb'/>
+ <input type='mouse' bus='ps2'/>
+ <!-- <input type='keyboard' bus='ps2'/> -->
+ <graphics type='vnc' autoport='yes'/>
+ <video>
+ <model type='cirrus' vram='9216' heads='1'/>
+ </video>
+""" % (vm_name, memory, memory, vcpus, network_model)
+
+ # virtio-scsi or IDE disk:
+ if virtio:
+ xml += """
+ <controller type="scsi" index="0" model="virtio-scsi"/>
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='none' io='native'/>
+ <source file='%s'/>
+ <target dev='sda' bus='scsi'/>
+ </disk>
+""" % output
+ else:
+ xml += """
+ <disk type='file' device='disk'>
+ <driver name='qemu' type='qcow2' cache='none' io='native'/>
+ <source file='%s'/>
+ <target dev='sda' bus='ide'/>
+ </disk>
+""" % output
+
+ xml += """
+ </devices>
+</domain>
+"""
+
+ return xml
import config
import lib
+import libvirt_xml
def cmdline (subparsers):
p = subparsers.add_parser (
# Generate the XML. Would be nice to use virt-install here, but
# it doesn't work: RHBZ#1095789
- network_model = "virtio"
- if not args.virtio:
- network_model = "e1000"
-
- # XXX Quoting, and we should use a real XML generator.
- xml = """
-<domain type='kvm'>
- <name>%s</name>
- <memory unit='MiB'>%d</memory>
- <currentMemory unit='MiB'>%d</currentMemory>
- <vcpu>%d</vcpu>
- <os>
- <type>hvm</type>
- <boot dev='hd'/>
- </os>
- <features>
- <acpi/>
- <apic/>
- <pae/>
- </features>
- <cpu mode='host-model' fallback='allow' />
- <clock offset='utc'>
- <timer name='rtc' tickpolicy='catchup'/>
- <timer name='pit' tickpolicy='delay'/>
- <timer name='hpet' present='no'/>
- </clock>
- <on_poweroff>destroy</on_poweroff>
- <on_reboot>restart</on_reboot>
- <on_crash>restart</on_crash>
- <devices>
- <interface type='bridge'>
- <source bridge='br0'/>
- <model type='%s'/>
- </interface>
- <console type='pty'>
- <target type='virtio' port='0'/>
- </console>
- <input type='tablet' bus='usb'/>
- <input type='mouse' bus='ps2'/>
- <!-- <input type='keyboard' bus='ps2'/> -->
- <graphics type='vnc' autoport='yes'/>
- <video>
- <model type='cirrus' vram='9216' heads='1'/>
- </video>
-""" % (vm_name, args.memory, args.memory, args.vcpus, network_model)
-
- # virtio-scsi or IDE disk:
- if args.virtio:
- xml += """
- <controller type="scsi" index="0" model="virtio-scsi"/>
- <disk type='file' device='disk'>
- <driver name='qemu' type='qcow2' cache='none' io='native'/>
- <source file='%s'/>
- <target dev='sda' bus='scsi'/>
- </disk>
-""" % output
- else:
- xml += """
- <disk type='file' device='disk'>
- <driver name='qemu' type='qcow2' cache='none' io='native'/>
- <source file='%s'/>
- <target dev='sda' bus='ide'/>
- </disk>
-""" % output
-
- xml += """
- </devices>
-</domain>
-"""
+ xml = libvirt_xml.generate_libvirt_xml (vm_name,
+ args.memory,
+ args.vcpus,
+ args.virtio,
+ output)
# Write the XML to the xmls_dir.
fp = open ("%s/%s.xml" % (c['xmls_dir'], vm_name), "w")