Fix source_node value in host maintenance strategy migrate action

Fixes the source_node value to use node's hostname instead of node
uuid. This bug was seen when reverting a migration that was created
by host maintenance strategy.

Assisted-By: Cursor (claude-4-sonnet)

Closes-Bug: #2122149

Change-Id: I7a0855d41516471970b239067ef9a34d10d72051
Signed-off-by: Douglas Viroel <viroel@gmail.com>
This commit is contained in:
Douglas Viroel
2025-09-05 14:49:53 -03:00
parent b1aad46209
commit f55e120f37
3 changed files with 23 additions and 15 deletions

View File

@@ -0,0 +1,8 @@
---
fixes:
- |
Fixed the source_node parameter value in host maintenance strategy migrate
actions to use node hostname instead of node UUID. This bug only appeared
during revert of migrate actions, where the revert operation would fail
because the migration action expected a hostname for the destination
parameter but received a UUID instead.

View File

@@ -233,7 +233,7 @@ class HostMaintenance(base.HostMaintenanceBaseStrategy):
migration_type = 'cold'
params = {'migration_type': migration_type,
'source_node': src_node.uuid,
'source_node': src_node.hostname,
'resource_name': instance.name}
if des_node:
params['destination_node'] = des_node.hostname

View File

@@ -112,7 +112,7 @@ class TestHostMaintenance(TestBaseStrategy):
self.assertEqual(1, len(self.strategy.solution.actions))
expected = [{'action_type': 'migrate',
'input_parameters': {'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
@@ -127,7 +127,7 @@ class TestHostMaintenance(TestBaseStrategy):
self.strategy.instance_handle(instance_0, node_0)
self.assertEqual(1, len(self.strategy.solution.actions))
expected = [{'action_type': 'migrate',
'input_parameters': {'source_node': node_0.uuid,
'input_parameters': {'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
@@ -145,14 +145,14 @@ class TestHostMaintenance(TestBaseStrategy):
self.assertEqual(2, len(self.strategy.solution.actions))
expected = [{'action_type': 'migrate',
'input_parameters': {'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
}},
{'action_type': 'migrate',
'input_parameters': {'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_1.uuid,
'resource_name': instance_1.name
@@ -217,7 +217,7 @@ class TestHostMaintenance(TestBaseStrategy):
{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_3.hostname,
'source_node': node_2.uuid,
'source_node': node_2.hostname,
'migration_type': 'live',
'resource_id': instance_4.uuid,
'resource_name': instance_4.name}}]
@@ -306,7 +306,7 @@ class TestHostMaintenance(TestBaseStrategy):
expected = [{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'cold',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
@@ -333,7 +333,7 @@ class TestHostMaintenance(TestBaseStrategy):
expected = [{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'cold',
'resource_id': instance_1.uuid,
'resource_name': instance_1.name
@@ -359,7 +359,7 @@ class TestHostMaintenance(TestBaseStrategy):
expected = [{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
@@ -403,7 +403,7 @@ class TestHostMaintenance(TestBaseStrategy):
expected = [{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
@@ -429,7 +429,7 @@ class TestHostMaintenance(TestBaseStrategy):
expected = [{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'cold',
'resource_id': instance_1.uuid,
'resource_name': instance_1.name
@@ -486,7 +486,7 @@ class TestHostMaintenance(TestBaseStrategy):
{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'cold',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name
@@ -494,7 +494,7 @@ class TestHostMaintenance(TestBaseStrategy):
{'action_type': 'migrate',
'input_parameters': {
'destination_node': node_1.hostname,
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'cold',
'resource_id': instance_1.uuid,
'resource_name': instance_1.name
@@ -645,13 +645,13 @@ class TestHostMaintenance(TestBaseStrategy):
'disabled_reason': 'watcher_maintaining'}},
{'action_type': 'migrate',
'input_parameters': {
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_0.uuid,
'resource_name': instance_0.name}},
{'action_type': 'migrate',
'input_parameters': {
'source_node': node_0.uuid,
'source_node': node_0.hostname,
'migration_type': 'live',
'resource_id': instance_1.uuid,
'resource_name': instance_1.name}}