Sha256: c5bf24bf660be8a9dd4696c4e13fc946cd3abc36cfbecb6b5e55af8cf9a4c84d
Contents?: true
Size: 1.79 KB
Versions: 15
Compression:
Stored size: 1.79 KB
Contents
module Beaker class Fusion < Beaker::Hypervisor def initialize(fusion_hosts, options) 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 @fusion_hosts = fusion_hosts @fission = Fission::VM end def provision available = @fission.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.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 #revert_fusion def cleanup @logger.notify "No cleanup for fusion boxes" end end end
Version data entries
15 entries across 15 versions & 1 rubygems