resolve KeyError exception
In the optimize solution stage when launching audit based vm_workload_consolidation strategy. The instance map in node should change when migration action was removed. Otherwise a KeyError exception will be thrown. Change-Id: I054b6b12922892a02d155b4ddc001b19890d32c5 Closes-Bug: #1656157
This commit is contained in:
@@ -171,16 +171,14 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
destination_node_state_str = self.get_state_str(destination_node.state)
|
destination_node_state_str = self.get_state_str(destination_node.state)
|
||||||
if destination_node_state_str == element.ServiceState.DISABLED.value:
|
if destination_node_state_str == element.ServiceState.DISABLED.value:
|
||||||
self.add_action_enable_compute_node(destination_node)
|
self.add_action_enable_compute_node(destination_node)
|
||||||
model.mapping.unmap(source_node, instance)
|
if model.migrate_instance(instance, source_node, destination_node):
|
||||||
model.mapping.map(destination_node, instance)
|
params = {'migration_type': migration_type,
|
||||||
|
'source_node': source_node.uuid,
|
||||||
params = {'migration_type': migration_type,
|
'destination_node': destination_node.uuid}
|
||||||
'source_node': source_node.uuid,
|
self.solution.add_action(action_type='migrate',
|
||||||
'destination_node': destination_node.uuid}
|
resource_id=instance.uuid,
|
||||||
self.solution.add_action(action_type='migrate',
|
input_parameters=params)
|
||||||
resource_id=instance.uuid,
|
self.number_of_migrations += 1
|
||||||
input_parameters=params)
|
|
||||||
self.number_of_migrations += 1
|
|
||||||
|
|
||||||
def disable_unused_nodes(self, model):
|
def disable_unused_nodes(self, model):
|
||||||
"""Generate actions for disablity of unused nodes.
|
"""Generate actions for disablity of unused nodes.
|
||||||
@@ -404,9 +402,9 @@ class VMWorkloadConsolidation(base.ServerConsolidationBaseStrategy):
|
|||||||
for a in actions:
|
for a in actions:
|
||||||
self.solution.actions.remove(a)
|
self.solution.actions.remove(a)
|
||||||
self.number_of_migrations -= 1
|
self.number_of_migrations -= 1
|
||||||
if src_uuid != dst_uuid:
|
src_node = model.get_node_by_uuid(src_uuid)
|
||||||
src_node = model.get_node_by_uuid(src_uuid)
|
dst_node = model.get_node_by_uuid(dst_uuid)
|
||||||
dst_node = model.get_node_by_uuid(dst_uuid)
|
if model.migrate_instance(instance_uuid, dst_node, src_node):
|
||||||
self.add_migration(
|
self.add_migration(
|
||||||
instance_uuid, src_node, dst_node, model)
|
instance_uuid, src_node, dst_node, model)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user