← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1795747] [NEW] libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0' when try to create an instance with two scsi volumes

 

Public bug reported:

Description
===========

Error occurs when an instance with two volumes (created from SCSI image). From nova-compute.log, the following information related to volume attachment (address has no bus, target and unit informations):
 <disk type="block" device="disk">
      <driver name="qemu" type="raw" cache="none" io="native"/>
      <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8-lun-0"/>
      <target bus="scsi" dev="sda"/>
      <serial>8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8</serial>
      <address type="drive" controller="0"/>
    </disk>
    <disk type="block" device="disk">
      <driver name="qemu" type="raw" cache="none" io="native"/>
      <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb-lun-0"/>
      <target bus="scsi" dev="sdb"/>
      <serial>7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb</serial>
      <address type="drive" controller="0"/>
    </disk>

But when instance is created with only one volume and second volume is attached later (with openstack volume attach .. command), it's configured differently:
<disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/sdc'/>
      <backingStore/>
      <target dev='sda' bus='scsi'/>
      <serial>20fb8417-3ece-46f0-affb-d80800a885dd</serial>
      <alias name='scsi0-0-0-0'/>
      <address type='drive' controller='0' bus='0' target='0' unit='0'/>
    </disk>
    <disk type='block' device='disk'>
      <driver name='qemu' type='raw' cache='none' io='native'/>
      <source dev='/dev/sdd'/>
      <backingStore/>
      <target dev='sdb' bus='scsi'/>
      <serial>2d087117-bc51-48ae-9c4d-00950deeb617</serial>
      <alias name='scsi0-0-0-1'/>
      <address type='drive' controller='0' bus='0' target='0' unit='1'/>
    </disk>

Steps to reproduce
==================

1 - Using an admin openstack account, create a cirros image with scsi
properties:

wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
openstack image create "cirros_scsi" \
  --file cirros-0.3.5-x86_64-disk.img \
  --disk-format qcow2 --container-format bare \
  --property hw_disk_bus=scsi \
  --property hw_scsi_controller=virtio-scsi \
  --public

2 - Create two volumes (volume-backed image) using cirros_scsi image:
openstack volume create --size 1 volume-0 --image cirros_scsi
openstack volume create --size 1 volume-1 --image cirros_scsi

3 - Create an instance using two volumes (error scenario):
v1id=`openstack volume show volume-0 | grep " id " | awk '{print $4}'` && echo $v1id
v2id=`openstack volume show volume-1 | grep " id " | awk '{print $4}'` && echo $v2id
nova boot --flavor m1.nano \
   --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
   --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
   --nic net-id=77669d98-2bc2-4a48-aa6f-7184ec99698c \
   --key mykey instance01

nova boot --flavor $flavor_id \
   --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
   --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
   --nic net-id=<network_id> \
   --key <keypair> instance01

4 - Check instance
openstack server list
openstack volume list

Expected result
===============
Instance should be created normally;

Actual result
=============
(openstack) server list
+--------------------------------------+------------+--------+----------+-------+---------+
| ID                                   | Name       | Status | Networks | Image | Flavor  |
+--------------------------------------+------------+--------+----------+-------+---------+
| 6717d471-2092-48c8-8a4f-463ff8afc5bb | instance01 | ERROR  |          |       | m1.nano |
+--------------------------------------+------------+--------+----------+-------+---------+

root@cldsrv02 ~]# openstack server show instance01 -f shell | grep fault
fault="{u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 6717d471-2092-48c8-8a4f-463ff8afc5bb.', u'code': 500, u'details': u'  File "/usr/lib/python2.7/site-packages/nova/conductor/manager.py", line 580, in build_instances\n    raise exception.MaxRetriesExceeded(reason=msg)\n', u'created': u'2018-10-02T21:24:23Z'}"

Error reported in /var/log/nova/nova-compute.log:
lugin='linux_bridge',port_profile=<?>,preserve_on_delete=False,vif_name='tap7946d21b-8f')
2018-10-02 17:24:09.694 17390 ERROR nova.virt.libvirt.guest [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] Error defining a guest with XML: <domain type="qemu">
  <uuid>6717d471-2092-48c8-8a4f-463ff8afc5bb</uuid>
  <name>instance-00000008</name>
  <memory>65536</memory>
  <vcpu>1</vcpu>
  <metadata>
    <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0";>
      <nova:package version="17.0.5-1.el7"/>
      <nova:name>instance01</nova:name>
      <nova:creationTime>2018-10-02 21:24:07</nova:creationTime>
      <nova:flavor name="m1.nano">
        <nova:memory>64</nova:memory>
        <nova:disk>1</nova:disk>
        <nova:swap>0</nova:swap>
        <nova:ephemeral>0</nova:ephemeral>
        <nova:vcpus>1</nova:vcpus>
      </nova:flavor>
      <nova:owner>
        <nova:user uuid="7500c13b015449de99a66db93db1b697">admin</nova:user>
        <nova:project uuid="265f6aeb1ae746a887cc589c482b4929">admin</nova:project>
      </nova:owner>
    </nova:instance>
  </metadata>
  <sysinfo type="smbios">
    <system>
      <entry name="manufacturer">RDO</entry>
      <entry name="product">OpenStack Compute</entry>
      <entry name="version">17.0.5-1.el7</entry>
      <entry name="serial">1235d097-6a37-4c00-a5e5-33ccae494775</entry>
      <entry name="uuid">6717d471-2092-48c8-8a4f-463ff8afc5bb</entry>
      <entry name="family">Virtual Machine</entry>
    </system>
  </sysinfo>
  <os>
    <type>hvm</type>
    <boot dev="hd"/>
    <smbios mode="sysinfo"/>
  </os>
  <features>
    <acpi/>
    <apic/>
  </features>
  <cputune>
    <shares>1024</shares>
  </cputune>
  <clock offset="utc"/>
  <cpu mode="host-model" match="exact">
    <topology sockets="1" cores="1" threads="1"/>
  </cpu>
  <devices>
    <disk type="block" device="disk">
      <driver name="qemu" type="raw" cache="none" io="native"/>
      <source dev="/dev/sdc"/>
      <target bus="scsi" dev="sda"/>
      <serial>0ce95aac-3205-4aa3-830b-c65113f0c9f7</serial>
      <address type="drive" controller="0"/>
    </disk>
    <disk type="block" device="disk">
      <driver name="qemu" type="raw" cache="none" io="native"/>
      <source dev="/dev/sdd"/>
      <target bus="scsi" dev="sdb"/>
      <serial>08e55f7d-78e8-4e5a-bdfc-2f7ebcd0ee27</serial>
      <address type="drive" controller="0"/>
    </disk>
    <interface type="bridge">
      <mac address="fa:16:3e:08:29:07"/>
      <model type="virtio"/>
      <driver name="qemu"/>
      <source bridge="brq77669d98-2b"/>
      <target dev="tap7946d21b-8f"/>
    </interface>
    <serial type="pty">
      <log file="/var/lib/nova/instances/6717d471-2092-48c8-8a4f-463ff8afc5bb/console.log" append="off"/>
    </serial>
    <input type="tablet" bus="usb"/>
    <graphics type="vnc" autoport="yes" keymap="en-us" listen="10.0.0.11"/>
    <video>
      <model type="cirrus"/>
    </video>
    <memballoon model="virtio">
      <stats period="10"/>
    </memballoon>
  </devices>
