Skip to content

Commit ecd24e0

Browse files
committed
Preserve exported VM hostname information
This patch will make sure that the `hostname` property value of the export_info is preserved while the instance loses that source information (e.g. due to a shutdown). This will help in keeping the hostname information when retrying deployment executions.
1 parent 099c1cc commit ecd24e0

File tree

3 files changed

+43
-0
lines changed

3 files changed

+43
-0
lines changed

coriolis/tasks/replica_tasks.py

+8
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,15 @@ def _get_nic(nics_info, nic_id):
9292
new_info['ip_addresses'] = old_ips
9393

9494

95+
def _preserve_hostname_info(old_export_info, new_export_info):
96+
old_hostname = old_export_info.get("hostname", "")
97+
new_hostname = new_export_info.get("hostname", "")
98+
if not new_hostname:
99+
new_export_info['hostname'] = old_hostname
100+
101+
95102
def _update_export_info(old_export_info, result_export_info):
103+
_preserve_hostname_info(old_export_info, result_export_info)
96104
_preserve_old_export_info_nic_ips(old_export_info, result_export_info)
97105

98106

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# No hostnames
2+
- old_export_info: {}
3+
new_export_info: {}
4+
expected_export_info:
5+
hostname: ""
6+
7+
# Hostname in old info
8+
- old_export_info:
9+
hostname: old.host.name
10+
new_export_info: {}
11+
expected_export_info:
12+
hostname: old.host.name
13+
14+
# Hostname in new info only
15+
- old_export_info:
16+
hostname: ""
17+
new_export_info:
18+
hostname: "new.host.name"
19+
expected_export_info:
20+
hostname: "new.host.name"
21+
22+
# Hostname update from old to new
23+
- old_export_info:
24+
hostname: "old.host.name"
25+
new_export_info:
26+
hostname: "new.host.name"
27+
expected_export_info:
28+
hostname: "new.host.name"

coriolis/tests/tasks/test_replica_tasks.py

+7
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,13 @@ def test__preserve_old_export_info_nic_ips(
6161
old_export_info, new_export_info)
6262
self.assertEqual(new_export_info, expected_export_info)
6363

64+
@ddt.file_data("data/test_hostname_update.yml")
65+
@ddt.unpack
66+
def test__preserve_hostname_info(
67+
self, old_export_info, new_export_info, expected_export_info):
68+
replica_tasks._preserve_hostname_info(old_export_info, new_export_info)
69+
self.assertEqual(new_export_info, expected_export_info)
70+
6471

6572
class GetInstanceInfoTaskTestCase(test_base.CoriolisBaseTestCase):
6673

0 commit comments

Comments
 (0)