From 2efd9766453a45aae69bcc5bbdf952c50c942d9c Mon Sep 17 00:00:00 2001 From: "Ruben S. Montero" Date: Mon, 25 Sep 2023 08:57:38 +0200 Subject: [PATCH] B OpenNebula/one#6319: Execute VNM post operation after revert This affects KVM with libvirt 8.0.0+. As for 8.0.0, libvirt will stop and start a domain when reverting to a snapshot. It appears that this may recreate the Open vSwitch interface, which loses the VLAN configuration placed there by the Open vSwitch Driver. --- src/vmm_mad/exec/one_vmm_exec.rb | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/vmm_mad/exec/one_vmm_exec.rb b/src/vmm_mad/exec/one_vmm_exec.rb index ff1fc3ebd6..87954401ce 100755 --- a/src/vmm_mad/exec/one_vmm_exec.rb +++ b/src/vmm_mad/exec/one_vmm_exec.rb @@ -817,18 +817,27 @@ class ExecDriver < VirtualMachineDriver def snapshot_revert(id, drv_message) xml_data = decode(drv_message) - host = xml_data.elements['HOST'].text - deploy_id = xml_data.elements['DEPLOY_ID'].text - snap_id_xpath = "VM/TEMPLATE/SNAPSHOT[ACTIVE='YES']/HYPERVISOR_ID" snapshot_name = xml_data.elements[snap_id_xpath].text - do_action("#{deploy_id} #{snapshot_name}", - id, - host, - ACTION[:snapshot_revert], - :script_name => 'snapshot_revert', - :stdin => xml_data.to_s) + action = VmmAction.new(self, id, :snapshot_revert, drv_message) + + steps = [ + # Run the snapshot_revert action script + { + :driver => :vmm, + :action => :snapshot_revert, + :parameters => [:deploy_id, snapshot_name] + }, + # Execute post-boot networking setup + { + :driver => :vnm, + :action => :post, + :parameters => [:deploy_id, :host] + } + ] + + action.run(steps) end #