If a non-admin (member) user initiates a Create volume request, and an error occurs in a task
after the EntryCreateTask is complete, the revert operation, or volume destroy db call fails as it uses the non-admin context
to do so.
The following stacktrace is seen in c-api.log:
2013-09-25 00:39:44.522 15017 ERROR cinder.volume.flows.create_volume [req-68daa6e9-e75e-42c6-8e67-91efe8605bb5 6b91f0e38a8144a183c653e8eddd58e7 74bb572081ec4dd7a5d3fb641c6c92c6] Failed destroying volume entry 3faea4c8-fc05-4b2d-a3b2-a0b
88d3c621d
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume Traceback (most recent call last):
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume File "/opt/stack/cinder/cinder/volume/flows/create_volume/__init__.py", line 580, in revert
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume self.db.volume_destroy(context, vol_id)
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume File "/opt/stack/cinder/cinder/db/api.py", line 203, in volume_destroy
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume return IMPL.volume_destroy(context, volume_id)
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume File "/opt/stack/cinder/cinder/db/sqlalchemy/api.py", line 119, in wrapper
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume raise exception.AdminRequired()
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume AdminRequired: User does not have admin privileges
2013-09-25 00:39:44.522 15017 TRACE cinder.volume.flows.create_volume
The volume gets stuck in "Creating" state and is unusable.
Commands snip:
$ cinder create 1
ERROR: The server has either erred or is incapable of performing the requested operation.
$ cinder list
+--------------------------------------+----------+--------------+------+-------------+----------+-------------+
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+--------------------------------------+----------+--------------+------+-------------+----------+-------------+
| 3faea4c8-fc05-4b2d-a3b2-a0b88d3c621d | creating | None | 1 | None | False | |
+--------------------------------------+----------+--------------+------+-------------+----------+-------------+
If a non-admin (member) user initiates a Create volume request, and an error occurs in a task
after the EntryCreateTask is complete, the revert operation, or volume destroy db call fails as it uses the non-admin context
to do so.
The following stacktrace is seen in c-api.log: volume. flows.create_ volume [req-68daa6e9- e75e-42c6- 8e67-91efe8605b b5 6b91f0e38a8144a 183c653e8eddd58 e7 74bb572081ec4dd 7a5d3fb641c6c92 c6] Failed destroying volume entry 3faea4c8- fc05-4b2d- a3b2-a0b volume. flows.create_ volume Traceback (most recent call last): volume. flows.create_ volume File "/opt/stack/ cinder/ cinder/ volume/ flows/create_ volume/ __init_ _.py", line 580, in revert volume. flows.create_ volume self.db. volume_ destroy( context, vol_id) volume. flows.create_ volume File "/opt/stack/ cinder/ cinder/ db/api. py", line 203, in volume_destroy volume. flows.create_ volume return IMPL.volume_ destroy( context, volume_id) volume. flows.create_ volume File "/opt/stack/ cinder/ cinder/ db/sqlalchemy/ api.py" , line 119, in wrapper volume. flows.create_ volume raise exception. AdminRequired( ) volume. flows.create_ volume AdminRequired: User does not have admin privileges volume. flows.create_ volume
2013-09-25 00:39:44.522 15017 ERROR cinder.
88d3c621d
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
2013-09-25 00:39:44.522 15017 TRACE cinder.
The volume gets stuck in "Creating" state and is unusable.
Commands snip: ------- ------- ------- ------- ----+-- ------- -+----- ------- --+---- --+---- ------- --+---- ------+ ------- ------+ ------- ------- ------- ------- ----+-- ------- -+----- ------- --+---- --+---- ------- --+---- ------+ ------- ------+ fc05-4b2d- a3b2-a0b88d3c62 1d | creating | None | 1 | None | False | | ------- ------- ------- ------- ----+-- ------- -+----- ------- --+---- --+---- ------- --+---- ------+ ------- ------+
$ cinder create 1
ERROR: The server has either erred or is incapable of performing the requested operation.
$ cinder list
+------
| ID | Status | Display Name | Size | Volume Type | Bootable | Attached to |
+------
| 3faea4c8-
+------