I actually had a similar issue with a user having volumes attached to non-existent VMs.
I discovered that the user was using the not-so-well documented Cinder API call ``POST /volumes/{volume_id}/action`` through the python-cinderclient library. There are methods ``cinderclient.v{1,2}.volumes.VolumeManager.attach`` allowing a user to "set attachment metadata" without actually attaching volumes to instances.
To attach a volume to an instance in a Python script, one has to use the ``novaclient.v1_1.volumes.VolumeManager.create_server_volume`` method.
I actually had a similar issue with a user having volumes attached to non-existent VMs.
I discovered that the user was using the not-so-well documented Cinder API call ``POST /volumes/ {volume_ id}/action` ` through the python-cinderclient library. There are methods ``cinderclient. v{1,2}. volumes. VolumeManager. attach` ` allowing a user to "set attachment metadata" without actually attaching volumes to instances.
To attach a volume to an instance in a Python script, one has to use the ``novaclient. v1_1.volumes. VolumeManager. create_ server_ volume` ` method.
I wrote some documentation on that issue there: http:// www.florentflam ent.com/ blog/openstack- volume- in-use- although- vm-doesnt- exist.html