class Beaker::NetworkManager
Controls provisioning, configuration, validation and cleanup of those virtual machines.
Object that holds all the provisioned and non-provisioned virtual machines.
def cleanup
def cleanup # shut down connections @hosts.each { |host| host.close } if @hypervisors @hypervisors.each_key do |type| @hypervisors[type].cleanup @hypervisors[type].instance_variable_get(:@hosts).each do |host| log_sut_event host, false end end end @hypervisors = nil end
def configure
-
(Exception)
- Raise an exception if virtual machines fail to be configured
def configure return unless @hypervisors @hypervisors.each_key do |type| @hypervisors[type].configure end end
def initialize(options, logger)
def initialize(options, logger) @logger = logger @options = options @hosts = [] @machines = {} @hypervisors = nil # user provided prefix has top priority if not @options[:log_prefix] # name it after the hosts file @options[:log_prefix] = if @options[:hosts_file] File.basename(@options[:hosts_file], '.yml') else # here be the default @options[:default_log_prefix] end end @options[:timestamp] = Time.now unless @options.has_key?(:timestamp) @options[:xml_dated_dir] = Beaker::Logger.generate_dated_log_folder(@options[:xml_dir], @options[:log_prefix], @options[:timestamp]) @options[:log_dated_dir] = Beaker::Logger.generate_dated_log_folder(@options[:log_dir], @options[:log_prefix], @options[:timestamp]) @options[:logger_sut] = Beaker::Logger.new(File.join(@options[:log_dated_dir], @options[:log_sut_event]), { :quiet => true }) end
def log_sut_event host, create
-
(String)
- the log line created for this event
Parameters:
-
create
(Boolean
) -- Whether the event is creation or cleaning up -
host
(Host
) -- The host that the event is happening to
def log_sut_event host, create raise ArgumentError.new "log_sut_event called before sut logger created. skipping #{host}, #{create}" unless @options.has_key?(:logger_sut) sut_logger = @options[:logger_sut] time = Time.new stamp = time.strftime('%Y-%m-%d %H:%M:%S') verb = create ? '+' : '-' line = "#{stamp}\t[#{verb}]\t#{host['hypervisor']}\t#{host['platform']}\t#{host.log_prefix}" sut_logger.notify line line end
def provision
Provision all virtual machines. Provision machines according to their set hypervisor, if no hypervisor
def provision cleanup if @hypervisors @hypervisors = {} # sort hosts by their hypervisor, use hypervisor 'none' if no hypervisor is specified hostless_options = Beaker::Options::OptionsHash.new.merge(@options.select { |k, _v| !k.to_s.include?('HOSTS') }) @options['HOSTS'].each_key do |name| host_hash = @options['HOSTS'][name] hypervisor = host_hash['hypervisor'] if @options[:provision] hypervisor = provision?(@options, host_hash) ? host_hash['hypervisor'] : 'none' end @logger.debug "Hypervisor for #{name} is #{hypervisor}" @machines[hypervisor] = [] unless @machines[hypervisor] hostless_options[:timesync] = host_hash[:timesync] if host_hash[:timesync] != nil host_itself = Beaker::Host.create(name, host_hash, hostless_options) host_itself.validate_setup @machines[hypervisor] << host_itself end @machines.each_key do |type| @hypervisors[type] = Beaker::Hypervisor.create(type, @machines[type], @options) @hosts << @machines[type] @machines[type].each do |host| log_sut_event host, true end end @hosts = @hosts.flatten @hosts end
def provision? options, host
- always if it is a vagrant box (vagrant boxes are always provisioned as
- only if either the specific hosts has no specification or has 'provision' in its config
- only if we have a hypervisor
- only if we are running with ---provision
Provision if:
Determine if a given host should be provisioned.
def provision? options, host command_line_says = options[:provision] host_says = host['hypervisor'] && (host.has_key?('provision') ? host['provision'] : true) (command_line_says && host_says) or host['hypervisor'].include?('vagrant') end
def proxy_package_manager
-
(Exception)
- Raise an exception if virtual machines fail to be configured
def proxy_package_manager return unless @hypervisors @hypervisors.each_key do |type| @hypervisors[type].proxy_package_manager end end
def validate
-
(Exception)
- Raise an exception if virtual machines fail to be validated
def validate return unless @hypervisors @hypervisors.each_key do |type| @hypervisors[type].validate end end