</domain>
: libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'

2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Instance failed to spawn: libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Traceback (most recent call last):
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2251, in _build_resources
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     yield resources
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2031, in _build_and_run_instance
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     block_device_info=block_device_info)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 3089, in spawn
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure=True)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5614, in _create_domain_and_network
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5583, in _create_domain_and_network
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     post_xml_callback=post_xml_callback)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5495, in _create_domain
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = libvirt_guest.Guest.create(xml, self._host)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 129, in create
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     encodeutils.safe_decode(xml))
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 125, in create
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = host.write_instance_config(xml)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/host.py", line 829, in write_instance_config
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     domain = self.get_connection().defineXML(xml)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     result = proxy_call(self._autowrap, f, *args, **kwargs)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = execute(f, *args, **kwargs)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(c, e, tb)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = meth(*args, **kwargs)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3676, in defineXML
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     if ret is None:raise libvirtError('virDomainDefineXML() failed', conn=self)
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]

Environment
===========
Openstack release: Queens  (All-in-one Single machine)

root@cldsrv02 ~]# rpm -qa | grep nova
openstack-nova-api-17.0.5-1.el7.noarch
openstack-nova-placement-api-17.0.5-1.el7.noarch
openstack-nova-common-17.0.5-1.el7.noarch
openstack-nova-conductor-17.0.5-1.el7.noarch
python2-novaclient-10.1.0-1.el7.noarch
openstack-nova-compute-17.0.5-1.el7.noarch
python-nova-17.0.5-1.el7.noarch
openstack-nova-console-17.0.5-1.el7.noarch
openstack-nova-novncproxy-17.0.5-1.el7.noarch
openstack-nova-scheduler-17.0.5-1.el7.noarch
[root@cldsrv02 ~]#

Hypervisor: Libvirt + KVM:
[root@cldsrv02 ~]# rpm -qa | grep -iE 'kvm|virt'
qemu-kvm-common-ev-2.10.0-21.el7_5.4.1.x86_64
libvirt-daemon-driver-storage-scsi-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-interface-3.9.0-14.el7_5.8.x86_64
libvirt-client-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-core-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-rbd-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-network-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-disk-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-logical-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-secret-3.9.0-14.el7_5.8.x86_64
qemu-kvm-ev-2.10.0-21.el7_5.4.1.x86_64
libvirt-libs-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-qemu-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-iscsi-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-nwfilter-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-kvm-3.9.0-14.el7_5.8.x86_64
libvirt-python-3.9.0-1.el7.x86_64
libvirt-daemon-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-gluster-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-storage-mpath-3.9.0-14.el7_5.8.x86_64
libvirt-daemon-driver-nodedev-3.9.0-14.el7_5.8.x86_64
centos-release-virt-common-1-1.el7.centos.noarch
virt-what-1.18-4.el7.x86_64

Storage type:  LVM:
[root@cldsrv02 ~]# rpm -qa | grep lvm
lvm2-libs-2.02.177-4.el7.x86_64
lvm2-2.02.177-4.el7.x86_64

Networking:  Neutron
root@cldsrv02 ~]# rpm -qa | grep neutron
openstack-neutron-linuxbridge-12.0.3-1.el7.noarch
openstack-neutron-common-12.0.3-1.el7.noarch
python2-neutron-lib-1.13.0-1.el7.noarch
openstack-neutron-12.0.3-1.el7.noarch
openstack-neutron-ml2-12.0.3-1.el7.noarch
python-neutron-12.0.3-1.el7.noarch
python2-neutronclient-6.7.0-1.el7.noarch

** Affects: nova
     Importance: Undecided
         Status: New

** Attachment added: "nova-compute.log"
   https://bugs.launchpad.net/bugs/1795747/+attachment/5196139/+files/nova-compute.log

** Description changed:

  Description
  ===========
  
- Error occurs when an instance with two volumes (created from scsi image). From nova-compute.log, the following information related to volume attachment (address has no bus, target and unit infos):
-  <disk type="block" device="disk">
-       <driver name="qemu" type="raw" cache="none" io="native"/>
-       <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8-lun-0"/>
-       <target bus="scsi" dev="sda"/>
-       <serial>8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8</serial>
-       <address type="drive" controller="0"/>
-     </disk>
-     <disk type="block" device="disk">
-       <driver name="qemu" type="raw" cache="none" io="native"/>
-       <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb-lun-0"/>
-       <target bus="scsi" dev="sdb"/>
-       <serial>7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb</serial>
-       <address type="drive" controller="0"/>
-     </disk>
+ Error occurs when an instance with two volumes (created from SCSI image). From nova-compute.log, the following information related to volume attachment (address has no bus, target and unit informations):
+  <disk type="block" device="disk">
+       <driver name="qemu" type="raw" cache="none" io="native"/>
+       <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8-lun-0"/>
+       <target bus="scsi" dev="sda"/>
+       <serial>8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8</serial>
+       <address type="drive" controller="0"/>
+     </disk>
+     <disk type="block" device="disk">
+       <driver name="qemu" type="raw" cache="none" io="native"/>
+       <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb-lun-0"/>
+       <target bus="scsi" dev="sdb"/>
+       <serial>7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb</serial>
+       <address type="drive" controller="0"/>
+     </disk>
  
  But when instance is created with only one volume and second volume is attached later (with openstack volume attach .. command), it's configured differently:
  <disk type='block' device='disk'>
