16
17
18
19
20
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
|
# File 'lib/beaker/hypervisor/solaris.rb', line 16
def provision
hypername = @fog_file[:default][:solaris_hypervisor_server]
vmpath = @fog_file[:default][:solaris_hypervisor_vmpath]
snappaths = @fog_file[:default][:solaris_hypervisor_snappaths]
hyperopts = @options.dup
hyperopts['HOSTS'] = {
hypername => { 'platform' => 'solaris-11-sparc' }
}
@logger.notify "Connecting to hypervisor at #{hypername}"
hypervisor = Beaker::Host.create( hypername, hyperopts )
hypervisor[:user] = @fog_file[:default][:solaris_hypervisor_username] || hypervisor[:user]
hypervisor[:ssh][:keys] = [@fog_file[:default][:solaris_hypervisor_keyfile]] || hypervisor[:ssh][:keys]
@solaris_hosts.each do |host|
vm_name = host['vmname'] || host.name
snapshot = host['snapshot']
@logger.notify "Reverting #{vm_name} to snapshot #{snapshot}"
start = Time.now
hypervisor.exec(Command.new("sudo /sbin/zfs rollback -Rf #{vmpath}/#{vm_name}@#{snapshot}"))
snappaths.each do |spath|
@logger.notify "Reverting #{vm_name}/#{spath} to snapshot #{snapshot}"
hypervisor.exec(Command.new("sudo /sbin/zfs rollback -Rf #{vmpath}/#{vm_name}/#{spath}@#{snapshot}"))
end
time = Time.now - start
@logger.notify "Spent %.2f seconds reverting" % time
@logger.notify "Booting #{vm_name}"
start = Time.now
hypervisor.exec(Command.new("sudo /sbin/zoneadm -z #{vm_name} boot"))
@logger.notify "Spent %.2f seconds booting #{vm_name}" % (Time.now - start)
end
hypervisor.close
end
|