rbd credentials in nova.conf overwrite connection_info from cinder
| Affects | Status | Importance | Assigned to | Milestone | |
|---|---|---|---|---|---|
| OpenStack Compute (nova) |
Fix Released
|
Low
|
Matt Riedemann | ||
Bug Description
Description
===========
When rbd_user and rbd_secret_uuid are set in nova.conf, they overwrite
the values returned from Cinder in the connection_info object.
Therefore both ephemeral storage in Ceph, and multiple Cinder volume
Ceph backends can't be used at the same time.
Steps to reproduce
==================
* In nova.conf, set rbd_user, rbd_secret_uuid, images_rbd_pool, etc.
* Booting a VMs. SUCCESS
* Try attaching a volume from a pool with different credentials than
the ephemeral one. FAILS
* Unset rbd_user, rbd_secret_uuid
* Try attaching a volume from a pool with different credentials than
the ephemeral one. SUCCESS
* Try booting a VM. FAILS
Expected result
===============
Both ephemeral and multiple ceph backends should work at the same time.
Actual result
=============
Either ephemeral or multiple ceph backends works at the same time.
Environment
===========
1. Exact version of OpenStack you are running.
Liberty
Name : openstack-nova
Arch : noarch
Epoch : 1
Version : 12.0.4
Release : 8.el7ost
Size : 14 k
Repo : rhel-7-
2. Which hypervisor did you use?
Compiled against library: libvirt 1.2.17
Using library: libvirt 1.2.17
Using API: QEMU 1.2.17
Running hypervisor: QEMU 2.3.0
2. Which storage type did you use?
Ceph, not sure on version.
3. Which networking type did you use?
Neutron with OpenVSwitch
Logs & Configs
==============
--
| Changed in nova: | |
| assignee: | Matt Riedemann (mriedem) → Michael Still (mikal) |
| Changed in nova: | |
| assignee: | Michael Still (mikal) → Matt Riedemann (mriedem) |

It looks like the problem with the volumes stuff is that the libvirt volume driver that handles rbd connections isn't checking the connection_info for the rbd credentials, it's just using the nova config:
https:/ /github. com/openstack/ nova/blob/ 14.0.0. 0rc2/nova/ virt/libvirt/ volume/ net.py# L70
So that should check the connection_info first, and if nothing there use the nova config values.