Codebase list ruby-beaker-hostgenerator / 83886a3
Avoid activesupport deep_merge conflict github-changelog-generator depends on activesupport which defines `Hash#deep_merge` methods that behave differently and conflict with the ones from the `deep_merge` gem. Use the recommended way of avoiding this conflict, as per the `deep_merge` documentation.[1] Also, revert the changes from #209 which cause unexpected behavior with generated fixtures. [1] https://github.com/danielsdeleo/deep_merge#using-deep_merge-in-rails Gabriel Nagy 2 years ago
9 changed file(s) with 16 addition(s) and 19 deletion(s). Raw diff Collapse all Expand all
19231923 def get_osinfo(bhg_version)
19241924 case bhg_version
19251925 when 0
1926 {}.deep_merge!(osinfo)
1926 {}.deeper_merge!(osinfo)
19271927 when 1
1928 {}.deep_merge!(osinfo).deep_merge!(osinfo_bhgv1)
1928 {}.deeper_merge!(osinfo).deeper_merge!(osinfo_bhgv1)
19291929 else
19301930 raise "Invalid beaker-hostgenerator version: #{bhg_version}"
19311931 end
19691969 # }
19701970 def get_platform_info(bhg_version, platform, hypervisor)
19711971 info = get_osinfo(bhg_version)[platform]
1972 result = {}
1973 result.deep_merge!(info[:general]) if info[:general]
1974 result.deep_merge!(info[hypervisor]) if info[hypervisor]
1975 result
1972 {}.deeper_merge!(info[:general]).deeper_merge!(info[hypervisor])
19761973 end
19771974
19781975 # Perform any adjustments or modifications necessary to the given node
2121 def generate(layout, options)
2222 layout = prepare(layout)
2323 tokens = tokenize_layout(layout)
24 config = {}.deep_merge(BASE_CONFIG)
24 config = {}.deeper_merge(BASE_CONFIG)
2525 nodeid = Hash.new(1)
2626 ostype = nil
2727 bhg_version = options[:osinfo_version] || 0
5050 # Delegate to the hypervisor
5151 hypervisor = BeakerHostGenerator::Hypervisor.create(node_info, options)
5252 host_config = hypervisor.generate_node(node_info, host_config, bhg_version)
53 config['CONFIG'].deep_merge!(hypervisor.global_config())
53 config['CONFIG'].deeper_merge!(hypervisor.global_config())
5454
5555 # Merge in any arbitrary key-value host settings. Treat the 'hostname'
5656 # setting specially, and don't merge it in as an arbitrary setting.
7979 decoded = "{#{decoded}}"
8080 end
8181 global_config = settings_string_to_map(decoded)
82 config['CONFIG'].deep_merge!(global_config)
82 config['CONFIG'].deeper_merge!(global_config)
8383 end
8484
8585 # Munge non-string scalar values into proper data types
116116
117117 if not options[:disable_role_config]
118118 host_config['roles'].each do |role|
119 host_config.deep_merge! get_role_config(role)
119 host_config.deeper_merge! get_role_config(role)
120120 end
121121 end
122122 end
00 require 'beaker-hostgenerator/data'
11 require 'beaker-hostgenerator/hypervisor'
2 require 'deep_merge'
2 require 'deep_merge/rails_compat'
33
44 module BeakerHostGenerator
55 module Hypervisor
00 require 'beaker-hostgenerator/data'
11 require 'beaker-hostgenerator/hypervisor'
2 require 'deep_merge'
2 require 'deep_merge/rails_compat'
33
44 module BeakerHostGenerator
55 module Hypervisor
00 require 'beaker-hostgenerator/hypervisor'
11 require 'beaker-hostgenerator/data'
2 require 'deep_merge'
2 require 'deep_merge/rails_compat'
33
44 module BeakerHostGenerator::Hypervisor
55 class Unknown < BeakerHostGenerator::Hypervisor::Interface
00 require 'beaker-hostgenerator/data'
11 require 'beaker-hostgenerator/hypervisor'
2 require 'deep_merge'
2 require 'deep_merge/rails_compat'
33
44 module BeakerHostGenerator
55 module Hypervisor
00 require 'beaker-hostgenerator/data'
11 require 'beaker-hostgenerator/hypervisor'
2 require 'deep_merge'
2 require 'deep_merge/rails_compat'
33
44 module BeakerHostGenerator
55 module Hypervisor
9393 def base_generate_node(node_info, base_config, bhg_version, *hypervisors)
9494 platform = node_info['platform']
9595 hypervisors.map do |hypervisor|
96 base_config.deep_merge! get_platform_info(bhg_version, platform, hypervisor)
96 base_config.deeper_merge! get_platform_info(bhg_version, platform, hypervisor)
9797 end
9898
9999 base_config['hypervisor'] = @name
00 require 'beaker-hostgenerator/data'
11 require 'beaker-hostgenerator/roles'
22 require 'beaker-hostgenerator/hypervisor/vmpooler'
3 require 'deep_merge'
3 require 'deep_merge/rails_compat'
44
55 module BeakerHostGenerator
66 module Utils
1717 def dump_hosts(hosts, path)
1818 vmpooler_hypervisor = BeakerHostGenerator::Hypervisor::Vmpooler.new
1919 config = {}
20 config.deep_merge! BeakerHostGenerator::Data.BASE_CONFIG
21 config['CONFIG'].deep_merge! vmpooler_hypervisor.global_config()
20 config.deeper_merge! BeakerHostGenerator::Data.BASE_CONFIG
21 config['CONFIG'].deeper_merge! vmpooler_hypervisor.global_config()
2222
2323 hosts.each do |host|
2424 config['HOSTS'][host.node_name] = {