List/show all server migration types

APIImpact
Change-Id: I4068e011a95ebfe16799a783c7e83a324704be59
blueprint list-show-all-server-migration-types
This commit is contained in:
Takashi NATSUME
2016-12-06 08:35:16 +09:00
parent f10f4f0ac4
commit 8d0f9b328c

View File

@@ -0,0 +1,300 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
====================================
List/show all server migration types
====================================
https://blueprints.launchpad.net/nova/+spec/list-show-all-server-migration-types
The following APIs are used to list server migrations and show
a server migration. But they can list or show live migration(s) only.
So this blueprint enables us to list and show other migration types
('evacuation', 'resize', 'migration').
* GET /servers/{server_id}/migrations
* GET /servers/{server_id}/migrations/{migration_id}
Problem description
===================
To abort cold migrations [1]_, administrators have to list/show cold
migrations. But curently they can list/show live migrations only.
(The 'os-migrations' API is deprecated, so administrators should not use it.)
Use Cases
---------
Operators want to list all migrations in the cloud to take any action
against them [1]_.
Proposed change
===============
Modify the following existing 2 APIs for live-migration to list and show
other migration types ('evacuation', 'resize', 'migration').
* GET /servers/{server_id}/migrations
* GET /servers/{server_id}/migrations/{migration_id}
The former API returns in-progress migrations.
The latter API returns 404 error if the specified migration is not in progress.
The behavior is retained as it is.
Migration status transitions are as follows:
* Migration/resize
- 'pre-migrating' --> 'migrating' --> 'post-migrating' --> 'finished'
* Confirm resize
- 'finished' --> 'confirming' --> 'confirmed'
* Revert resize
- 'finished' --> 'reverting' --> 'reverted'
* Evacuation
- 'accepted' --> 'pre-migrating' --> 'done'
* Live migration
- (Skip the definition)
In progress migration states are defined as follows:
* migration/resize
- 'pre-migrating', 'migrating', 'post-migrating'
* confirm resize
- Nothing
- 'confirming' is not included because it doesn't execute disk copies.
* revert resize
- Nothing
- 'reverting' is not included because it doesn't execute disk copies.
* evacuation
- 'accepted', 'pre-migrating'
* live-migration
- 'queued', 'preparing', 'running', 'post-migrating'
- Existing definition. They remains as it is.
Alternatives
------------
None
Data model impact
-----------------
None
REST API impact
---------------
Following changes will be introduced in a new API microversion.
* GET /servers/{server_id}/migrations
It lists migration in progress.
The migration type can be specified as a 'type' query parameter
to filter out results.
The 'type' query parameter is optional.
If 'type' parameter is not specified, all migration types are listed.
The valid 'type' parameters are 'live-migration', 'migration',
'resize' and 'evacuation'.
If 'type' parameter is wrong, nova-api returns 400 error.
So add badRequest(400) to error response codes.
The 'type' parameter is added in the response.
JSON response body example::
{
"migrations": [
{
"dest_host": "10.0.2.15",
"status": "post-migrating",
"memory_processed_bytes": null,
"type": "migration",
"updated_at": "2017-01-31T08:03:25.000000",
"created_at": "2017-01-31T08:03:21.000000",
"memory_remaining_bytes": null,
"dest_compute": "devstack-master2",
"id": 11,
"source_node": "devstack-master1",
"server_uuid": "a333ee8a-367f-4841-bdc9-c8d92a6adfe4",
"memory_total_bytes": null,
"dest_node": "devstack-master2",
"disk_total_bytes": null,
"disk_processed_bytes": null,
"disk_remaining_bytes": null,
"source_compute": "devstack-master1"
}
]
}
* GET /servers/{server_id}/migrations/{migration_id}
The response codes are not modified.
Show a migration which has any migration type.
The 'type' parameter is added in the response.
JSON response body example::
{
"migration": {
"dest_host": "10.0.2.15",
"status": "post-migrating",
"memory_processed_bytes": null,
"type": "migration",
"updated_at": "2017-01-31T08:03:25.000000",
"created_at": "2017-01-31T08:03:21.000000",
"memory_remaining_bytes": null,
"dest_compute": "devstack-master2",
"id": 11,
"source_node": "devstack-master1",
"server_uuid": "a333ee8a-367f-4841-bdc9-c8d92a6adfe4",
"memory_total_bytes": null,
"dest_node": "devstack-master2",
"disk_total_bytes": null,
"disk_processed_bytes": null,
"disk_remaining_bytes": null,
"source_compute": "devstack-master1"
}
}
If a migration is not in progress state, it returns 404 error.
* POST /servers/{server_id}/migrations/{migration_id}/action
It is a "Force Migration Complete Action" API.
The migration is not a 'live-migration', it returns 400 error
instead of 404 error.
* DELETE /servers/{server_id}/migrations/{migration_id}
The migration is not a 'live-migration', it returns 400 error.
It is a current behavior. (It is not changed.)
Security impact
---------------
Only Administrator can operate suggested functions.
So there is no security impact.
Notifications impact
--------------------
None
Other end user impact
---------------------
The novaclient and openstackclient are modified to specify a migration type.
Performance Impact
------------------
None
Security impact
---------------
Only Administrator can operate suggested functions.
So there is no security impact.
Notifications impact
--------------------
None
Other end user impact
---------------------
The novaclient and openstackclient are modified to specify a migration type.
Performance Impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Implementation
==============
Assignee(s)
-----------
Primary assignee:
natsume-takashi
Other contributors:
None
Work Items
----------
* Add the 'type' query parameter to list server migrations
('evacuation', 'resize', 'migration') API
* Modify show a server migration ('evacuation', 'resize', or 'migration') API
* Add the optional 'type' parameter in novaclient/openstackclient
* API docs including note of the possible types
Dependencies
============
None
Testing
=======
Add the following tests.
* functional tests
* tempest test
Documentation Impact
====================
* API Reference
* CLI Reference
References
==========
.. [1] https://blueprints.launchpad.net/nova/+spec/abort-cold-migration
History
=======
.. list-table:: Revisions
:header-rows: 1
* - Release Name
- Description
* - Pike
- Introduced