Handle cross-cluster Ceph storage secrets

This commit is contained in:
Joshua Boniface 2024-10-10 00:47:50 -04:00
parent c4763ac596
commit 96cebfb42a
1 changed files with 8 additions and 0 deletions

View File

@ -1505,6 +1505,14 @@ def vm_snapshot_receive_config(zkhandler, snapshot, vm_config, source_snapshot=N
vm_xml_diff = "\n".join(current_snapshot["xml_diff_lines"]) vm_xml_diff = "\n".join(current_snapshot["xml_diff_lines"])
snapshot_vm_xml = parse_unified_diff(vm_xml_diff, vm_xml) snapshot_vm_xml = parse_unified_diff(vm_xml_diff, vm_xml)
# Replace the Ceph storage secret UUID with this cluster's
our_ceph_secret_uuid = config["ceph_secret_uuid"]
xml_data = etree.fromstring(snapshot_vm_xml)
ceph_secrets = xml_data.xpath("//secret[@type='ceph']")
for ceph_secret in ceph_secrets:
ceph_secret.set("uuid", our_ceph_secret_uuid)
snapshot_vm_xml = etree.tostring(xml_data, pretty_print=True).decode("utf8")
if ( if (
source_snapshot is not None source_snapshot is not None
or pvc_vm.searchClusterByUUID(zkhandler, vm_config["uuid"]) is not None or pvc_vm.searchClusterByUUID(zkhandler, vm_config["uuid"]) is not None