-       <driver name='qemu' type='raw' cache='none' io='native'/>
-       <source dev='/dev/sdc'/>
-       <backingStore/>
-       <target dev='sda' bus='scsi'/>
-       <serial>20fb8417-3ece-46f0-affb-d80800a885dd</serial>
-       <alias name='scsi0-0-0-0'/>
-       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
-     </disk>
-     <disk type='block' device='disk'>
-       <driver name='qemu' type='raw' cache='none' io='native'/>
-       <source dev='/dev/sdd'/>
-       <backingStore/>
-       <target dev='sdb' bus='scsi'/>
-       <serial>2d087117-bc51-48ae-9c4d-00950deeb617</serial>
-       <alias name='scsi0-0-0-1'/>
-       <address type='drive' controller='0' bus='0' target='0' unit='1'/>
-     </disk>
- 
+       <driver name='qemu' type='raw' cache='none' io='native'/>
+       <source dev='/dev/sdc'/>
+       <backingStore/>
+       <target dev='sda' bus='scsi'/>
+       <serial>20fb8417-3ece-46f0-affb-d80800a885dd</serial>
+       <alias name='scsi0-0-0-0'/>
+       <address type='drive' controller='0' bus='0' target='0' unit='0'/>
+     </disk>
+     <disk type='block' device='disk'>
+       <driver name='qemu' type='raw' cache='none' io='native'/>
+       <source dev='/dev/sdd'/>
+       <backingStore/>
+       <target dev='sdb' bus='scsi'/>
+       <serial>2d087117-bc51-48ae-9c4d-00950deeb617</serial>
+       <alias name='scsi0-0-0-1'/>
+       <address type='drive' controller='0' bus='0' target='0' unit='1'/>
+     </disk>
  
  Steps to reproduce
  ==================
  
  1 - Using an admin openstack account, create a cirros image with scsi
  properties:
  
  wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
  openstack image create "cirros_scsi" \
-   --file cirros-0.3.5-x86_64-disk.img \
-   --disk-format qcow2 --container-format bare \
-   --property hw_disk_bus=scsi \
-   --property hw_scsi_controller=virtio-scsi \
-   --public    
+   --file cirros-0.3.5-x86_64-disk.img \
+   --disk-format qcow2 --container-format bare \
+   --property hw_disk_bus=scsi \
+   --property hw_scsi_controller=virtio-scsi \
+   --public
  
  2 - Create two volumes (volume-backed image) using cirros_scsi image:
  openstack volume create --size 1 volume-0 --image cirros_scsi
  openstack volume create --size 1 volume-1 --image cirros_scsi
  
  3 - Create an instance using two volumes (error scenario):
  v1id=`openstack volume show volume-0 | grep " id " | awk '{print $4}'` && echo $v1id
  v2id=`openstack volume show volume-1 | grep " id " | awk '{print $4}'` && echo $v2id
  nova boot --flavor m1.nano \
-    --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
-    --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
-    --nic net-id=77669d98-2bc2-4a48-aa6f-7184ec99698c \
-    --key mykey instance01
+    --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
+    --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
+    --nic net-id=77669d98-2bc2-4a48-aa6f-7184ec99698c \
+    --key mykey instance01
  
  nova boot --flavor $flavor_id \
-    --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
-    --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
-    --nic net-id=<network_id> \
-    --key <keypair> instance01
- 
- 
- 4 - Check instance 
+    --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
+    --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
+    --nic net-id=<network_id> \
+    --key <keypair> instance01
+ 
+ 4 - Check instance
  openstack server list
  openstack volume list
- 
  
  Expected result
  ===============
  Instance should be created normally;
  
  Actual result
  =============
  (openstack) server list
  +--------------------------------------+------------+--------+----------+-------+---------+
  | ID                                   | Name       | Status | Networks | Image | Flavor  |
  +--------------------------------------+------------+--------+----------+-------+---------+
  | 6717d471-2092-48c8-8a4f-463ff8afc5bb | instance01 | ERROR  |          |       | m1.nano |
  +--------------------------------------+------------+--------+----------+-------+---------+
  
  root@cldsrv02 ~]# openstack server show instance01 -f shell | grep fault
  fault="{u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 6717d471-2092-48c8-8a4f-463ff8afc5bb.', u'code': 500, u'details': u'  File "/usr/lib/python2.7/site-packages/nova/conductor/manager.py", line 580, in build_instances\n    raise exception.MaxRetriesExceeded(reason=msg)\n', u'created': u'2018-10-02T21:24:23Z'}"
  
  Error reported in /var/log/nova/nova-compute.log:
  lugin='linux_bridge',port_profile=<?>,preserve_on_delete=False,vif_name='tap7946d21b-8f')
  2018-10-02 17:24:09.694 17390 ERROR nova.virt.libvirt.guest [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] Error defining a guest with XML: <domain type="qemu">
