mirror of
https://github.com/puppetlabs/vmpooler.git
synced 2026-01-27 02:18:41 -05:00
Merge pull request #472 from puppetlabs/fix-extra-config
(maint) Fix EXTRA_CONFIG merge behavior
This commit is contained in:
commit
acf84267e2
6 changed files with 40 additions and 3 deletions
|
|
@ -3,6 +3,7 @@
|
||||||
module Vmpooler
|
module Vmpooler
|
||||||
require 'concurrent'
|
require 'concurrent'
|
||||||
require 'date'
|
require 'date'
|
||||||
|
require 'deep_merge'
|
||||||
require 'json'
|
require 'json'
|
||||||
require 'net/ldap'
|
require 'net/ldap'
|
||||||
require 'open-uri'
|
require 'open-uri'
|
||||||
|
|
@ -42,7 +43,7 @@ module Vmpooler
|
||||||
extra_configs = parsed_config[:config]['extra_config'].split(',')
|
extra_configs = parsed_config[:config]['extra_config'].split(',')
|
||||||
extra_configs.each do |config|
|
extra_configs.each do |config|
|
||||||
extra_config = YAML.load_file(config)
|
extra_config = YAML.load_file(config)
|
||||||
parsed_config.merge!(extra_config)
|
parsed_config.deep_merge(extra_config)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -242,7 +242,7 @@ module Vmpooler
|
||||||
# returns
|
# returns
|
||||||
# nil when successful. Raises error when encountered
|
# nil when successful. Raises error when encountered
|
||||||
def create_template_delta_disks(_pool)
|
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
|
end
|
||||||
|
|
||||||
# inputs
|
# inputs
|
||||||
|
|
|
||||||
4
spec/fixtures/extra_config1.yaml
vendored
Normal file
4
spec/fixtures/extra_config1.yaml
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
||||||
|
---
|
||||||
|
:providers:
|
||||||
|
:alice:
|
||||||
|
foo: "foo"
|
||||||
11
spec/fixtures/extra_config2.yaml
vendored
Normal file
11
spec/fixtures/extra_config2.yaml
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
---
|
||||||
|
:providers:
|
||||||
|
:bob:
|
||||||
|
foo: "foo_bob"
|
||||||
|
bar: "bar"
|
||||||
|
|
||||||
|
:pools:
|
||||||
|
- name: 'pool05'
|
||||||
|
size: 5
|
||||||
|
provider: dummy
|
||||||
|
ready_ttl: 5
|
||||||
|
|
@ -45,10 +45,30 @@ describe 'Vmpooler' do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'when config file is set' do
|
context 'when config file is set' do
|
||||||
it 'should use the file' do
|
before(:each) do
|
||||||
ENV['VMPOOLER_CONFIG_FILE'] = config_file
|
ENV['VMPOOLER_CONFIG_FILE'] = config_file
|
||||||
|
end
|
||||||
|
it 'should use the file' do
|
||||||
expect(Vmpooler.config[:pools]).to eq(config[:pools])
|
expect(Vmpooler.config[:pools]).to eq(config[:pools])
|
||||||
end
|
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
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ Gem::Specification.new do |s|
|
||||||
s.require_paths = ["lib"]
|
s.require_paths = ["lib"]
|
||||||
s.add_dependency 'concurrent-ruby', '~> 1.1'
|
s.add_dependency 'concurrent-ruby', '~> 1.1'
|
||||||
s.add_dependency 'connection_pool', '~> 2.2'
|
s.add_dependency 'connection_pool', '~> 2.2'
|
||||||
|
s.add_dependency 'deep_merge', '~> 1.2'
|
||||||
s.add_dependency 'net-ldap', '~> 0.16'
|
s.add_dependency 'net-ldap', '~> 0.16'
|
||||||
s.add_dependency 'nokogiri', '~> 1.10'
|
s.add_dependency 'nokogiri', '~> 1.10'
|
||||||
s.add_dependency 'opentelemetry-exporter-jaeger', '= 0.20.1'
|
s.add_dependency 'opentelemetry-exporter-jaeger', '= 0.20.1'
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue