21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
# File 'lib/beaker/hypervisor/fusion.rb', line 21
def provision
available = @fission.all.data.collect{|vm| vm.name}.sort.join(", ")
@logger.notify "Available VM names: #{available}"
@hosts.each do |host|
vm_name = host["vmname"] || host.name
vm = @fission.new vm_name
raise "Could not find VM '#{vm_name}' for #{host.name}!" unless vm.exists?
vm_snapshots = vm.snapshots.data
if vm_snapshots.nil? or vm_snapshots.empty?
raise "No snapshots available for VM #{host.name} (vmname: '#{vm_name}')"
end
available_snapshots = vm_snapshots.sort.join(", ")
@logger.notify "Available snapshots for #{host.name}: #{available_snapshots}"
snap_name = host["snapshot"]
raise "Could not find snapshot '#{snap_name}' for host #{host.name}!" unless vm.snapshots.data.include? snap_name
@logger.notify "Reverting #{host.name} to snapshot '#{snap_name}'"
start = Time.now
vm.revert_to_snapshot snap_name
while vm.running?.data
sleep 1
end
time = Time.now - start
@logger.notify "Spent %.2f seconds reverting" % time
@logger.notify "Resuming #{host.name}"
start = Time.now
vm.start :headless => true
until vm.running?.data
sleep 1
end
time = Time.now - start
@logger.notify "Spent %.2f seconds resuming VM" % time
end
end
|