-   <uuid>6717d471-2092-48c8-8a4f-463ff8afc5bb</uuid>
-   <name>instance-00000008</name>
-   <memory>65536</memory>
-   <vcpu>1</vcpu>
-   <metadata>
-     <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0";>
-       <nova:package version="17.0.5-1.el7"/>
-       <nova:name>instance01</nova:name>
-       <nova:creationTime>2018-10-02 21:24:07</nova:creationTime>
-       <nova:flavor name="m1.nano">
-         <nova:memory>64</nova:memory>
-         <nova:disk>1</nova:disk>
-         <nova:swap>0</nova:swap>
-         <nova:ephemeral>0</nova:ephemeral>
-         <nova:vcpus>1</nova:vcpus>
-       </nova:flavor>
-       <nova:owner>
-         <nova:user uuid="7500c13b015449de99a66db93db1b697">admin</nova:user>
-         <nova:project uuid="265f6aeb1ae746a887cc589c482b4929">admin</nova:project>
-       </nova:owner>
-     </nova:instance>
-   </metadata>
-   <sysinfo type="smbios">
-     <system>
-       <entry name="manufacturer">RDO</entry>
-       <entry name="product">OpenStack Compute</entry>
-       <entry name="version">17.0.5-1.el7</entry>
-       <entry name="serial">1235d097-6a37-4c00-a5e5-33ccae494775</entry>
-       <entry name="uuid">6717d471-2092-48c8-8a4f-463ff8afc5bb</entry>
-       <entry name="family">Virtual Machine</entry>
-     </system>
-   </sysinfo>
-   <os>
-     <type>hvm</type>
-     <boot dev="hd"/>
-     <smbios mode="sysinfo"/>
-   </os>
-   <features>
-     <acpi/>
-     <apic/>
-   </features>
-   <cputune>
-     <shares>1024</shares>
-   </cputune>
-   <clock offset="utc"/>
-   <cpu mode="host-model" match="exact">
-     <topology sockets="1" cores="1" threads="1"/>
-   </cpu>
-   <devices>
-     <disk type="block" device="disk">
-       <driver name="qemu" type="raw" cache="none" io="native"/>
-       <source dev="/dev/sdc"/>
-       <target bus="scsi" dev="sda"/>
-       <serial>0ce95aac-3205-4aa3-830b-c65113f0c9f7</serial>
-       <address type="drive" controller="0"/>
-     </disk>
-     <disk type="block" device="disk">
-       <driver name="qemu" type="raw" cache="none" io="native"/>
-       <source dev="/dev/sdd"/>
-       <target bus="scsi" dev="sdb"/>
-       <serial>08e55f7d-78e8-4e5a-bdfc-2f7ebcd0ee27</serial>
-       <address type="drive" controller="0"/>
-     </disk>
-     <interface type="bridge">
-       <mac address="fa:16:3e:08:29:07"/>
-       <model type="virtio"/>
-       <driver name="qemu"/>
-       <source bridge="brq77669d98-2b"/>
-       <target dev="tap7946d21b-8f"/>
-     </interface>
-     <serial type="pty">
-       <log file="/var/lib/nova/instances/6717d471-2092-48c8-8a4f-463ff8afc5bb/console.log" append="off"/>
-     </serial>
-     <input type="tablet" bus="usb"/>
-     <graphics type="vnc" autoport="yes" keymap="en-us" listen="10.0.0.11"/>
-     <video>
-       <model type="cirrus"/>
-     </video>
-     <memballoon model="virtio">
-       <stats period="10"/>
-     </memballoon>
-   </devices>
+   <uuid>6717d471-2092-48c8-8a4f-463ff8afc5bb</uuid>
+   <name>instance-00000008</name>
+   <memory>65536</memory>
+   <vcpu>1</vcpu>
+   <metadata>
+     <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0";>
+       <nova:package version="17.0.5-1.el7"/>
+       <nova:name>instance01</nova:name>
+       <nova:creationTime>2018-10-02 21:24:07</nova:creationTime>
+       <nova:flavor name="m1.nano">
+         <nova:memory>64</nova:memory>
+         <nova:disk>1</nova:disk>
+         <nova:swap>0</nova:swap>
+         <nova:ephemeral>0</nova:ephemeral>
+         <nova:vcpus>1</nova:vcpus>
+       </nova:flavor>
+       <nova:owner>
+         <nova:user uuid="7500c13b015449de99a66db93db1b697">admin</nova:user>
+         <nova:project uuid="265f6aeb1ae746a887cc589c482b4929">admin</nova:project>
+       </nova:owner>
+     </nova:instance>
+   </metadata>
+   <sysinfo type="smbios">
+     <system>
+       <entry name="manufacturer">RDO</entry>
+       <entry name="product">OpenStack Compute</entry>
+       <entry name="version">17.0.5-1.el7</entry>
+       <entry name="serial">1235d097-6a37-4c00-a5e5-33ccae494775</entry>
+       <entry name="uuid">6717d471-2092-48c8-8a4f-463ff8afc5bb</entry>
+       <entry name="family">Virtual Machine</entry>
+     </system>
+   </sysinfo>
+   <os>
+     <type>hvm</type>
+     <boot dev="hd"/>
+     <smbios mode="sysinfo"/>
+   </os>
+   <features>
+     <acpi/>
+     <apic/>
+   </features>
+   <cputune>
+     <shares>1024</shares>
+   </cputune>
+   <clock offset="utc"/>
+   <cpu mode="host-model" match="exact">
+     <topology sockets="1" cores="1" threads="1"/>
+   </cpu>
+   <devices>
+     <disk type="block" device="disk">
+       <driver name="qemu" type="raw" cache="none" io="native"/>
+       <source dev="/dev/sdc"/>
+       <target bus="scsi" dev="sda"/>
+       <serial>0ce95aac-3205-4aa3-830b-c65113f0c9f7</serial>
+       <address type="drive" controller="0"/>
+     </disk>
+     <disk type="block" device="disk">
+       <driver name="qemu" type="raw" cache="none" io="native"/>
+       <source dev="/dev/sdd"/>
+       <target bus="scsi" dev="sdb"/>
+       <serial>08e55f7d-78e8-4e5a-bdfc-2f7ebcd0ee27</serial>
+       <address type="drive" controller="0"/>
+     </disk>
+     <interface type="bridge">
+       <mac address="fa:16:3e:08:29:07"/>
+       <model type="virtio"/>
+       <driver name="qemu"/>
+       <source bridge="brq77669d98-2b"/>
+       <target dev="tap7946d21b-8f"/>
+     </interface>
+     <serial type="pty">
+       <log file="/var/lib/nova/instances/6717d471-2092-48c8-8a4f-463ff8afc5bb/console.log" append="off"/>
+     </serial>
+     <input type="tablet" bus="usb"/>
+     <graphics type="vnc" autoport="yes" keymap="en-us" listen="10.0.0.11"/>
+     <video>
+       <model type="cirrus"/>
+     </video>
+     <memballoon model="virtio">
+       <stats period="10"/>
+     </memballoon>
+   </devices>
  </domain>
  : libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Instance failed to spawn: libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Traceback (most recent call last):
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2251, in _build_resources
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     yield resources
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2031, in _build_and_run_instance
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     block_device_info=block_device_info)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 3089, in spawn
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure=True)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5614, in _create_domain_and_network
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5583, in _create_domain_and_network
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     post_xml_callback=post_xml_callback)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5495, in _create_domain
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = libvirt_guest.Guest.create(xml, self._host)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 129, in create
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     encodeutils.safe_decode(xml))
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 125, in create
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = host.write_instance_config(xml)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/host.py", line 829, in write_instance_config
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     domain = self.get_connection().defineXML(xml)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     result = proxy_call(self._autowrap, f, *args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = execute(f, *args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(c, e, tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = meth(*args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3676, in defineXML
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     if ret is None:raise libvirtError('virDomainDefineXML() failed', conn=self)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
- 2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] 
- 
- 
+ 2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]
  
  Environment
  ===========
  Openstack release: Queens  (all in one)
  
  root@cldsrv02 ~]# rpm -qa | grep nova
  openstack-nova-api-17.0.5-1.el7.noarch
  openstack-nova-placement-api-17.0.5-1.el7.noarch
  openstack-nova-common-17.0.5-1.el7.noarch
  openstack-nova-conductor-17.0.5-1.el7.noarch
  python2-novaclient-10.1.0-1.el7.noarch
  openstack-nova-compute-17.0.5-1.el7.noarch
  python-nova-17.0.5-1.el7.noarch
  openstack-nova-console-17.0.5-1.el7.noarch
  openstack-nova-novncproxy-17.0.5-1.el7.noarch
  openstack-nova-scheduler-17.0.5-1.el7.noarch
- [root@cldsrv02 ~]# 
- 
- Hypervisor: Libvirt + KVM:  
+ [root@cldsrv02 ~]#
+ 
+ Hypervisor: Libvirt + KVM:
  [root@cldsrv02 ~]# rpm -qa | grep -iE 'kvm|virt'
  qemu-kvm-common-ev-2.10.0-21.el7_5.4.1.x86_64
  libvirt-daemon-driver-storage-scsi-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-interface-3.9.0-14.el7_5.8.x86_64
  libvirt-client-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-core-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-rbd-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-network-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-disk-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-logical-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-secret-3.9.0-14.el7_5.8.x86_64
  qemu-kvm-ev-2.10.0-21.el7_5.4.1.x86_64
  libvirt-libs-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-qemu-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-iscsi-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-nwfilter-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-kvm-3.9.0-14.el7_5.8.x86_64
  libvirt-python-3.9.0-1.el7.x86_64
  libvirt-daemon-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-gluster-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-mpath-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-nodedev-3.9.0-14.el7_5.8.x86_64
  centos-release-virt-common-1-1.el7.centos.noarch
  virt-what-1.18-4.el7.x86_64
  
  Storage type:  LVM:
  [root@cldsrv02 ~]# rpm -qa | grep lvm
  lvm2-libs-2.02.177-4.el7.x86_64
  lvm2-2.02.177-4.el7.x86_64
  
- 
- Networking:  Neutron 
+ Networking:  Neutron
  root@cldsrv02 ~]# rpm -qa | grep neutron
  openstack-neutron-linuxbridge-12.0.3-1.el7.noarch
  openstack-neutron-common-12.0.3-1.el7.noarch
  python2-neutron-lib-1.13.0-1.el7.noarch
  openstack-neutron-12.0.3-1.el7.noarch
  openstack-neutron-ml2-12.0.3-1.el7.noarch
  python-neutron-12.0.3-1.el7.noarch
  python2-neutronclient-6.7.0-1.el7.noarch

