← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1377958] Re: image to local block device mapping doesnt work but accepted by the API

 

** Changed in: nova
       Status: Fix Committed => Fix Released

** Changed in: nova
    Milestone: None => kilo-2

-- 
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/1377958

Title:
  image to local block device mapping doesnt work but accepted by the
  API

Status in OpenStack Compute (Nova):
  Fix Released

Bug description:
  When I try to boot an instance with the boot image specified as BDM
  the API accepts the request but the instance ends up in ERROR state
  due to an exception in the nova-compute. Furter investigation shows
  that image to local mapping is not supported in the --block-device
  parameter at all but the API does not validate and reject this kind of
  requests.

  
  stack@stack:~/devstack$ nova flavor-create install-test 100 1024 0 1
  +-----+--------------+-----------+------+-----------+------+-------+-------------+-----------+
  | ID  | Name         | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
  +-----+--------------+-----------+------+-----------+------+-------+-------------+-----------+
  | 100 | install-test | 1024      | 0    | 0         |      | 1     | 1.0         | True      |
  +-----+--------------+-----------+------+-----------+------+-------+-------------+-----------+
  stack@stack:~/devstack$ glance image-create --file ../mini.iso  --name ubuntu-mini.iso --is-public=True --disk-format iso --container-format bare+------------------+--------------------------------------+
  | Property         | Value                                |
  +------------------+--------------------------------------+
  | checksum         | a2502844750ecb6477d8fb4ff6b9aaf8     |
  | container_format | bare                                 |
  | created_at       | 2014-10-06T13:45:48                  |
  | deleted          | False                                |
  | deleted_at       | None                                 |
  | disk_format      | iso                                  |
  | id               | e3bb2e81-e5ed-43a0-9cc5-62ff9de97c37 |
  | is_public        | True                                 |
  | min_disk         | 0                                    |
  | min_ram          | 0                                    |
  | name             | ubuntu-mini.iso                      |
  | owner            | 8acb24eaeaee44f481aa7c73f179a4da     |
  | protected        | False                                |
  | size             | 32505856                             |
  | status           | active                               |
  | updated_at       | 2014-10-06T13:45:48                  |
  | virtual_size     | None                                 |
  +------------------+--------------------------------------+
  stack@stack:~/devstack$ nova boot --flavor 100 --block-device source=image,id=e3bb2e81-e5ed-43a0-9cc5-62ff9de97c37,type=cdrom,dest=local,bootindex=0,shutdown=delete vm4
  +--------------------------------------+-------------------------------------------------+
  | Property                             | Value                                           |
  +--------------------------------------+-------------------------------------------------+
  | OS-DCF:diskConfig                    | MANUAL                                          |
  | OS-EXT-AZ:availability_zone          | nova                                            |
  | OS-EXT-SRV-ATTR:host                 | -                                               |
  | OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                               |
  | OS-EXT-SRV-ATTR:instance_name        | instance-00000001                               |
  | OS-EXT-STS:power_state               | 0                                               |
  | OS-EXT-STS:task_state                | scheduling                                      |
  | OS-EXT-STS:vm_state                  | building                                        |
  | OS-SRV-USG:launched_at               | -                                               |
  | OS-SRV-USG:terminated_at             | -                                               |
  | accessIPv4                           |                                                 |
  | accessIPv6                           |                                                 |
  | adminPass                            | PHD2yuKTVbDA                                    |
  | config_drive                         |                                                 |
  | created                              | 2014-10-06T13:46:01Z                            |
  | flavor                               | install-test (100)                              |
  | hostId                               |                                                 |
  | id                                   | bbc3a863-a62f-4676-9100-a34a93b191cc            |
  | image                                | Attempt to boot from volume - no image supplied |
  | key_name                             | -                                               |
  | metadata                             | {}                                              |
  | name                                 | vm4                                             |
  | os-extended-volumes:volumes_attached | []                                              |
  | progress                             | 0                                               |
  | security_groups                      | default                                         |
  | status                               | BUILD                                           |
  | tenant_id                            | 8acb24eaeaee44f481aa7c73f179a4da                |
  | updated                              | 2014-10-06T13:46:01Z                            |
  | user_id                              | 2957e97d89fd4aeb80e314653ea34663                |
  +--------------------------------------+-------------------------------------------------+
  stack@stack:~/devstack$ nova list
  +--------------------------------------+------+--------+------------+-------------+------------------+
  | ID                                   | Name | Status | Task State | Power State | Networks         |
  +--------------------------------------+------+--------+------------+-------------+------------------+
  | bbc3a863-a62f-4676-9100-a34a93b191cc | vm4  | ERROR  | -          | NOSTATE     | private=10.0.0.2 |
  +--------------------------------------+------+--------+------------+-------------+------------------+
  stack@stack:~/devstack$ 
  stack@stack:~/devstack$ nova show vm4
  +--------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
  | Property                             | Value                                                                                                                                                |
  +--------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
  | OS-DCF:diskConfig                    | MANUAL                                                                                                                                               |
  | OS-EXT-AZ:availability_zone          | nova                                                                                                                                                 |
  | OS-EXT-SRV-ATTR:host                 | stack                                                                                                                                                |
  | OS-EXT-SRV-ATTR:hypervisor_hostname  | stack                                                                                                                                                |
  | OS-EXT-SRV-ATTR:instance_name        | instance-00000001                                                                                                                                    |
  | OS-EXT-STS:power_state               | 0                                                                                                                                                    |
  | OS-EXT-STS:task_state                | -                                                                                                                                                    |
  | OS-EXT-STS:vm_state                  | error                                                                                                                                                |
  | OS-SRV-USG:launched_at               | -                                                                                                                                                    |
  | OS-SRV-USG:terminated_at             | -                                                                                                                                                    |
  | accessIPv4                           |                                                                                                                                                      |
  | accessIPv6                           |                                                                                                                                                      |
  | config_drive                         |                                                                                                                                                      |
  | created                              | 2014-10-06T13:46:01Z                                                                                                                                 |
  | fault                                | {"message": "No valid host was found. ", "code": 500, "details": "  File \"/opt/stack/nova/nova/conductor/manager.py\", line 614, in build_instances |
  |                                      |     request_spec, filter_properties)                                                                                                                 |
  |                                      |   File \"/opt/stack/nova/nova/scheduler/client/__init__.py\", line 49, in select_destinations                                                        |
  |                                      |     context, request_spec, filter_properties)                                                                                                        |
  |                                      |   File \"/opt/stack/nova/nova/scheduler/client/__init__.py\", line 35, in __run_method                                                               |
  |                                      |     return getattr(self.instance, __name)(*args, **kwargs)                                                                                           |
  |                                      |   File \"/opt/stack/nova/nova/scheduler/client/query.py\", line 34, in select_destinations                                                           |
  |                                      |     context, request_spec, filter_properties)                                                                                                        |
  |                                      |   File \"/opt/stack/nova/nova/scheduler/rpcapi.py\", line 108, in select_destinations                                                                |
  |                                      |     request_spec=request_spec, filter_properties=filter_properties)                                                                                  |
  |                                      |   File \"/usr/local/lib/python2.7/dist-packages/oslo/messaging/rpc/client.py\", line 152, in call                                                    |
  |                                      |     retry=self.retry)                                                                                                                                |
  |                                      |   File \"/usr/local/lib/python2.7/dist-packages/oslo/messaging/transport.py\", line 90, in _send                                                     |
  |                                      |     timeout=timeout, retry=retry)                                                                                                                    |
  |                                      |   File \"/usr/local/lib/python2.7/dist-packages/oslo/messaging/_drivers/amqpdriver.py\", line 408, in send                                           |
  |                                      |     retry=retry)                                                                                                                                     |
  |                                      |   File \"/usr/local/lib/python2.7/dist-packages/oslo/messaging/_drivers/amqpdriver.py\", line 399, in _send                                          |
  |                                      |     raise result                                                                                                                                     |
  |                                      | ", "created": "2014-10-06T13:46:05Z"}                                                                                                                |
  | flavor                               | install-test (100)                                                                                                                                   |
  | hostId                               | 9c365e0da6ac63e8559079a640a533242d5252a56bf76ed160011e25                                                                                             |
  | id                                   | bbc3a863-a62f-4676-9100-a34a93b191cc                                                                                                                 |
  | image                                | Attempt to boot from volume - no image supplied                                                                                                      |
  | key_name                             | -                                                                                                                                                    |
  | metadata                             | {}                                                                                                                                                   |
  | name                                 | vm4                                                                                                                                                  |
  | os-extended-volumes:volumes_attached | []                                                                                                                                                   |
  | private network                      | 10.0.0.2                                                                                                                                             |
  | security_groups                      | default                                                                                                                                              |
  | status                               | ERROR                                                                                                                                                |
  | tenant_id                            | 8acb24eaeaee44f481aa7c73f179a4da                                                                                                                     |
  | updated                              | 2014-10-06T13:46:05Z                                                                                                                                 |
  | user_id                              | 2957e97d89fd4aeb80e314653ea34663                                                                                                                     |
  +--------------------------------------+------------------------------------------------------------------------------------------------------------------------------------------------------+
  stack@stack:~/devstack$ 

  The following exception is visible in the nova-cpu.log

  2014-10-06 15:46:04.712 ERROR nova.compute.manager [req-a8ccaca2-b3e8-492c-8f82-20a72ce1d7ff admin demo] [instance: bbc3a863-a62f-4676-9100-a34a93b191cc] Instance failed to spawn
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc] Traceback (most recent call last):
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/compute/manager.py", line 2231, in _build_resources
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     yield resources
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/compute/manager.py", line 2101, in _build_and_run_instance
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     block_device_info=block_device_info)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 2600, in spawn
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     block_device_info, disk_info=disk_info)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4393, in _create_domain_and_network
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     power_on=power_on)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4317, in _create_domain
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     LOG.error(err)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/openstack/common/excutils.py", line 82, in __exit__
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     six.reraise(self.type_, self.value, self.tb)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 4308, in _create_domain
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     domain.createWithFlags(launch_flags)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 183, in doit
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     result = proxy_call(self._autowrap, f, *args, **kwargs)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 141, in proxy_call
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     rv = execute(f, *args, **kwargs)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 122, in execute
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     six.reraise(c, e, tb)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 80, in tworker
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     rv = meth(*args, **kwargs)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]   File "/usr/lib/python2.7/dist-packages/libvirt.py", line 896, in createWithFlags
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]     if ret == -1: raise libvirtError ('virDomainCreateWithFlags() failed', dom=self)
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc] libvirtError: Failed to open file '/opt/stack/data/nova/instances/bbc3a863-a62f-4676-9100-a34a93b191cc/disk': No such file or directory
  2014-10-06 15:46:04.712 TRACE nova.compute.manager [instance: bbc3a863-a62f-4676-9100-a34a93b191cc]
  2014-10-06 15:46:04.899 AUDIT nova.compute.manager [req-a8ccaca2-b3e8-492c-8f82-20a72ce1d7ff admin demo] [instance: bbc3a863-a62f-4676-9100-a34a93b191cc] Terminating instance
  2014-10-06 15:46:04.907 INFO nova.virt.libvirt.driver [-] [instance: bbc3a863-a62f-4676-9100-a34a93b191cc] Instance destroyed successfully.

  Here is the related section of the domain xml:
    <devices>
      <emulator>/usr/bin/kvm-spice</emulator>
      <disk type='file' device='cdrom'>
        <driver name='qemu' type='qcow2' cache='none'/>
        <source file='/opt/stack/data/nova/instances/bbc3a863-a62f-4676-9100-a34a93b191cc/disk'/>
        <target dev='hda' bus='ide'/>
        <readonly/>
        <address type='drive' controller='0' bus='0' target='0' unit='0'/>
      </disk>
      <disk type='file' device='cdrom'>
        <driver name='qemu' type='raw' cache='none'/>
        <source file='/opt/stack/data/nova/instances/bbc3a863-a62f-4676-9100-a34a93b191cc/disk.config'/>
        <target dev='hdd' bus='ide'/>
        <readonly/>
        <address type='drive' controller='0' bus='1' target='0' unit='1'/>
      </disk>
      <controller type='usb' index='0'>
   

  
  Also if thea boot images is specified with the --image parameter and an extra image to local mapping is specified with the --block-device parameter then the instance is booted from the boot image but the secondary image is not attach.

  stack@stack:~/devstack$ nova boot --flavor 100 --image b30661ed-f176-4b7c-997f-32ca724cbaad  --block-device source=image,id=e3bb2e81-e5ed-43a0-9cc5-62ff9de97c37,type=cdrom,dest=local,bootindex=1,shutdown=delete vm4
  +--------------------------------------+----------------------------------------------------------------+
  | Property                             | Value                                                          |
  +--------------------------------------+----------------------------------------------------------------+
  | OS-DCF:diskConfig                    | MANUAL                                                         |
  | OS-EXT-AZ:availability_zone          | nova                                                           |
  | OS-EXT-SRV-ATTR:host                 | -                                                              |
  | OS-EXT-SRV-ATTR:hypervisor_hostname  | -                                                              |
  | OS-EXT-SRV-ATTR:instance_name        | instance-00000002                                              |
  | OS-EXT-STS:power_state               | 0                                                              |
  | OS-EXT-STS:task_state                | scheduling                                                     |
  | OS-EXT-STS:vm_state                  | building                                                       |
  | OS-SRV-USG:launched_at               | -                                                              |
  | OS-SRV-USG:terminated_at             | -                                                              |
  | accessIPv4                           |                                                                |
  | accessIPv6                           |                                                                |
  | adminPass                            | Mir6yrXKehJP                                                   |
  | config_drive                         |                                                                |
  | created                              | 2014-10-06T13:57:03Z                                           |
  | flavor                               | install-test (100)                                             |
  | hostId                               |                                                                |
  | id                                   | 1f7ab5b2-6388-4b0f-b6cd-8ddc43295d43                           |
  | image                                | cirros-0.3.2-x86_64-uec (b30661ed-f176-4b7c-997f-32ca724cbaad) |
  | key_name                             | -                                                              |
  | metadata                             | {}                                                             |
  | name                                 | vm4                                                            |
  | os-extended-volumes:volumes_attached | []                                                             |
  | progress                             | 0                                                              |
  | security_groups                      | default                                                        |
  | status                               | BUILD                                                          |
  | tenant_id                            | 8acb24eaeaee44f481aa7c73f179a4da                               |
  | updated                              | 2014-10-06T13:57:03Z                                           |
  | user_id                              | 2957e97d89fd4aeb80e314653ea34663                               |
  +--------------------------------------+----------------------------------------------------------------+
  stack@stack:~/devstack$ nova show
  usage: nova show [--minimal] <server>
  error: too few arguments
  Try 'nova help show' for more information.
  stack@stack:~/devstack$ nova list
  +--------------------------------------+------+--------+------------+-------------+------------------+
  | ID                                   | Name | Status | Task State | Power State | Networks         |
  +--------------------------------------+------+--------+------------+-------------+------------------+
  | 1f7ab5b2-6388-4b0f-b6cd-8ddc43295d43 | vm4  | ACTIVE | -          | Running     | private=10.0.0.2 |
  +--------------------------------------+------+--------+------------+-------------+------------------+

  Here is the related part of the domain xml:
    <devices>
      <emulator>/usr/bin/kvm-spice</emulator>
      <disk type='file' device='disk'>
        <driver name='qemu' type='qcow2' cache='none'/>
        <source file='/opt/stack/data/nova/instances/1f7ab5b2-6388-4b0f-b6cd-8ddc43295d43/disk'/>
        <target dev='vda' bus='virtio'/>
        <alias name='virtio-disk0'/>
        <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
      </disk>
      <disk type='file' device='cdrom'>
        <driver name='qemu' type='raw' cache='none'/>
        <source file='/opt/stack/data/nova/instances/1f7ab5b2-6388-4b0f-b6cd-8ddc43295d43/disk.config'/>
        <target dev='hdd' bus='ide'/>
        <readonly/>
        <alias name='ide0-1-1'/>
        <address type='drive' controller='0' bus='1' target='0' unit='1'/>
      </disk>
      <controller type='usb' index='0'>

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


References