]> review.fuel-infra Code Review - openstack-build/cinder-build.git/commit
Add admin actions extension
authorClay Gerrard <clay.gerrard@gmail.com>
Mon, 27 Aug 2012 07:48:32 +0000 (07:48 +0000)
committerClay Gerrard <clay.gerrard@gmail.com>
Fri, 31 Aug 2012 19:58:13 +0000 (14:58 -0500)
commitc191d0d10c6cb5730a4fb6540198ca3be6595b02
treebff35840ee5f3a7f8c2eff696e0cbd56b2e57bc2
parentfe70a0ebc47843a08d085e7ab4104898c069f427
Add admin actions extension

The optional os-admin-actions extension adds new wsgi_actions to the
volumes/action resource and a new snapshots/action endpoint.

With this extension both controllers will support an os-reset_status
action to force a database update of a volume or snapshot that is stuck
in a failed/incorrect status.  The os-reset_status action works
similarly to the compute api's os-reset_state action for instances.

The os-force_delete action behaves similarly to the "cinder-manage
volume delete" command and allows operators/admins to retry the delete
operation after it has gone into an error_deleting status with an admin
api call.

The os-admin-actions extension is enabled by default, but limited to the
admin api by the default policy.json rules.  Individual admin actions
can be disabled with policy rules as well.

Example of os-reset_status action on a volume:

curl http://localhost:8776/v1/${PROJECT_ID}/volumes/${VOLUME_ID}/action \
    -H 'x-auth-token: ${ADMIN_AUTH_TOKEN}' \
    -H 'content-type: application/json' \
    -d '{"os-reset_status": {"status": "error"}}'

The new admin only api can assist deployers who encounter bugs or
operational issues that result in failed actions.

It can also be used by future storage backends to support async callback
style status updates from long running actions or operations which have
encountered an error will be retried.

Also updates the api.openstack.wsgi.ControllerMetaclass to support
sub-classing wsgi.Controllers that define wsgi_actions.

Partial fix for bug #1039706

Change-Id: I29f4b892a99108b6c24eebc3eb58033a9e01e679
cinder/api/openstack/extensions.py
cinder/api/openstack/volume/__init__.py
cinder/api/openstack/volume/contrib/admin_actions.py [new file with mode: 0644]
cinder/api/openstack/volume/snapshots.py
cinder/api/openstack/wsgi.py
cinder/tests/api/openstack/volume/contrib/test_admin_actions.py [new file with mode: 0644]
cinder/tests/api/openstack/volume/test_router.py
cinder/tests/policy.json
cinder/tests/test_volume.py
cinder/volume/api.py
etc/cinder/policy.json