Class: Beaker::Fusion

Inherits:
Hypervisor show all
Defined in:
lib/beaker/hypervisor/fusion.rb

Instance Method Summary collapse

Methods inherited from Hypervisor

#configure, create

Constructor Details

#initialize(fusion_hosts, options, config) ⇒ Fusion

Returns a new instance of Fusion.



4
5
6
7
8
9
10
11
12
13
14
15
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
# File 'lib/beaker/hypervisor/fusion.rb', line 4

def initialize(fusion_hosts, options, config)
  require 'rubygems' unless defined?(Gem)
  begin
    require 'fission'
  rescue LoadError
    raise "Unable to load fission, please ensure it is installed!"
  end
  @logger = options[:logger]
  @options = options
  @config = config['CONFIG'].dup
  @fusion_hosts = fusion_hosts


  available = Fission::VM.all.data.collect{|vm| vm.name}.sort.join(", ")
  @logger.notify "Available VM names: #{available}"

  @fusion_hosts.each do |host|
    vm_name = host["vmname"] || host.name
    vm = Fission::VM.new vm_name
    raise "Could not find VM '#{vm_name}' for #{host.name}!" unless vm.exists?

    available_snapshots = vm.snapshots.data.sort.join(", ")
    @logger.notify "Available snapshots for #{host.name}: #{available_snapshots}"
    snap_name = host["snapshot"] 
    raise "No snapshot specified for #{host.name}" unless snap_name
    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

Instance Method Details

#cleanupObject

revert_fusion



51
52
53
# File 'lib/beaker/hypervisor/fusion.rb', line 51

def cleanup
  @logger.notify "No cleanup for fusion boxes"
end