summaryrefslogtreecommitdiffstats
path: root/nova/virt
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2012-12-13 00:11:33 +0000
committerGerrit Code Review <review@openstack.org>2012-12-13 00:11:33 +0000
commit3af7ae807933ed36f3b5d2b8e6bfa30daa8b11b9 (patch)
tree342b217f984c128e2e493450cb634415ae6cd0d3 /nova/virt
parentdf143208b0c3124f7635644ed90a1383424fabcf (diff)
parent4a7a46fd8cb053c63455f07e83074578ad1ecb8f (diff)
Merge "Add support for libvirt domain <sysinfo> XML config"
Diffstat (limited to 'nova/virt')
-rw-r--r--nova/virt/libvirt/config.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py
index 69864645c..dcf5aeb40 100644
--- a/nova/virt/libvirt/config.py
+++ b/nova/virt/libvirt/config.py
@@ -337,6 +337,86 @@ class LibvirtConfigGuestCPU(LibvirtConfigCPU):
return cpu
+class LibvirtConfigGuestSysinfo(LibvirtConfigObject):
+
+ def __init__(self, **kwargs):
+ super(LibvirtConfigGuestSysinfo, self).__init__(root_name="sysinfo",
+ **kwargs)
+
+ self.type = "smbios"
+ self.bios_vendor = None
+ self.bios_version = None
+ self.system_manufacturer = None
+ self.system_product = None
+ self.system_version = None
+ self.system_serial = None
+ self.system_uuid = None
+
+ def format_dom(self):
+ sysinfo = super(LibvirtConfigGuestSysinfo, self).format_dom()
+
+ sysinfo.set("type", self.type)
+
+ bios = None
+ system = None
+
+ if self.bios_vendor is not None:
+ if bios is None:
+ bios = etree.Element("bios")
+ info = etree.Element("entry", name="vendor")
+ info.text = self.bios_vendor
+ bios.append(info)
+
+ if self.bios_version is not None:
+ if bios is None:
+ bios = etree.Element("bios")
+ info = etree.Element("entry", name="version")
+ info.text = self.bios_version
+ bios.append(info)
+
+ if self.system_manufacturer is not None:
+ if system is None:
+ system = etree.Element("system")
+ info = etree.Element("entry", name="manufacturer")
+ info.text = self.system_manufacturer
+ system.append(info)
+
+ if self.system_product is not None:
+ if system is None:
+ system = etree.Element("system")
+ info = etree.Element("entry", name="product")
+ info.text = self.system_product
+ system.append(info)
+
+ if self.system_version is not None:
+ if system is None:
+ system = etree.Element("system")
+ info = etree.Element("entry", name="version")
+ info.text = self.system_version
+ system.append(info)
+
+ if self.system_serial is not None:
+ if system is None:
+ system = etree.Element("system")
+ info = etree.Element("entry", name="serial")
+ info.text = self.system_serial
+ system.append(info)
+
+ if self.system_uuid is not None:
+ if system is None:
+ system = etree.Element("system")
+ info = etree.Element("entry", name="uuid")
+ info.text = self.system_uuid
+ system.append(info)
+
+ if bios is not None:
+ sysinfo.append(bios)
+ if system is not None:
+ sysinfo.append(system)
+
+ return sysinfo
+
+
class LibvirtConfigGuestDevice(LibvirtConfigObject):
def __init__(self, **kwargs):
@@ -589,6 +669,7 @@ class LibvirtConfigGuest(LibvirtConfigObject):
self.acpi = False
self.apic = False
self.clock = None
+ self.sysinfo = None
self.os_type = None
self.os_loader = None
self.os_kernel = None
@@ -647,6 +728,10 @@ class LibvirtConfigGuest(LibvirtConfigObject):
root.set("type", self.virt_type)
self._format_basic_props(root)
+
+ if self.sysinfo is not None:
+ root.append(self.sysinfo.format_dom())
+
self._format_os(root)
self._format_features(root)