Class: Beaker::Hypervisor
- Inherits:
-
Object
- Object
- Beaker::Hypervisor
- Includes:
- HostPrebuiltSteps
- Defined in:
- lib/beaker/hypervisor.rb
Overview
The Beaker class that interacts to all the supported hypervisors
Direct Known Subclasses
AwsSdk, Docker, Fusion, GoogleCompute, Noop, OpenStack, Vagrant, Vcloud, Vmpooler, Vsphere
Constant Summary collapse
- CHARMAP =
Generates an array with all letters a thru z and numbers 0 thru 9
('a'..'z').to_a + ('0'..'9').to_a
Constants included from HostPrebuiltSteps
Beaker::HostPrebuiltSteps::APT_CFG, Beaker::HostPrebuiltSteps::ARCHLINUX_PACKAGES, Beaker::HostPrebuiltSteps::CUMULUS_PACKAGES, Beaker::HostPrebuiltSteps::DEBIAN_PACKAGES, Beaker::HostPrebuiltSteps::ETC_HOSTS_PATH, Beaker::HostPrebuiltSteps::ETC_HOSTS_PATH_SOLARIS, Beaker::HostPrebuiltSteps::FREEBSD_PACKAGES, Beaker::HostPrebuiltSteps::IPS_PKG_REPO, Beaker::HostPrebuiltSteps::NTPSERVER, Beaker::HostPrebuiltSteps::OPENBSD_PACKAGES, Beaker::HostPrebuiltSteps::PSWINDOWS_PACKAGES, Beaker::HostPrebuiltSteps::ROOT_KEYS_SCRIPT, Beaker::HostPrebuiltSteps::ROOT_KEYS_SYNC_CMD, Beaker::HostPrebuiltSteps::ROOT_KEYS_SYNC_CMD_AIX, Beaker::HostPrebuiltSteps::SLEEPWAIT, Beaker::HostPrebuiltSteps::SLES10_PACKAGES, Beaker::HostPrebuiltSteps::SLES_PACKAGES, Beaker::HostPrebuiltSteps::SOLARIS10_PACKAGES, Beaker::HostPrebuiltSteps::SOLARIS11_PACKAGES, Beaker::HostPrebuiltSteps::TRIES, Beaker::HostPrebuiltSteps::UNIX_PACKAGES, Beaker::HostPrebuiltSteps::WINDOWS_PACKAGES
Class Method Summary collapse
-
.create(type, hosts_to_provision, options) ⇒ Object
Hypervisor creator method.
Instance Method Summary collapse
-
#cleanup ⇒ Object
Cleanup steps to be run for a given hypervisor.
-
#configure(opts = {}) ⇒ Object
Default configuration steps to be run for a given hypervisor.
-
#generate_host_name ⇒ Object
Generate a random string composted of letter and numbers prefixed with value of create option :host_name_prefix.
-
#initialize(hosts, options) ⇒ Hypervisor
constructor
A new instance of Hypervisor.
-
#provision ⇒ Object
Provisioning steps for be run for a given hypervisor.
-
#proxy_package_manager ⇒ Object
Proxy package managers on tests hosts created by this hypervisor, runs before validation and configuration.
-
#validate ⇒ Object
Default validation steps to be run for a given hypervisor.
Methods included from HostPrebuiltSteps
#add_el_extras, #additive_hash_merge, #apt_get_update, #check_and_install_packages_if_needed, #construct_env, #copy_file_to_remote, #copy_ssh_to_root, #disable_iptables, #disable_se_linux, #disable_updates, #enable_root_login, #get_domain_name, #get_ip, #hack_etc_hosts, #install_one_of_packages, #package_proxy, #proxy_config, #set_env, #set_etc_hosts, #sync_root_keys, #timesync, #validate_host
Methods included from DSL::Patterns
Constructor Details
#initialize(hosts, options) ⇒ Hypervisor
Returns a new instance of Hypervisor.
83 84 85 86 |
# File 'lib/beaker/hypervisor.rb', line 83 def initialize(hosts, ) @hosts = hosts @options = end |
Class Method Details
.create(type, hosts_to_provision, options) ⇒ Object
Hypervisor creator method. Creates the appropriate hypervisor class object based upon the provided hypervisor type selected, then provisions hosts with hypervisor.
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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/beaker/hypervisor.rb', line 20 def self.create(type, hosts_to_provision, ) @logger = [:logger] @logger.notify("Beaker::Hypervisor, found some #{type} boxes to create") hyper_class = case type when /^aix$/ Beaker::Aixer when /^solaris$/ Beaker::Solaris when /^vsphere$/ Beaker::Vsphere when /^fusion$/ Beaker::Fusion when /^ec2$/ Beaker::AwsSdk when /^vmpooler$/ Beaker::Vmpooler when /^vcloud$/ if ['pooling_api'] Beaker::Vmpooler else Beaker::Vcloud end when /^vagrant$/ Beaker::Vagrant when /^vagrant_custom$/ Beaker::VagrantCustom when /^vagrant_libvirt$/ Beaker::VagrantLibvirt when /^vagrant_virtualbox$/ Beaker::VagrantVirtualbox when /^vagrant_fusion$/ Beaker::VagrantFusion when /^vagrant_workstation$/ Beaker::VagrantWorkstation when /^vagrant_parallels$/ Beaker::VagrantParallels when /^google$/ Beaker::GoogleCompute when /^docker$/ Beaker::Docker when /^openstack$/ Beaker::OpenStack when /^noop$/ Beaker::Noop when /^(default)|(none)$/ Beaker::Hypervisor else # Custom hypervisor begin require "beaker/hypervisor/#{type}" rescue LoadError raise "Invalid hypervisor: #{type}" end Beaker.const_get(type.capitalize) end hypervisor = hyper_class.new(hosts_to_provision, ) hypervisor.provision if [:provision] hypervisor end |
Instance Method Details
#cleanup ⇒ Object
Cleanup steps to be run for a given hypervisor. Default is nil.
94 95 96 |
# File 'lib/beaker/hypervisor.rb', line 94 def cleanup nil end |
#configure(opts = {}) ⇒ Object
Default configuration steps to be run for a given hypervisor. Any additional configuration to be done to the provided SUT for test execution to be successful.
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/beaker/hypervisor.rb', line 107 def configure(opts = {}) return unless @options[:configure] run_in_parallel = run_in_parallel? opts, @options, 'configure' block_on @hosts, { :run_in_parallel => run_in_parallel} do |host| if host[:timesync] timesync(host, @options) end end if @options[:root_keys] sync_root_keys(@hosts, @options) end if @options[:add_el_extras] add_el_extras(@hosts, @options) end if @options[:disable_iptables] disable_iptables @hosts, @options end if @options[:set_env] set_env(@hosts, @options) end if @options[:disable_updates] disable_updates(@hosts, @options) end end |
#generate_host_name ⇒ Object
Generate a random string composted of letter and numbers prefixed with value of create option :host_name_prefix
142 143 144 145 146 147 148 |
# File 'lib/beaker/hypervisor.rb', line 142 def generate_host_name n = CHARMAP[rand(25)] + (0...14).map{CHARMAP[rand(CHARMAP.length)]}.join if @options[:host_name_prefix] return @options[:host_name_prefix] + n end n end |
#provision ⇒ Object
Provisioning steps for be run for a given hypervisor. Default is nil.
89 90 91 |
# File 'lib/beaker/hypervisor.rb', line 89 def provision nil end |
#proxy_package_manager ⇒ Object
Proxy package managers on tests hosts created by this hypervisor, runs before validation and configuration.
99 100 101 102 103 |
# File 'lib/beaker/hypervisor.rb', line 99 def proxy_package_manager if @options[:package_proxy] package_proxy(@hosts, @options) end end |
#validate ⇒ Object
Default validation steps to be run for a given hypervisor. Ensures that SUTs meet requirements to be beaker test nodes.
134 135 136 137 138 |
# File 'lib/beaker/hypervisor.rb', line 134 def validate if @options[:validate] validate_host(@hosts, @options) end end |