Codebase list ruby-beaker-hostgenerator / 3c9dcec
Merge pull request #144 from ekohl/fix-vagrant_libvirt (maint) Fix --hypervisor vagrant_libvirt Spencer McElmurry authored 5 years ago GitHub committed 5 years ago
7 changed file(s) with 70 addition(s) and 44 deletion(s). Raw diff Collapse all Expand all
1414 include BeakerHostGenerator::Data
1515
1616 def generate_node(node_info, base_config, bhg_version)
17 base_config['hypervisor'] = 'abs'
18
1917 # Grab vmpooler data for this platform and any hardware (ABS) data.
2018 # The assumption here is that these are mutually exclusive; that is,
2119 # any given platform will have *either* :vmpooler data or :abs data
2220 # so we're not worried about one overriding the other when we merge
2321 # the hashes together.
24 platform = node_info['platform']
25 vmpooler_platform_info = get_platform_info(bhg_version, platform, :vmpooler)
26 abs_platform_info = get_platform_info(bhg_version, platform, :abs)
27
28 base_config.deep_merge! vmpooler_platform_info
29 base_config.deep_merge! abs_platform_info
30
31 return base_config
22 return base_generate_node(node_info, base_config, bhg_version, :vmpooler, :abs)
3223 end
3324 end
3425 end
77 include BeakerHostGenerator::Data
88
99 def generate_node(node_info, base_config, bhg_version)
10 base_config['hypervisor'] = 'docker'
1110 base_config['docker_cmd'] = ['/sbin/init']
1211 base_config['image'] = node_info['ostype'].sub(/(\d)/, ':\1')
1312 base_config['image'].sub!(/(\d{2})/, '\1.') if node_info['ostype'] =~ /^ubuntu/
1413
15 platform = node_info['platform']
16 platform_info = get_platform_info(bhg_version, platform, :docker)
17 base_config.deep_merge! platform_info
18
19 return base_config
14 return base_generate_node(node_info, base_config, bhg_version, :docker)
2015 end
2116 end
2217 end
55 class Unknown < BeakerHostGenerator::Hypervisor::Interface
66 include BeakerHostGenerator::Data
77
8 def initialize(name)
9 @name = name
10 end
11
128 def generate_node(node_info, base_config, bhg_version)
13 platform = node_info['platform']
14 general_info = get_platform_info(bhg_version, platform, :general)
15 base_config.deep_merge! general_info
16 base_config['hypervisor'] = @name
17 return base_config
9 return base_generate_node(node_info, base_config, bhg_version, :general)
1810 end
1911 end
2012 end
77 include BeakerHostGenerator::Data
88
99 def generate_node(node_info, base_config, bhg_version)
10 base_config['hypervisor'] = 'vagrant'
11
1210 if node_info['ostype'] =~ /^centos/
1311 base_config['box'] = node_info['ostype'].sub(/(\d)/, '/\1')
1412 elsif node_info['ostype'] =~ /^fedora/
2018 # We don't use this by default
2119 base_config['synced_folder'] = 'disabled'
2220
23 platform = node_info['platform']
24 platform_info = get_platform_info(bhg_version, platform, :vagrant)
25 base_config.deep_merge! platform_info
26
27 return base_config
21 return base_generate_node(node_info, base_config, bhg_version, :vagrant)
2822 end
2923 end
3024 end
1414 end
1515
1616 def generate_node(node_info, base_config, bhg_version)
17 # set hypervisor
18 base_config['hypervisor'] = 'vmpooler'
19
20 platform = node_info['platform']
21 platform_info = get_platform_info(bhg_version, platform, :vmpooler)
22 base_config.deep_merge! platform_info
17 base_config = base_generate_node(node_info, base_config, bhg_version, :vmpooler)
2318
2419 # Some vmpooler/vsphere platforms have special requirements.
2520 # We munge the node host config here if that is necessary.
2525 # create.
2626 def self.create(node_info, options)
2727 name = node_info['host_settings']['hypervisor'] || options[:hypervisor]
28 hypervisor = builtin_hypervisors[name]
29 if hypervisor
30 hypervisor.new
31 else
32 BeakerHostGenerator::Hypervisor::Unknown.new(name)
33 end
28 hypervisor = builtin_hypervisors[name] || BeakerHostGenerator::Hypervisor::Unknown
29 hypervisor.new(name)
3430 end
3531
3632 # Returns a map of all built-in hypervisor implementations, where the keys
5349 end
5450
5551 class Interface
52 def initialize(name)
53 @name = name
54 end
55
5656 # Returns a map containing any general configuration required by this
5757 # hypervisor. This map will be merged into the 'CONFIG' section of the
5858 # final hosts configuration output.
8787 def generate_node(node_info, base_config, bhg_version)
8888 raise "Method 'generate_node' not implemented!"
8989 end
90
91 private
92
93 def base_generate_node(node_info, base_config, bhg_version, *hypervisors)
94 platform = node_info['platform']
95 hypervisors.map do |hypervisor|
96 base_config.deep_merge! get_platform_info(bhg_version, platform, hypervisor)
97 end
98
99 base_config['hypervisor'] = @name
100
101 return base_config
102 end
90103 end
91104 end
92105 end
0 ---
1 arguments_string: --hypervisor vagrant_libvirt centos6-64m-debian8-32a-redhat7-64a{hypervisor=vagrant}
2 environment_variables: {}
3 expected_hash:
4 HOSTS:
5 centos6-64-1:
6 pe_dir:
7 pe_ver:
8 pe_upgrade_dir:
9 pe_upgrade_ver:
10 box: centos/6
11 synced_folder: disabled
12 platform: el-6-x86_64
13 packaging_platform: el-6-x86_64
14 hypervisor: vagrant_libvirt
15 roles:
16 - agent
17 - master
18 debian8-32-1:
19 pe_dir:
20 pe_ver:
21 pe_upgrade_dir:
22 pe_upgrade_ver:
23 box: generic/debian8
24 synced_folder: disabled
25 platform: debian-8-i386
26 packaging_platform: debian-8-i386
27 hypervisor: vagrant_libvirt
28 roles:
29 - agent
30 redhat7-64-1:
31 pe_dir:
32 pe_ver:
33 pe_upgrade_dir:
34 pe_upgrade_ver:
35 box: generic/redhat7
36 synced_folder: disabled
37 platform: el-7-x86_64
38 packaging_platform: el-7-x86_64
39 hypervisor: vagrant
40 roles:
41 - agent
42 CONFIG:
43 nfs_server: none
44 consoleport: 443
45 expected_exception: