Module: BeakerHostGenerator::Hypervisor
- Defined in:
- lib/beaker-hostgenerator/hypervisor.rb,
lib/beaker-hostgenerator/hypervisor/abs.rb,
lib/beaker-hostgenerator/hypervisor/lima.rb,
lib/beaker-hostgenerator/hypervisor/docker.rb,
lib/beaker-hostgenerator/hypervisor/hcloud.rb,
lib/beaker-hostgenerator/hypervisor/unknown.rb,
lib/beaker-hostgenerator/hypervisor/vagrant.rb,
lib/beaker-hostgenerator/hypervisor/vmpooler.rb
Overview
Defines an Interface for the implementation of a hypervisor, and provides
a static module function create(node_info, options) for instantiating
the appropriate hypervisor implementation.
New hypervisor implementations must define the methods in the Interface
class, and add a new element to the builtin_hypervisors map.
Any number of hypervisors are used by a single Generator during host
generation in the BeakerHostGenerator::Generator#generate method.
Whenever a host specifies a specific hypervisor implementation, the
Generator will instantiate the appropriate hypervisor via
BeakerHostGenerator::Hypervisor.create.
Defined Under Namespace
Classes: ABS, Docker, Hcloud, Interface, Lima, Unknown, Vagrant, Vmpooler
Class Method Summary collapse
-
.builtin_hypervisors ⇒ Object
Returns a map of all built-in hypervisor implementations, where the keys are the string names and the values are the implementation classes.
-
.create(node_info, options) ⇒ Object
Static factory method to instantiate the appropriate hypervisor for the given node.
Class Method Details
.builtin_hypervisors ⇒ Object
Returns a map of all built-in hypervisor implementations, where the keys are the string names and the values are the implementation classes.
The string names are part of the beaker-hostgenerator API as they are used for specifying the default or per-host hypervisor in the layout specification input string.
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/beaker-hostgenerator/hypervisor.rb', line 40 def self.builtin_hypervisors { 'abs' => BeakerHostGenerator::Hypervisor::ABS, 'container' => BeakerHostGenerator::Hypervisor::Docker, 'container_docker' => BeakerHostGenerator::Hypervisor::Docker, 'container_podman' => BeakerHostGenerator::Hypervisor::Docker, 'container_swarm' => BeakerHostGenerator::Hypervisor::Docker, 'docker' => BeakerHostGenerator::Hypervisor::Docker, 'hcloud' => BeakerHostGenerator::Hypervisor::Hcloud, 'lima' => BeakerHostGenerator::Hypervisor::Lima, 'vagrant' => BeakerHostGenerator::Hypervisor::Vagrant, 'vagrant_libvirt' => BeakerHostGenerator::Hypervisor::Vagrant, 'vmpooler' => BeakerHostGenerator::Hypervisor::Vmpooler, } end |
.create(node_info, options) ⇒ Object
Static factory method to instantiate the appropriate hypervisor for the
given node. If no hypervisor is specified in the node info, then the
hypervisor specified in the options will be created. If the hypervisor is
not a built-in implementation, then an Unknown instance will be used.
25 26 27 28 29 |
# File 'lib/beaker-hostgenerator/hypervisor.rb', line 25 def self.create(node_info, ) name = node_info['host_settings']['hypervisor'] || [:hypervisor] hypervisor = builtin_hypervisors[name] || BeakerHostGenerator::Hypervisor::Unknown hypervisor.new(name) end |