Merge pull request #472 from puppetlabs/fix-extra-config

(maint) Fix EXTRA_CONFIG merge behavior
This commit is contained in:
Samuel 2021-12-29 13:22:30 -06:00 committed by GitHub
commit acf84267e2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 40 additions and 3 deletions

View file

@ -3,6 +3,7 @@
module Vmpooler
require 'concurrent'
require 'date'
require 'deep_merge'
require 'json'
require 'net/ldap'
require 'open-uri'
@ -42,7 +43,7 @@ module Vmpooler
extra_configs = parsed_config[:config]['extra_config'].split(',')
extra_configs.each do |config|
extra_config = YAML.load_file(config)
parsed_config.merge!(extra_config)
parsed_config.deep_merge(extra_config)
end
end
end

View file

@ -242,7 +242,7 @@ module Vmpooler
# returns
# nil when successful. Raises error when encountered
def create_template_delta_disks(_pool)
raise("#{self.class.name} does not implement create_template_delta_disks")
puts("#{self.class.name} does not implement create_template_delta_disks")
end
# inputs

4
spec/fixtures/extra_config1.yaml vendored Normal file
View file

@ -0,0 +1,4 @@
---
:providers:
:alice:
foo: "foo"

11
spec/fixtures/extra_config2.yaml vendored Normal file
View file

@ -0,0 +1,11 @@
---
:providers:
:bob:
foo: "foo_bob"
bar: "bar"
:pools:
- name: 'pool05'
size: 5
provider: dummy
ready_ttl: 5

View file

@ -45,10 +45,30 @@ describe 'Vmpooler' do
end
context 'when config file is set' do
it 'should use the file' do
before(:each) do
ENV['VMPOOLER_CONFIG_FILE'] = config_file
end
it 'should use the file' do
expect(Vmpooler.config[:pools]).to eq(config[:pools])
end
it 'merges one extra file, results in two providers' do
ENV['EXTRA_CONFIG'] = File.join(fixtures_dir, 'extra_config1.yaml')
expect(Vmpooler.config[:providers].keys).to include(:dummy)
expect(Vmpooler.config[:providers].keys).to include(:alice)
end
it 'merges two extra file, results in three providers and an extra pool' do
extra1 = File.join(fixtures_dir, 'extra_config1.yaml')
extra2 = File.join(fixtures_dir, 'extra_config2.yaml')
ENV['EXTRA_CONFIG'] = "#{extra1},#{extra2}"
expect(Vmpooler.config[:providers].keys).to include(:dummy)
expect(Vmpooler.config[:providers].keys).to include(:alice)
expect(Vmpooler.config[:providers].keys).to include(:bob)
merged_pools = [{"name"=>"pool03", "provider"=>"dummy", "ready_ttl"=>5, "size"=>5},
{"name"=>"pool04", "provider"=>"dummy", "ready_ttl"=>5, "size"=>5},
{"name"=>"pool05", "provider"=>"dummy", "ready_ttl"=>5, "size"=>5}]
expect(Vmpooler.config[:pools]).to eq(merged_pools)
expect(Vmpooler.config[:config]).not_to be_nil #merge does not deleted existing keys
end
end
end
end

View file

@ -19,6 +19,7 @@ Gem::Specification.new do |s|
s.require_paths = ["lib"]
s.add_dependency 'concurrent-ruby', '~> 1.1'
s.add_dependency 'connection_pool', '~> 2.2'
s.add_dependency 'deep_merge', '~> 1.2'
s.add_dependency 'net-ldap', '~> 0.16'
s.add_dependency 'nokogiri', '~> 1.10'
s.add_dependency 'opentelemetry-exporter-jaeger', '= 0.20.1'