diff --git a/nova/tests/test_libvirt_config.py b/nova/tests/test_libvirt_config.py
index e270ca2aacb..a00d5b57281 100644
--- a/nova/tests/test_libvirt_config.py
+++ b/nova/tests/test_libvirt_config.py
@@ -319,6 +319,22 @@ def test_config_file(self):
""")
+ def test_config_file_serial(self):
+ obj = config.LibvirtConfigGuestDisk()
+ obj.source_type = "file"
+ obj.source_path = "/tmp/hello"
+ obj.target_dev = "/dev/hda"
+ obj.target_bus = "ide"
+ obj.serial = "7a97c4a3-6f59-41d4-bf47-191d7f97f8e9"
+
+ xml = obj.to_xml()
+ self.assertXmlEqual(xml, """
+
+
+
+ 7a97c4a3-6f59-41d4-bf47-191d7f97f8e9
+ """)
+
def test_config_block(self):
obj = config.LibvirtConfigGuestDisk()
obj.source_type = "block"
diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py
index 8a924df565d..4c3483cb98e 100644
--- a/nova/virt/libvirt/config.py
+++ b/nova/virt/libvirt/config.py
@@ -363,6 +363,7 @@ def __init__(self, **kwargs):
self.auth_username = None
self.auth_secret_type = None
self.auth_secret_uuid = None
+ self.serial = None
def format_dom(self):
dev = super(LibvirtConfigGuestDisk, self).format_dom()
@@ -404,6 +405,9 @@ def format_dom(self):
dev.append(etree.Element("target", dev=self.target_dev,
bus=self.target_bus))
+ if self.serial is not None:
+ dev.append(self._text_node("serial", self.serial))
+
return dev