Adds support for live migrations
* Updated live migrate client function to take correct params * Added live migrate model Change-Id: Ic2b60ff322a2568418c8ef0a16c53e69d0619269
This commit is contained in:
@@ -30,7 +30,7 @@ from cloudcafe.compute.servers_api.models.requests import UpdateServer
|
||||
from cloudcafe.compute.servers_api.models.requests import ChangePassword, \
|
||||
ConfirmResize, RevertResize, Resize, Reboot, MigrateServer, Lock, \
|
||||
Unlock, Start, Stop, Suspend, Resume, Pause, Unpause, CreateImage, \
|
||||
Rebuild, ResetState, CreateBackup
|
||||
Rebuild, ResetState, CreateBackup, LiveMigrateServer
|
||||
|
||||
|
||||
class ServersClient(AutoMarshallingRestClient):
|
||||
@@ -434,9 +434,11 @@ class ServersClient(AutoMarshallingRestClient):
|
||||
requestslib_kwargs=requestslib_kwargs)
|
||||
return resp
|
||||
|
||||
def live_migrate_server(self, server_id, requestslib_kwargs=None):
|
||||
def live_migrate_server(self, server_id, disk_over_commit=None,
|
||||
block_migration=None, host=None,
|
||||
requestslib_kwargs=None):
|
||||
"""
|
||||
@summary: Migrates a server live to a new host
|
||||
@summary: Migrates a server to a new host without rebooting
|
||||
@param server_id: The id of the server to migrate
|
||||
@type server_id: String
|
||||
@return: An object that represents the response to the request
|
||||
@@ -445,8 +447,11 @@ class ServersClient(AutoMarshallingRestClient):
|
||||
|
||||
url = '{base_url}/servers/{server_id}/action'.format(
|
||||
base_url=self.url, server_id=server_id)
|
||||
request = LiveMigrateServer(
|
||||
host=host, disk_over_commit=disk_over_commit,
|
||||
block_migration=block_migration)
|
||||
resp = self.request('POST', url,
|
||||
request_entity=MigrateServer(),
|
||||
request_entity=request,
|
||||
requestslib_kwargs=requestslib_kwargs)
|
||||
return resp
|
||||
|
||||
|
||||
@@ -387,6 +387,37 @@ class MigrateServer(AutoMarshallingModel):
|
||||
return xml
|
||||
|
||||
|
||||
class LiveMigrateServer(AutoMarshallingModel):
|
||||
"""
|
||||
@summary: Live Migration Request Object
|
||||
"""
|
||||
|
||||
def __init__(self, disk_over_commit=None,
|
||||
block_migration=None, host=None):
|
||||
super(LiveMigrateServer, self).__init__()
|
||||
self.disk_over_commit = disk_over_commit
|
||||
self.block_migration = block_migration
|
||||
self.host = host
|
||||
|
||||
def _obj_to_json(self):
|
||||
body = {
|
||||
'disk_over_commit': self.disk_over_commit,
|
||||
'block_migration': self.block_migration,
|
||||
'host': self.host
|
||||
}
|
||||
return json.dumps({'os-migrateLive': body})
|
||||
|
||||
def _obj_to_xml(self):
|
||||
xml = Constants.XML_HEADER
|
||||
element = ET.Element('os-migrateLive')
|
||||
element.set('xmlns', Constants.XML_API_NAMESPACE)
|
||||
element.set('disk_over_commit', self.disk_over_commit)
|
||||
element.set('block_migration', self.block_migration)
|
||||
element.set('host', self.host)
|
||||
xml += ET.tostring(element)
|
||||
return xml
|
||||
|
||||
|
||||
class ConfirmServerMigration(AutoMarshallingModel):
|
||||
"""
|
||||
@summary: Confirm Server Migration Request Object
|
||||
|
||||
Reference in New Issue
Block a user