diff options
| author | Soren Hansen <soren.hansen@rackspace.com> | 2010-08-12 23:41:32 +0200 |
|---|---|---|
| committer | Soren Hansen <soren.hansen@rackspace.com> | 2010-08-12 23:41:32 +0200 |
| commit | 6eba59be8ef6ea47e1d9657fed72fafbc7c9d6ef (patch) | |
| tree | 3d28d0b121fc2809ae81565c700082d46e77a7c7 /nova/virt | |
| parent | 32f524abb689ed824747e7871ddf315d05a35cb6 (diff) | |
| download | nova-6eba59be8ef6ea47e1d9657fed72fafbc7c9d6ef.tar.gz nova-6eba59be8ef6ea47e1d9657fed72fafbc7c9d6ef.tar.xz nova-6eba59be8ef6ea47e1d9657fed72fafbc7c9d6ef.zip | |
Make --libvirt_type=uml do the right thing: Sets the correct libvirt URI and use a special template for the XML.
Diffstat (limited to 'nova/virt')
| -rw-r--r-- | nova/virt/libvirt.qemu.xml.template (renamed from nova/virt/libvirt.xml.template) | 0 | ||||
| -rw-r--r-- | nova/virt/libvirt.uml.xml.template | 25 | ||||
| -rw-r--r-- | nova/virt/libvirt_conn.py | 32 |
3 files changed, 46 insertions, 11 deletions
diff --git a/nova/virt/libvirt.xml.template b/nova/virt/libvirt.qemu.xml.template index 307f9d03a..307f9d03a 100644 --- a/nova/virt/libvirt.xml.template +++ b/nova/virt/libvirt.qemu.xml.template diff --git a/nova/virt/libvirt.uml.xml.template b/nova/virt/libvirt.uml.xml.template new file mode 100644 index 000000000..0bc1507de --- /dev/null +++ b/nova/virt/libvirt.uml.xml.template @@ -0,0 +1,25 @@ +<domain type='%(type)s'> + <name>%(name)s</name> + <memory>%(memory_kb)s</memory> + <os> + <type>%(type)suml</type> + <kernel>/usr/bin/linux</kernel> + <root>/dev/ubda1</root> + </os> + <devices> + <disk type='file'> + <source file='%(basepath)s/disk'/> + <target dev='ubd0' bus='uml'/> + </disk> + <interface type='bridge'> + <source bridge='%(bridge_name)s'/> + <mac address='%(mac_address)s'/> + </interface> + <console type="pty" /> + <serial type="file"> + <source path='%(basepath)s/console.log'/> + <target port='1'/> + </serial> + </devices> + <nova>%(nova)s</nova> +</domain> diff --git a/nova/virt/libvirt_conn.py b/nova/virt/libvirt_conn.py index 2a818b40d..e2cdaaf7d 100644 --- a/nova/virt/libvirt_conn.py +++ b/nova/virt/libvirt_conn.py @@ -43,19 +43,21 @@ libvirt = None libxml2 = None FLAGS = flags.FLAGS -flags.DEFINE_string('libvirt_uri', - 'qemu:///system', - 'Libvirt connection URI') flags.DEFINE_string('libvirt_xml_template', - utils.abspath('compute/libvirt.xml.template'), - 'Libvirt XML Template') + utils.abspath('compute/libvirt.qemu.xml.template'), + 'Libvirt XML Template for QEmu/KVM') +flags.DEFINE_string('libvirt_uml_xml_template', + utils.abspath('compute/libvirt.uml.xml.template'), + 'Libvirt XML Template for user-mode-linux') flags.DEFINE_string('injected_network_template', utils.abspath('virt/interfaces.template'), 'Template file for injected network') - flags.DEFINE_string('libvirt_type', 'kvm', - 'Libvirt domain type (kvm, qemu, etc)') + 'Libvirt domain type (valid options are: kvm, qemu, uml)') +flags.DEFINE_string('libvirt_uri', + '', + 'Override the default libvirt URI (which is dependent on libvirt_type)') def get_connection(read_only): # These are loaded late so that there's no need to install these @@ -74,10 +76,19 @@ class LibvirtConnection(object): auth = [[libvirt.VIR_CRED_AUTHNAME, libvirt.VIR_CRED_NOECHOPROMPT], 'root', None] + + if FLAGS.libvirt_type == 'uml': + uri = FLAGS.libvirt_uri or 'uml:///system' + template_file = FLAGS.libvirt_uml_xml_template + else: + uri = FLAGS.libvirt_uri or 'qemu:///system' + template_file = FLAGS.libvirt_xml_template + self.libvirt_xml = open(template_file).read() + if read_only: - self._conn = libvirt.openReadOnly(FLAGS.libvirt_uri) + self._conn = libvirt.openReadOnly(uri) else: - self._conn = libvirt.openAuth(FLAGS.libvirt_uri, auth, 0) + self._conn = libvirt.openAuth(uri, auth, 0) def list_instances(self): @@ -240,14 +251,13 @@ class LibvirtConnection(object): def toXml(self, instance): # TODO(termie): cache? logging.debug("Starting the toXML method") - libvirt_xml = open(FLAGS.libvirt_xml_template).read() xml_info = instance.datamodel.copy() # TODO(joshua): Make this xml express the attached disks as well # TODO(termie): lazy lazy hack because xml is annoying xml_info['nova'] = json.dumps(instance.datamodel.copy()) xml_info['type'] = FLAGS.libvirt_type - libvirt_xml = libvirt_xml % xml_info + libvirt_xml = self.libvirt_xml % xml_info logging.debug("Finished the toXML method") return libvirt_xml |
