I'm afraid this is expected behaviour, and we call it out in our API reference [1]:
device (Optional) body string Name of the device such as, /dev/vdb. Omit or set this parameter to null for auto-assignment, if supported. If you specify this parameter, the device must not exist in the guest operating system. Note that as of the 12.0.0 Liberty release, the Nova libvirt driver no longer honors a user- supplied device name. This is the same behavior as if the device name parameter is not supplied on the request. I agree that it's not necessarily clear or obvious, and we should perhaps consider removing this API parameter altogether (though other hypervisors besides libvirt might still support it), but that's the current state of things. [1] https://docs.openstack.org/api-ref/compute/#attach-a-volume-to-an- instance ** Changed in: nova Status: New => Invalid -- 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/2045746 Title: openstack server add volume -device can not assign an internal device name for volume Status in OpenStack Compute (nova): Invalid Bug description: Jammy+ Yoga nova 3:25.2.0-0ubuntu1 Even though I specified the name as vdd, the device-mapping is still vdb $ openstack server add volume d261479e-b840-4f62-8542-332e18e63692 9dc530f2-845e-43dd-b67c-1dbe779baa39 --device /dev/vdd $ openstack volume show 9dc530f2-845e-43dd-b67c-1dbe779baa39 -fvalue -c attachments [{'id': '9dc530f2-845e-43dd-b67c-1dbe779baa39', 'attachment_id': '00613632-90bb-450d-a7fd-daa424972c4e', 'volume_id': '9dc530f2-845e-43dd-b67c-1dbe779baa39', 'server_id': 'd261479e-b840-4f62-8542-332e18e63692', 'host_name': 'juju- fd7226-q2-11.cloud.sts', 'device': '/dev/vdb', 'attached_at': '2023-12-06T06:45:40.000000'}] $ virsh domblklist 1 Target Source ----------------------------------------------------------------------------- vda /var/lib/nova/instances/d261479e-b840-4f62-8542-332e18e63692/disk vdb cinder-ceph/volume-9dc530f2-845e-43dd-b67c-1dbe779baa39 nova-compute.log 2023-12-06 06:45:36.991 348863 INFO nova.virt.libvirt.driver [req-37e0ba55-9246-486e-9483-dd2be3ba715d fa7cf5da63d04a1b89bac811f36f1b71 0a46d2dc99dd4cd584910e0dfa704ad5 - 3c6c3936f8674130a25155cc22f8b78d 3c6c3936f8674130a25155cc22f8b78d] [instance: d261479e-b840-4f62-8542-332e18e63692] Ignoring supplied device name: /dev/vdd 2023-12-06 06:45:37.322 348863 INFO nova.compute.manager [req-37e0ba55-9246-486e-9483-dd2be3ba715d fa7cf5da63d04a1b89bac811f36f1b71 0a46d2dc99dd4cd584910e0dfa704ad5 - 3c6c3936f8674130a25155cc22f8b78d 3c6c3936f8674130a25155cc22f8b78d] [instance: d261479e-b840-4f62-8542-332e18e63692] Attaching volume 9dc530f2-845e-43dd-b67c-1dbe779baa39 to /dev/vdb In code [1] we can see that whatever name we specify is simply ignored, and the generated name is used. Even the latest version of the code [2] is still the same. It seems that the current code doesn't support specifying a device name when attaching a volume. I'm not sure if it's true that all attached volumes can only be assigned an alphabetical device name inside the vm. Is there any other way to assign a device name inside the vm? [1] https://github.com/openstack/nova/blob/stable/yoga/nova/virt/libvirt/driver.py#L12001-L12015 [2] https://github.com/openstack/nova/blob/master/nova/virt/libvirt/driver.py#L12296-L12310 To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/2045746/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp