Fix do_recover problem when operation is None
This patch fixes do_recover problem when operation is None. Change-Id: Ia19d96a1ee55303ec0be7533a4e2c1558067c155 Closes-Bug: #1666245
This commit is contained in:
parent
50b0592c5e
commit
05eb8daaff
|
@ -1095,15 +1095,17 @@ class ServerProfile(base.Profile):
|
|||
if operation and not isinstance(operation, six.string_types):
|
||||
operation = operation[0]
|
||||
|
||||
op_name = operation['name']
|
||||
if op_name.upper() != consts.RECOVER_RECREATE:
|
||||
op_params = operation.get('params', {})
|
||||
if op_name.lower() not in self.OP_NAMES:
|
||||
LOG.error(_LE("The operation '%s' is not supported"), op_name)
|
||||
return False
|
||||
if operation is not None and 'name' in operation:
|
||||
op_name = operation['name']
|
||||
if op_name.upper() != consts.RECOVER_RECREATE:
|
||||
op_params = operation.get('params', {})
|
||||
if op_name.lower() not in self.OP_NAMES:
|
||||
LOG.error(_LE("The operation '%s' is not supported"),
|
||||
op_name)
|
||||
return False
|
||||
|
||||
method = getattr(self, "handle_" + op_name.lower())
|
||||
return method(obj, **op_params)
|
||||
method = getattr(self, "handle_" + op_name.lower())
|
||||
return method(obj, **op_params)
|
||||
|
||||
return super(ServerProfile, self).do_recover(obj, **options)
|
||||
|
||||
|
|
|
@ -933,6 +933,21 @@ class TestNovaServerBasic(base.SenlinTestCase):
|
|||
cc.server_get.assert_called_with('FAKE_ID')
|
||||
self.assertTrue(res)
|
||||
|
||||
@mock.patch.object(server.ServerProfile, 'do_delete')
|
||||
@mock.patch.object(server.ServerProfile, 'do_create')
|
||||
def test_do_recover_operation_is_none(self, mock_create, mock_delete):
|
||||
profile = server.ServerProfile('t', self.spec)
|
||||
node_obj = mock.Mock(physical_id='FAKE_ID')
|
||||
|
||||
mock_delete.return_value = None
|
||||
mock_create.return_value = True
|
||||
|
||||
res = profile.do_recover(node_obj, operation=None)
|
||||
|
||||
self.assertTrue(res)
|
||||
mock_delete.assert_called_once_with(node_obj, force=False)
|
||||
mock_create.assert_called_once_with(node_obj)
|
||||
|
||||
@mock.patch.object(server.ServerProfile, 'handle_rebuild')
|
||||
def test_do_recover_rebuild(self, mock_rebuild):
|
||||
profile = server.ServerProfile('t', self.spec)
|
||||
|
|
Loading…
Reference in New Issue