
Spec repos do not have code to unit test. The gate job definition for the py27 and py35 jobs skip if there doc only changes, which is all we will ever have in the specs repo. Therefore the one "test" we had will never be run. We were using this unit test as a check for formatting issues with the rst files. This was done before doc8 was available. Now that we can use doc8, we should just switch to running that as part of the pep8 jobs. Also fixes all the errors caught by doc8 that were not caught by our unit test check. Change-Id: Ida20764edde3a07c89703d82b41958c96548b239
4.1 KiB
Reset generic volume group and group snapshot statuses
https://blueprints.launchpad.net/cinder/+spec/reset-cg-and-cgs-status
Problem description
Currently we support the administrator to reset the status of volume, snapshot, backup and so on, but both of the generic volume group and group snapshot could also run into error status, the administrator could only modify the status in database. This is inconvenient for administrator.
Use Cases
The primary use case is for the manual recovery of some sort of issue with generic volume group's status(snapshot's inclusive). This is helpful for recovering the two resources from a bad status due to real issues with the system or crashed from bugs.
Proposed change
Take the generic volume group for example, The change can add a new
admin generic group action on the resource. The logic could be the same
as volume's action reset_status
which already exists, for
example, to reset the status of generic group to error, it would be:
POST /v3/{tenant_id}/groups/{group_id}/action
{
'reset_status': {
'status': 'error'
}
}
The 'status' should be one of the generic group status,the api will validate the input status and then update the status in database.
Alternatives
We could just leave it as a manual db operation, but that leaves it up to an admin to go manually update the db to achieve the same goal.
Data model impact
None
REST API impact
The API microversion will have to be bumped for the new APIs below.
New GroupAdminController:
POST /v3/{tenant_id}/groups/{group_id}/action
And new admin action for it:
reset_status
New GroupSnapshotAdminController:
POST /v3/{tenant_id}/group_snapshots/{group_snapshot_id}/action
And new admin action for it:
reset_status
They both required the identical request body, and 'status' should be passed in as a string:
{
'reset_status': {
'status': 'error'
}
}
For the return codes if the status is not valid we will return a 400 Bad Request, if the resource is not found it will be a 404 Not Found, and will otherwise return a 202.
Cinder-client impact
The cinder-client will add commands to expose these new APIs(use 'state' instead of 'status' to keep consistency with existed reset commands):
New command to reset generic group status:
group-reset-state <group> --state <state>
the 'group' should be name or ID of the specified group.
New command to reset group snapshot status:
group-snapshot-reset-state <group-snapshot> --state <state>
the 'group-snapshot' should be name or ID of the specified group snapshot.
Security impact
None
Notifications impact
We will add reset_group_status
and
reset_group_snapshot_status
notifications that will behave
the same way as the reset_status
notifications. There will
be a start
and end
notification.
Other end user impact
The new API will be exposed to users via the python-cinderclient.
Performance Impact
While it is doing a db operation it should be a very low impact.
Other deployer impact
None
Developer impact
None
Implementation
Assignee(s)
- Primary assignee:
-
tommylikehu(TommyLikeHu@gmail.com)
Work Items
- Implement new admin action and tests in Cinder.
- Add support in python-cinderclient.
Dependencies
None
Testing
- Unit tests in Cinder.
- Tempest tests in Cinder.
- Functional tests in Cinder.
- Unit tests in python-cinderclient.
Documentation Impact
New admin docs to explain how to use the API.
References
None