1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-16 22:50:10 +03:00

Bug #3937: After disk snapshot with suspend / resume vlan does not get

(re-)tagged on openvswitch
This commit is contained in:
Jaime Melis 2015-09-01 11:31:07 +02:00
parent c99a496092
commit 988cf67159

View File

@ -901,7 +901,8 @@ class ExecDriver < VirtualMachineDriver
tm_rollback= xml_data.elements['TM_COMMAND_ROLLBACK'].text.strip
# Build the process
if strategy == :live
case strategy
when :live
tm_command_split = tm_command.split
tm_command_split[0] += "_LIVE"
@ -913,38 +914,29 @@ class ExecDriver < VirtualMachineDriver
:no_fail => true
}
]
else
if strategy == :detach
pre_action = :detach_disk
pre_params = [:deploy_id, :disk_target_path, target, target_index]
post_action = :attach_disk
post_params = [:deploy_id, :disk_target_path, target, target_index,
drv_message]
else # suspend
pre_action = :save
pre_params = [:deploy_id, :checkpoint_file, :host]
post_action = :restore
post_params = [:checkpoint_file, :host, :deploy_id]
end
when :detach
steps = [
# detach_disk or save
{
:driver => :vmm,
:action => pre_action,
:parameters => pre_params
:action => :detach_disk,
:parameters => [:deploy_id, :disk_target_path, target,
target_index]
},
# run TM
{
:driver => :tm,
:action => :tm_snap_create,
:parameters => tm_command.split,
:no_fail => true
},
# attach_disk or restore
{
:driver => :vmm,
:action => post_action,
:parameters => post_params,
:action => :attach_disk,
:parameters => [:deploy_id, :disk_target_path, target,
target_index, drv_message],
:fail_actions => [
{
:driver => :tm,
@ -954,6 +946,61 @@ class ExecDriver < VirtualMachineDriver
]
}
]
when :suspend
steps = [
# detach_disk or save
{
:driver => :vmm,
:action => :save,
:parameters => [:deploy_id, :checkpoint_file, :host]
},
# network drivers (clean)
# network drivers (pre)
{
:driver => :vnm,
:action => :clean
},
# run TM
{
:driver => :tm,
:action => :tm_snap_create,
:parameters => tm_command.split,
:no_fail => true
},
# network drivers (pre)
{
:driver => :vnm,
:action => :pre
},
# attach_disk or restore
{
:driver => :vmm,
:action => :restore,
:parameters => [:checkpoint_file, :host, :deploy_id],
:fail_actions => [
{
:driver => :tm,
:action => :tm_snap_delete,
:parameters => tm_rollback.split
}
]
},
# network drivers (post)
{
:driver => :vnm,
:action => :post,
:parameters => [:deploy_id],
:fail_actions => [
{
:driver => :vmm,
:action => :cancel,
:parameters => [:deploy_id, :host]
}
]
}
]
else
return
end
action.run(steps)