** Description changed:

  Description
  ===========
  
  Error occurs when an instance with two volumes (created from SCSI image). From nova-compute.log, the following information related to volume attachment (address has no bus, target and unit informations):
   <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8-lun-0"/>
        <target bus="scsi" dev="sda"/>
        <serial>8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8</serial>
        <address type="drive" controller="0"/>
      </disk>
      <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb-lun-0"/>
        <target bus="scsi" dev="sdb"/>
        <serial>7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb</serial>
        <address type="drive" controller="0"/>
      </disk>
  
  But when instance is created with only one volume and second volume is attached later (with openstack volume attach .. command), it's configured differently:
  <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none' io='native'/>
        <source dev='/dev/sdc'/>
        <backingStore/>
        <target dev='sda' bus='scsi'/>
        <serial>20fb8417-3ece-46f0-affb-d80800a885dd</serial>
        <alias name='scsi0-0-0-0'/>
        <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      </disk>
      <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none' io='native'/>
        <source dev='/dev/sdd'/>
        <backingStore/>
        <target dev='sdb' bus='scsi'/>
        <serial>2d087117-bc51-48ae-9c4d-00950deeb617</serial>
        <alias name='scsi0-0-0-1'/>
        <address type='drive' controller='0' bus='0' target='0' unit='1'/>
      </disk>
  
  Steps to reproduce
  ==================
  
  1 - Using an admin openstack account, create a cirros image with scsi
  properties:
  
  wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
  openstack image create "cirros_scsi" \
    --file cirros-0.3.5-x86_64-disk.img \
    --disk-format qcow2 --container-format bare \
    --property hw_disk_bus=scsi \
    --property hw_scsi_controller=virtio-scsi \
    --public
  
  2 - Create two volumes (volume-backed image) using cirros_scsi image:
  openstack volume create --size 1 volume-0 --image cirros_scsi
  openstack volume create --size 1 volume-1 --image cirros_scsi
  
  3 - Create an instance using two volumes (error scenario):
  v1id=`openstack volume show volume-0 | grep " id " | awk '{print $4}'` && echo $v1id
  v2id=`openstack volume show volume-1 | grep " id " | awk '{print $4}'` && echo $v2id
  nova boot --flavor m1.nano \
     --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
     --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
     --nic net-id=77669d98-2bc2-4a48-aa6f-7184ec99698c \
     --key mykey instance01
  
  nova boot --flavor $flavor_id \
     --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
     --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
     --nic net-id=<network_id> \
     --key <keypair> instance01
  
  4 - Check instance
  openstack server list
  openstack volume list
  
  Expected result
  ===============
  Instance should be created normally;
  
  Actual result
  =============
  (openstack) server list
  +--------------------------------------+------------+--------+----------+-------+---------+
  | ID                                   | Name       | Status | Networks | Image | Flavor  |
  +--------------------------------------+------------+--------+----------+-------+---------+
  | 6717d471-2092-48c8-8a4f-463ff8afc5bb | instance01 | ERROR  |          |       | m1.nano |
  +--------------------------------------+------------+--------+----------+-------+---------+
  
  root@cldsrv02 ~]# openstack server show instance01 -f shell | grep fault
  fault="{u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 6717d471-2092-48c8-8a4f-463ff8afc5bb.', u'code': 500, u'details': u'  File "/usr/lib/python2.7/site-packages/nova/conductor/manager.py", line 580, in build_instances\n    raise exception.MaxRetriesExceeded(reason=msg)\n', u'created': u'2018-10-02T21:24:23Z'}"
  
  Error reported in /var/log/nova/nova-compute.log:
  lugin='linux_bridge',port_profile=<?>,preserve_on_delete=False,vif_name='tap7946d21b-8f')
  2018-10-02 17:24:09.694 17390 ERROR nova.virt.libvirt.guest [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] Error defining a guest with XML: <domain type="qemu">
    <uuid>6717d471-2092-48c8-8a4f-463ff8afc5bb</uuid>
    <name>instance-00000008</name>
    <memory>65536</memory>
    <vcpu>1</vcpu>
    <metadata>
      <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0";>
        <nova:package version="17.0.5-1.el7"/>
        <nova:name>instance01</nova:name>
        <nova:creationTime>2018-10-02 21:24:07</nova:creationTime>
        <nova:flavor name="m1.nano">
          <nova:memory>64</nova:memory>
          <nova:disk>1</nova:disk>
          <nova:swap>0</nova:swap>
          <nova:ephemeral>0</nova:ephemeral>
          <nova:vcpus>1</nova:vcpus>
        </nova:flavor>
        <nova:owner>
          <nova:user uuid="7500c13b015449de99a66db93db1b697">admin</nova:user>
          <nova:project uuid="265f6aeb1ae746a887cc589c482b4929">admin</nova:project>
        </nova:owner>
      </nova:instance>
    </metadata>
    <sysinfo type="smbios">
      <system>
        <entry name="manufacturer">RDO</entry>
        <entry name="product">OpenStack Compute</entry>
        <entry name="version">17.0.5-1.el7</entry>
        <entry name="serial">1235d097-6a37-4c00-a5e5-33ccae494775</entry>
        <entry name="uuid">6717d471-2092-48c8-8a4f-463ff8afc5bb</entry>
        <entry name="family">Virtual Machine</entry>
      </system>
    </sysinfo>
    <os>
      <type>hvm</type>
      <boot dev="hd"/>
      <smbios mode="sysinfo"/>
    </os>
    <features>
      <acpi/>
      <apic/>
    </features>
    <cputune>
      <shares>1024</shares>
    </cputune>
    <clock offset="utc"/>
    <cpu mode="host-model" match="exact">
      <topology sockets="1" cores="1" threads="1"/>
    </cpu>
    <devices>
      <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/sdc"/>
        <target bus="scsi" dev="sda"/>
        <serial>0ce95aac-3205-4aa3-830b-c65113f0c9f7</serial>
        <address type="drive" controller="0"/>
      </disk>
      <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/sdd"/>
        <target bus="scsi" dev="sdb"/>
        <serial>08e55f7d-78e8-4e5a-bdfc-2f7ebcd0ee27</serial>
        <address type="drive" controller="0"/>
      </disk>
      <interface type="bridge">
        <mac address="fa:16:3e:08:29:07"/>
        <model type="virtio"/>
        <driver name="qemu"/>
        <source bridge="brq77669d98-2b"/>
        <target dev="tap7946d21b-8f"/>
      </interface>
      <serial type="pty">
        <log file="/var/lib/nova/instances/6717d471-2092-48c8-8a4f-463ff8afc5bb/console.log" append="off"/>
      </serial>
      <input type="tablet" bus="usb"/>
      <graphics type="vnc" autoport="yes" keymap="en-us" listen="10.0.0.11"/>
      <video>
        <model type="cirrus"/>
      </video>
      <memballoon model="virtio">
        <stats period="10"/>
      </memballoon>
    </devices>
  </domain>
  : libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Instance failed to spawn: libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Traceback (most recent call last):
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2251, in _build_resources
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     yield resources
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2031, in _build_and_run_instance
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     block_device_info=block_device_info)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 3089, in spawn
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure=True)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5614, in _create_domain_and_network
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5583, in _create_domain_and_network
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     post_xml_callback=post_xml_callback)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5495, in _create_domain
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = libvirt_guest.Guest.create(xml, self._host)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 129, in create
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     encodeutils.safe_decode(xml))
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 125, in create
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = host.write_instance_config(xml)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/host.py", line 829, in write_instance_config
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     domain = self.get_connection().defineXML(xml)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     result = proxy_call(self._autowrap, f, *args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = execute(f, *args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(c, e, tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = meth(*args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3676, in defineXML
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     if ret is None:raise libvirtError('virDomainDefineXML() failed', conn=self)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]
  
  Environment
  ===========
- Openstack release: Queens  (all in one)
+ Openstack release: Queens  (All-in-one Single machine)
  
  root@cldsrv02 ~]# rpm -qa | grep nova
  openstack-nova-api-17.0.5-1.el7.noarch
  openstack-nova-placement-api-17.0.5-1.el7.noarch
  openstack-nova-common-17.0.5-1.el7.noarch
  openstack-nova-conductor-17.0.5-1.el7.noarch
  python2-novaclient-10.1.0-1.el7.noarch
  openstack-nova-compute-17.0.5-1.el7.noarch
  python-nova-17.0.5-1.el7.noarch
  openstack-nova-console-17.0.5-1.el7.noarch
  openstack-nova-novncproxy-17.0.5-1.el7.noarch
  openstack-nova-scheduler-17.0.5-1.el7.noarch
  [root@cldsrv02 ~]#
  
  Hypervisor: Libvirt + KVM:
  [root@cldsrv02 ~]# rpm -qa | grep -iE 'kvm|virt'
  qemu-kvm-common-ev-2.10.0-21.el7_5.4.1.x86_64
  libvirt-daemon-driver-storage-scsi-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-interface-3.9.0-14.el7_5.8.x86_64
  libvirt-client-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-core-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-rbd-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-network-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-disk-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-logical-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-secret-3.9.0-14.el7_5.8.x86_64
  qemu-kvm-ev-2.10.0-21.el7_5.4.1.x86_64
  libvirt-libs-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-qemu-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-iscsi-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-nwfilter-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-kvm-3.9.0-14.el7_5.8.x86_64
  libvirt-python-3.9.0-1.el7.x86_64
  libvirt-daemon-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-gluster-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-mpath-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-nodedev-3.9.0-14.el7_5.8.x86_64
  centos-release-virt-common-1-1.el7.centos.noarch
  virt-what-1.18-4.el7.x86_64
  
  Storage type:  LVM:
  [root@cldsrv02 ~]# rpm -qa | grep lvm
  lvm2-libs-2.02.177-4.el7.x86_64
  lvm2-2.02.177-4.el7.x86_64
  
  Networking:  Neutron
  root@cldsrv02 ~]# rpm -qa | grep neutron
  openstack-neutron-linuxbridge-12.0.3-1.el7.noarch
  openstack-neutron-common-12.0.3-1.el7.noarch
  python2-neutron-lib-1.13.0-1.el7.noarch
  openstack-neutron-12.0.3-1.el7.noarch
  openstack-neutron-ml2-12.0.3-1.el7.noarch
  python-neutron-12.0.3-1.el7.noarch
  python2-neutronclient-6.7.0-1.el7.noarch

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1795747

Title:
  libvirtError: unsupported configuration: Found duplicate drive address
  for disk with target name 'sda' controller='0' bus='0' target='0'
  unit='0' when try to create an instance with two scsi volumes

Status in OpenStack Compute (nova):
  New

Bug description:
  Description
  ===========

  Error occurs when an instance with two volumes (created from SCSI image). From nova-compute.log, the following information related to volume attachment (address has no bus, target and unit informations):
   <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8-lun-0"/>
        <target bus="scsi" dev="sda"/>
        <serial>8fc346e1-fdf4-420a-b6cd-5ee97e97a5b8</serial>
        <address type="drive" controller="0"/>
      </disk>
      <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/disk/by-path/ip-10.0.0.11:3260-iscsi-iqn.2010-10.org.openstack:volume-7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb-lun-0"/>
        <target bus="scsi" dev="sdb"/>
        <serial>7f3b3f37-8449-4fc1-9d8d-0ba691aeacfb</serial>
        <address type="drive" controller="0"/>
      </disk>

  But when instance is created with only one volume and second volume is attached later (with openstack volume attach .. command), it's configured differently:
  <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none' io='native'/>
        <source dev='/dev/sdc'/>
        <backingStore/>
        <target dev='sda' bus='scsi'/>
        <serial>20fb8417-3ece-46f0-affb-d80800a885dd</serial>
        <alias name='scsi0-0-0-0'/>
        <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      </disk>
      <disk type='block' device='disk'>
        <driver name='qemu' type='raw' cache='none' io='native'/>
        <source dev='/dev/sdd'/>
        <backingStore/>
        <target dev='sdb' bus='scsi'/>
        <serial>2d087117-bc51-48ae-9c4d-00950deeb617</serial>
        <alias name='scsi0-0-0-1'/>
        <address type='drive' controller='0' bus='0' target='0' unit='1'/>
      </disk>

  Steps to reproduce
  ==================

  1 - Using an admin openstack account, create a cirros image with scsi
  properties:

  wget http://download.cirros-cloud.net/0.3.5/cirros-0.3.5-x86_64-disk.img
  openstack image create "cirros_scsi" \
    --file cirros-0.3.5-x86_64-disk.img \
    --disk-format qcow2 --container-format bare \
    --property hw_disk_bus=scsi \
    --property hw_scsi_controller=virtio-scsi \
    --public

  2 - Create two volumes (volume-backed image) using cirros_scsi image:
  openstack volume create --size 1 volume-0 --image cirros_scsi
  openstack volume create --size 1 volume-1 --image cirros_scsi

  3 - Create an instance using two volumes (error scenario):
  v1id=`openstack volume show volume-0 | grep " id " | awk '{print $4}'` && echo $v1id
  v2id=`openstack volume show volume-1 | grep " id " | awk '{print $4}'` && echo $v2id
  nova boot --flavor m1.nano \
     --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
     --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
     --nic net-id=77669d98-2bc2-4a48-aa6f-7184ec99698c \
     --key mykey instance01

  nova boot --flavor $flavor_id \
     --block-device source=volume,id=$v1id,shutdown=preserve,bootindex=0 \
     --block-device source=volume,id=$v2id,shutdown=preserve,bootindex=1 \
     --nic net-id=<network_id> \
     --key <keypair> instance01

  4 - Check instance
  openstack server list
  openstack volume list

  Expected result
  ===============
  Instance should be created normally;

  Actual result
  =============
  (openstack) server list
  +--------------------------------------+------------+--------+----------+-------+---------+
  | ID                                   | Name       | Status | Networks | Image | Flavor  |
  +--------------------------------------+------------+--------+----------+-------+---------+
  | 6717d471-2092-48c8-8a4f-463ff8afc5bb | instance01 | ERROR  |          |       | m1.nano |
  +--------------------------------------+------------+--------+----------+-------+---------+

  root@cldsrv02 ~]# openstack server show instance01 -f shell | grep fault
  fault="{u'message': u'Exceeded maximum number of retries. Exhausted all hosts available for retrying build failures for instance 6717d471-2092-48c8-8a4f-463ff8afc5bb.', u'code': 500, u'details': u'  File "/usr/lib/python2.7/site-packages/nova/conductor/manager.py", line 580, in build_instances\n    raise exception.MaxRetriesExceeded(reason=msg)\n', u'created': u'2018-10-02T21:24:23Z'}"

  Error reported in /var/log/nova/nova-compute.log:
  lugin='linux_bridge',port_profile=<?>,preserve_on_delete=False,vif_name='tap7946d21b-8f')
  2018-10-02 17:24:09.694 17390 ERROR nova.virt.libvirt.guest [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] Error defining a guest with XML: <domain type="qemu">
    <uuid>6717d471-2092-48c8-8a4f-463ff8afc5bb</uuid>
    <name>instance-00000008</name>
    <memory>65536</memory>
    <vcpu>1</vcpu>
    <metadata>
      <nova:instance xmlns:nova="http://openstack.org/xmlns/libvirt/nova/1.0";>
        <nova:package version="17.0.5-1.el7"/>
        <nova:name>instance01</nova:name>
        <nova:creationTime>2018-10-02 21:24:07</nova:creationTime>
        <nova:flavor name="m1.nano">
          <nova:memory>64</nova:memory>
          <nova:disk>1</nova:disk>
          <nova:swap>0</nova:swap>
          <nova:ephemeral>0</nova:ephemeral>
          <nova:vcpus>1</nova:vcpus>
        </nova:flavor>
        <nova:owner>
          <nova:user uuid="7500c13b015449de99a66db93db1b697">admin</nova:user>
          <nova:project uuid="265f6aeb1ae746a887cc589c482b4929">admin</nova:project>
        </nova:owner>
      </nova:instance>
    </metadata>
    <sysinfo type="smbios">
      <system>
        <entry name="manufacturer">RDO</entry>
        <entry name="product">OpenStack Compute</entry>
        <entry name="version">17.0.5-1.el7</entry>
        <entry name="serial">1235d097-6a37-4c00-a5e5-33ccae494775</entry>
        <entry name="uuid">6717d471-2092-48c8-8a4f-463ff8afc5bb</entry>
        <entry name="family">Virtual Machine</entry>
      </system>
    </sysinfo>
    <os>
      <type>hvm</type>
      <boot dev="hd"/>
      <smbios mode="sysinfo"/>
    </os>
    <features>
      <acpi/>
      <apic/>
    </features>
    <cputune>
      <shares>1024</shares>
    </cputune>
    <clock offset="utc"/>
    <cpu mode="host-model" match="exact">
      <topology sockets="1" cores="1" threads="1"/>
    </cpu>
    <devices>
      <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/sdc"/>
        <target bus="scsi" dev="sda"/>
        <serial>0ce95aac-3205-4aa3-830b-c65113f0c9f7</serial>
        <address type="drive" controller="0"/>
      </disk>
      <disk type="block" device="disk">
        <driver name="qemu" type="raw" cache="none" io="native"/>
        <source dev="/dev/sdd"/>
        <target bus="scsi" dev="sdb"/>
        <serial>08e55f7d-78e8-4e5a-bdfc-2f7ebcd0ee27</serial>
        <address type="drive" controller="0"/>
      </disk>
      <interface type="bridge">
        <mac address="fa:16:3e:08:29:07"/>
        <model type="virtio"/>
        <driver name="qemu"/>
        <source bridge="brq77669d98-2b"/>
        <target dev="tap7946d21b-8f"/>
      </interface>
      <serial type="pty">
        <log file="/var/lib/nova/instances/6717d471-2092-48c8-8a4f-463ff8afc5bb/console.log" append="off"/>
      </serial>
      <input type="tablet" bus="usb"/>
      <graphics type="vnc" autoport="yes" keymap="en-us" listen="10.0.0.11"/>
      <video>
        <model type="cirrus"/>
      </video>
      <memballoon model="virtio">
        <stats period="10"/>
      </memballoon>
    </devices>
  </domain>
  : libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'

  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [req-6105a653-1bdd-4812-83a5-2f68bf3e4b7a f04ef8cc6c7c46f782488ff162dcdef2 bf7678e543da4c4a9703a0196efda6e9 - default default] [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Instance failed to spawn: libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] Traceback (most recent call last):
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2251, in _build_resources
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     yield resources
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/compute/manager.py", line 2031, in _build_and_run_instance
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     block_device_info=block_device_info)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 3089, in spawn
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure=True)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5614, in _create_domain_and_network
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     destroy_disks_on_failure)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5583, in _create_domain_and_network
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     post_xml_callback=post_xml_callback)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/driver.py", line 5495, in _create_domain
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = libvirt_guest.Guest.create(xml, self._host)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 129, in create
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     encodeutils.safe_decode(xml))
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 220, in __exit__
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     self.force_reraise()
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/oslo_utils/excutils.py", line 196, in force_reraise
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(self.type_, self.value, self.tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/guest.py", line 125, in create
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     guest = host.write_instance_config(xml)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/nova/virt/libvirt/host.py", line 829, in write_instance_config
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     domain = self.get_connection().defineXML(xml)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 186, in doit
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     result = proxy_call(self._autowrap, f, *args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 144, in proxy_call
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = execute(f, *args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 125, in execute
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     six.reraise(c, e, tb)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib/python2.7/site-packages/eventlet/tpool.py", line 83, in tworker
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     rv = meth(*args, **kwargs)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]   File "/usr/lib64/python2.7/site-packages/libvirt.py", line 3676, in defineXML
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]     if ret is None:raise libvirtError('virDomainDefineXML() failed', conn=self)
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb] libvirtError: unsupported configuration: Found duplicate drive address for disk with target name 'sda' controller='0' bus='0' target='0' unit='0'
  2018-10-02 17:24:14.189 17390 ERROR nova.compute.manager [instance: 6717d471-2092-48c8-8a4f-463ff8afc5bb]

  Environment
  ===========
  Openstack release: Queens  (All-in-one Single machine)

  root@cldsrv02 ~]# rpm -qa | grep nova
  openstack-nova-api-17.0.5-1.el7.noarch
  openstack-nova-placement-api-17.0.5-1.el7.noarch
  openstack-nova-common-17.0.5-1.el7.noarch
  openstack-nova-conductor-17.0.5-1.el7.noarch
  python2-novaclient-10.1.0-1.el7.noarch
  openstack-nova-compute-17.0.5-1.el7.noarch
  python-nova-17.0.5-1.el7.noarch
  openstack-nova-console-17.0.5-1.el7.noarch
  openstack-nova-novncproxy-17.0.5-1.el7.noarch
  openstack-nova-scheduler-17.0.5-1.el7.noarch
  [root@cldsrv02 ~]#

  Hypervisor: Libvirt + KVM:
  [root@cldsrv02 ~]# rpm -qa | grep -iE 'kvm|virt'
  qemu-kvm-common-ev-2.10.0-21.el7_5.4.1.x86_64
  libvirt-daemon-driver-storage-scsi-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-interface-3.9.0-14.el7_5.8.x86_64
  libvirt-client-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-core-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-rbd-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-network-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-disk-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-logical-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-secret-3.9.0-14.el7_5.8.x86_64
  qemu-kvm-ev-2.10.0-21.el7_5.4.1.x86_64
  libvirt-libs-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-qemu-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-iscsi-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-nwfilter-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-kvm-3.9.0-14.el7_5.8.x86_64
  libvirt-python-3.9.0-1.el7.x86_64
  libvirt-daemon-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-gluster-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-storage-mpath-3.9.0-14.el7_5.8.x86_64
  libvirt-daemon-driver-nodedev-3.9.0-14.el7_5.8.x86_64
  centos-release-virt-common-1-1.el7.centos.noarch
  virt-what-1.18-4.el7.x86_64

  Storage type:  LVM:
  [root@cldsrv02 ~]# rpm -qa | grep lvm
  lvm2-libs-2.02.177-4.el7.x86_64
  lvm2-2.02.177-4.el7.x86_64

  Networking:  Neutron
  root@cldsrv02 ~]# rpm -qa | grep neutron
  openstack-neutron-linuxbridge-12.0.3-1.el7.noarch
  openstack-neutron-common-12.0.3-1.el7.noarch
  python2-neutron-lib-1.13.0-1.el7.noarch
  openstack-neutron-12.0.3-1.el7.noarch
  openstack-neutron-ml2-12.0.3-1.el7.noarch
  python-neutron-12.0.3-1.el7.noarch
  python2-neutronclient-6.7.0-1.el7.noarch

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1795747/+subscriptions


Follow ups