Given a Cinder installation that allows for volumes to be multi-attach, the SDK should permit them to connect.
The error I get when attempting to attach a volume to multiple instances is:
"Volume 884ccf2b-94c6-4b06-a66c-641dd8212c9e is not available. Status is 'in-use'"
I believe this is coming from here https://opendev.org/openstack/openstacksdk/src/branch/master/openstack/cloud/_block_storage.py#L379-L383
Using the CLI, I'm able to attach volumes to multiple instances.
Debug output shows the following call is successful and I'm able to use the volume on multiple instances.
REQ: curl -g -i --cacert "/etc/pki/tls/certs/icic.crt" -X POST https://172.19.1.179:8774/v2.1/747ea956c6ec4c21ab0e5ab9228919f5/servers/7d03223b-d1bd-4b5f-a571-2e2b2f5ac2eb/os-volume_attachments -H "Accept: application/json" -H "Content-Type: application/json" -H "OpenStack-API-Version: compute 2.72" -H "User-Agent: python-novaclient" -H "X-Auth-Token: {SHA256}ecf6cae941a668eb1dd3240ec5d85d0608daaeb4df20959e409f8dbd607d274b" -H "X-OpenStack-Nova-API-Version: 2.72" -d '{"volumeAttachment": {"volumeId": "884ccf2b-94c6-4b06-a66c-641dd8212c9e"}}'
https://172.19.1.179:8774 "POST /v2.1/747ea956c6ec4c21ab0e5ab9228919f5/servers/7d03223b-d1bd-4b5f-a571-2e2b2f5ac2eb/os-volume_attachments HTTP/1.1" 200 167
RESP: [200] Connection: Keep-Alive Content-Encoding: gzip Content-Length: 167 Content-Type: application/json Date: Wed, 13 Mar 2024 20:07:32 GMT Keep-Alive: timeout=15, max=497 Openstack-Api-Version: compute 2.72 Server: Apache Strict-Transport-Security: max-age=31536000; includeSubdomains; preload Vary: OpenStack-API-Version,Accept-Encoding,User-Agent,X-OpenStack-Nova-API-Version X-Compute-Request-Id: req-ab15c8d5-f676-4350-a76e-147c470ef2ad X-Content-Type-Options: nosniff X-Openstack-Nova-Api-Version: 2.72 X-Openstack-Request-Id: req-ab15c8d5-f676-4350-a76e-147c470ef2ad
RESP BODY: {"volumeAttachment": {"id": "884ccf2b-94c6-4b06-a66c-641dd8212c9e", "serverId": "7d03223b-d1bd-4b5f-a571-2e2b2f5ac2eb", "volumeId": "884ccf2b-94c6-4b06-a66c-641dd8212c9e", "device": "/dev/vdb", "tag": null}}