Merge "Add nova profile support for vm migrate operation"
This commit is contained in:
commit
184434f5e6
|
@ -139,6 +139,10 @@ class NovaClient(base.DriverBase):
|
|||
def server_unrescue(self, server):
|
||||
return self.conn.compute.unrescue_server(server)
|
||||
|
||||
@sdk.translate_exception
|
||||
def server_migrate(self, server):
|
||||
return self.conn.compute.migrate_server(server)
|
||||
|
||||
@sdk.translate_exception
|
||||
def server_evacuate(self, server, host=None, admin_pass=None, force=None):
|
||||
return self.conn.compute.evacuate_server(
|
||||
|
|
|
@ -241,11 +241,11 @@ class ServerProfile(base.Profile):
|
|||
OP_NAMES = (
|
||||
OP_REBOOT, OP_REBUILD, OP_CHANGE_PASSWORD, OP_PAUSE, OP_UNPAUSE,
|
||||
OP_SUSPEND, OP_RESUME, OP_LOCK, OP_UNLOCK, OP_START, OP_STOP,
|
||||
OP_RESCUE, OP_UNRESCUE, OP_EVACUATE,
|
||||
OP_RESCUE, OP_UNRESCUE, OP_EVACUATE, OP_MIGRATE,
|
||||
) = (
|
||||
'reboot', 'rebuild', 'change_password', 'pause', 'unpause',
|
||||
'suspend', 'resume', 'lock', 'unlock', 'start', 'stop',
|
||||
'rescue', 'unrescue', 'evacuate',
|
||||
'rescue', 'unrescue', 'evacuate', 'migrate',
|
||||
)
|
||||
|
||||
REBOOT_TYPE = 'type'
|
||||
|
@ -1694,3 +1694,8 @@ class ServerProfile(base.Profile):
|
|||
"""Handler for the unrescue operation."""
|
||||
return self._handle_generic_op(obj, 'server_unrescue',
|
||||
'unrescue', consts.VS_ACTIVE)
|
||||
|
||||
def handle_migrate(self, obj):
|
||||
"""Handler for the migrate operation."""
|
||||
return self._handle_generic_op(obj, 'server_migrate',
|
||||
'migrate', consts.VS_ACTIVE)
|
||||
|
|
|
@ -287,6 +287,16 @@ class TestNovaV2(base.SenlinTestCase):
|
|||
self.assertEqual(target.return_value, res)
|
||||
target.assert_called_once_with(server)
|
||||
|
||||
def test_server_migrate(self):
|
||||
d = nova_v2.NovaClient(self.conn_params)
|
||||
server = mock.Mock()
|
||||
target = d.conn.compute.migrate_server
|
||||
|
||||
res = d.server_migrate(server)
|
||||
|
||||
self.assertEqual(target.return_value, res)
|
||||
target.assert_called_once_with(server)
|
||||
|
||||
def test_server_evacuate(self):
|
||||
d = nova_v2.NovaClient(self.conn_params)
|
||||
server = mock.Mock()
|
||||
|
|
|
@ -1957,3 +1957,37 @@ class TestNovaServerBasic(base.SenlinTestCase):
|
|||
"timeout.", six.text_type(ex))
|
||||
cc.server_unrescue.assert_called_once_with('FAKE_ID')
|
||||
cc.wait_for_server.assert_called_once_with('FAKE_ID', 'ACTIVE')
|
||||
|
||||
def test_handle_migrate(self):
|
||||
obj = mock.Mock(physical_id='FAKE_ID')
|
||||
profile = server.ServerProfile('t', self.spec)
|
||||
profile._computeclient = mock.Mock()
|
||||
|
||||
# do it
|
||||
res = profile.handle_migrate(obj)
|
||||
self.assertTrue(res)
|
||||
|
||||
def test_handle_migrate_no_physical_id(self):
|
||||
obj = mock.Mock(physical_id=None)
|
||||
profile = server.ServerProfile('t', self.spec)
|
||||
|
||||
# do it
|
||||
res = profile.handle_migrate(obj)
|
||||
self.assertFalse(res)
|
||||
|
||||
def test_handle_migrate_failed_waiting(self):
|
||||
profile = server.ServerProfile('t', self.spec)
|
||||
cc = mock.Mock()
|
||||
ex = exc.InternalError(code=500, message='timeout')
|
||||
cc.wait_for_server.side_effect = ex
|
||||
profile._computeclient = cc
|
||||
node_obj = mock.Mock(physical_id='FAKE_ID')
|
||||
|
||||
ex = self.assertRaises(exc.EResourceOperation,
|
||||
profile.handle_migrate,
|
||||
node_obj)
|
||||
|
||||
self.assertEqual("Failed in migrate server 'FAKE_ID': "
|
||||
"timeout.", six.text_type(ex))
|
||||
cc.server_migrate.assert_called_once_with('FAKE_ID')
|
||||
cc.wait_for_server.assert_called_once_with('FAKE_ID', 'ACTIVE')
|
||||
|
|
Loading…
Reference in New Issue