diff --git a/nova/tests/unit/virt/libvirt/test_config.py b/nova/tests/unit/virt/libvirt/test_config.py
index b91c685571..5d728a1761 100644
--- a/nova/tests/unit/virt/libvirt/test_config.py
+++ b/nova/tests/unit/virt/libvirt/test_config.py
@@ -1089,6 +1089,48 @@ class LibvirtConfigGuestDiskTest(LibvirtConfigBaseTest):
""")
+ def test_config_block_serial(self):
+ obj = config.LibvirtConfigGuestDisk()
+ obj.source_type = "block"
+ obj.source_path = "/tmp/hello"
+ obj.source_device = "cdrom"
+ obj.driver_name = "qemu"
+ obj.target_dev = "/dev/hdc"
+ obj.target_bus = "ide"
+ obj.alias = "ua-this-is-my-disk"
+ obj.serial = "123"
+
+ xml = obj.to_xml()
+ self.assertXmlEqual(xml, """
+
+
+
+
+
+ 123
+ """)
+
+ def test_config_block_lun_no_serial(self):
+ obj = config.LibvirtConfigGuestDisk()
+ obj.source_type = "block"
+ obj.source_path = "/tmp/hello"
+ obj.source_device = "lun"
+ obj.driver_name = "qemu"
+ obj.target_dev = "/dev/sda"
+ obj.target_bus = "scsi"
+ obj.alias = "ua-this-is-my-disk"
+ # This should not be included in the XML because source_device=lun
+ obj.serial = "123"
+
+ xml = obj.to_xml()
+ self.assertXmlEqual(xml, """
+
+
+
+
+
+ """)
+
def test_config_block_parse(self):
xml = """
diff --git a/nova/virt/libvirt/config.py b/nova/virt/libvirt/config.py
index ff1eb925b2..bd5b8cef0f 100644
--- a/nova/virt/libvirt/config.py
+++ b/nova/virt/libvirt/config.py
@@ -1308,7 +1308,7 @@ class LibvirtConfigGuestDisk(LibvirtConfigGuestDevice):
dev.append(etree.Element("target", dev=self.target_dev,
bus=self.target_bus))
- if self.serial is not None:
+ if self.serial is not None and self.source_device != 'lun':
dev.append(self._text_node("serial", self.serial))
self._format_iotune(dev)