File: abs.rb

package info (click to toggle)
ruby-beaker-hostgenerator 1.7.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,556 kB
  • sloc: ruby: 3,059; makefile: 3
file content (52 lines) | stat: -rw-r--r-- 2,039 bytes parent folder | download | duplicates (2)
1
2
3
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
50
51
52
require 'beaker-hostgenerator/data'
require 'beaker-hostgenerator/hypervisor'
require 'deep_merge/rails_compat'

module BeakerHostGenerator
  module Hypervisor
    # AlwaysBeScheduling implementation to support CI.next.
    #
    # The ABS services requires the vmpooler template values as input to
    # determine the type of platform that's being requested.
    #
    # Therefore, this hypervisor just reuses the vmpooler hypervisor template
    # values, in addition to ABS-only values for hardware platforms.
    class ABS < BeakerHostGenerator::Hypervisor::Interface
      include BeakerHostGenerator::Data

      def generate_node(node_info, base_config, bhg_version)
        # Grab vmpooler data for this platform and any hardware (ABS) data.
        # The assumption here is that these are mutually exclusive; that is,
        # any given platform will have *either* :vmpooler data or :abs data
        # so we're not worried about one overriding the other when we merge
        # the hashes together.
        base_config = base_generate_node(node_info, base_config, bhg_version, :vmpooler, :abs)

        case node_info['ostype']
        when /^(almalinux|centos|redhat|rocky)/
          base_config['template'] ||= base_config['platform'].gsub(/^el/, $1)
        when /^fedora/
          base_config['template'] ||= base_config['platform']
        when /^ubuntu/
          base_template = node_info['ostype'].sub('ubuntu', 'ubuntu-')
          arch = case node_info['bits']
                 when '64'
                   'x86_64'
                 when '32'
                   'i386'
                 when 'AARCH64'
                   'arm64'
                 when 'POWER'
                   base_template.sub!(/ubuntu-(\d\d)/, 'ubuntu-\1.')
                   'power8'
                 else
                   raise "Unknown bits '#{node_info['bits']}' for '#{node_info['ostype']}'"
                 end
          base_config['template'] ||= "#{base_template}-#{arch}"
        end

        base_config
      end
    end
  end
end