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, \
|
from cloudcafe.compute.servers_api.models.requests import ChangePassword, \
|
||||||
ConfirmResize, RevertResize, Resize, Reboot, MigrateServer, Lock, \
|
ConfirmResize, RevertResize, Resize, Reboot, MigrateServer, Lock, \
|
||||||
Unlock, Start, Stop, Suspend, Resume, Pause, Unpause, CreateImage, \
|
Unlock, Start, Stop, Suspend, Resume, Pause, Unpause, CreateImage, \
|
||||||
Rebuild, ResetState, CreateBackup
|
Rebuild, ResetState, CreateBackup, LiveMigrateServer
|
||||||
|
|
||||||
|
|
||||||
class ServersClient(AutoMarshallingRestClient):
|
class ServersClient(AutoMarshallingRestClient):
|
||||||
@@ -434,9 +434,11 @@ class ServersClient(AutoMarshallingRestClient):
|
|||||||
requestslib_kwargs=requestslib_kwargs)
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
return resp
|
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
|
@param server_id: The id of the server to migrate
|
||||||
@type server_id: String
|
@type server_id: String
|
||||||
@return: An object that represents the response to the request
|
@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(
|
url = '{base_url}/servers/{server_id}/action'.format(
|
||||||
base_url=self.url, server_id=server_id)
|
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,
|
resp = self.request('POST', url,
|
||||||
request_entity=MigrateServer(),
|
request_entity=request,
|
||||||
requestslib_kwargs=requestslib_kwargs)
|
requestslib_kwargs=requestslib_kwargs)
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
|
|||||||
@@ -387,6 +387,37 @@ class MigrateServer(AutoMarshallingModel):
|
|||||||
return xml
|
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):
|
class ConfirmServerMigration(AutoMarshallingModel):
|
||||||
"""
|
"""
|
||||||
@summary: Confirm Server Migration Request Object
|
@summary: Confirm Server Migration Request Object
|
||||||
|
|||||||
Reference in New Issue
Block a user