Skip to content

Commit 472d124

Browse files
committed
Update to error with --hiera-path plus a datadir in a source
1 parent 2fd8868 commit 472d124

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

lib/octocatalog-diff/catalog-util/builddir.rb

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,7 +318,16 @@ def update_hiera_config_v5(_logger, options, obj)
318318
obj[hierarchy_key].each do |level|
319319
[:datadir, 'datadir'].each do |key|
320320
next unless level.key?(key)
321-
level[key] = hiera_munge(options, level[key])
321+
if options[:hiera_path_strip].is_a?(String)
322+
level[key] = hiera_munge(options, level[key])
323+
elsif options[:hiera_path].is_a?(String)
324+
message = [
325+
"Hierarchy item #{level.inspect} has a datadir.",
326+
'--hiera-path is not supported in this situation.',
327+
'Please use --hiera-path-strip.'
328+
].join(' ')
329+
raise ArgumentError, message
330+
end
322331
end
323332
end
324333
end

spec/octocatalog-diff/tests/catalog-util/builddir_spec.rb

Lines changed: 21 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -537,22 +537,15 @@
537537

538538
context 'hiera 5' do
539539
context 'with hiera_path specified' do
540-
it 'should replace hiera path in defaults and hierarchy' do
540+
it 'should raise error due to datadir in hierarchy' do
541541
options = default_options.merge(
542542
hiera_config: OctocatalogDiff::Spec.fixture_path('repos/default/config/hiera5.yaml'),
543543
hiera_path: 'hieradata'
544544
)
545545
logger, _logger_str = OctocatalogDiff::Spec.setup_logger
546-
testobj = OctocatalogDiff::CatalogUtil::BuildDir.new(options, logger)
547-
hiera_yaml = File.join(testobj.tempdir, 'hiera.yaml')
548-
expect(File.file?(hiera_yaml)).to eq(true)
549-
hiera_cfg = YAML.load_file(hiera_yaml)
550-
expect(hiera_cfg['defaults']).to eq('datadir' => File.join(testobj.tempdir, '/environments/production/hieradata'))
551-
expect(hiera_cfg['hierarchy']).to include('name' => 'fqdn', 'path' => 'servers/%{::fqdn}.yaml')
552-
expect(hiera_cfg['hierarchy']).to include('name' => 'datacenter', 'path' => 'datacenter/%{::datacenter}.yaml')
553-
expect(hiera_cfg['hierarchy']).to include('name' => 'special',
554-
'path' => 'special/%{::operatingsystem}.yaml',
555-
'datadir' => File.join(testobj.tempdir, '/environments/production/hieradata'))
546+
expect do
547+
OctocatalogDiff::CatalogUtil::BuildDir.new(options, logger)
548+
end.to raise_error(ArgumentError, /--hiera-path is not supported in this situation/)
556549
end
557550

558551
it 'should handle symbolized keys' do
@@ -561,46 +554,47 @@
561554
hiera_path: 'hieradata'
562555
)
563556
logger, _logger_str = OctocatalogDiff::Spec.setup_logger
564-
testobj = OctocatalogDiff::CatalogUtil::BuildDir.new(options, logger)
565-
hiera_yaml = File.join(testobj.tempdir, 'hiera.yaml')
566-
expect(File.file?(hiera_yaml)).to eq(true)
567-
hiera_cfg = YAML.load_file(hiera_yaml)
568-
expect(hiera_cfg[:defaults]).to eq(datadir: File.join(testobj.tempdir, '/environments/production/hieradata'))
569-
expect(hiera_cfg[:hierarchy]).to include(name: 'fqdn', path: 'servers/%{::fqdn}.yaml')
570-
expect(hiera_cfg[:hierarchy]).to include(name: 'datacenter', path: 'datacenter/%{::datacenter}.yaml')
571-
expect(hiera_cfg[:hierarchy]).to include(name: 'special',
572-
path: 'special/%{::operatingsystem}.yaml',
573-
datadir: File.join(testobj.tempdir, '/environments/production/hieradata'))
557+
expect do
558+
OctocatalogDiff::CatalogUtil::BuildDir.new(options, logger)
559+
end.to raise_error(ArgumentError, /--hiera-path is not supported in this situation/)
574560
end
575561
end
576562

577563
context 'with hiera_path_strip specified' do
578564
it 'should replace hiera path in defaults and hierarchy' do
579565
options = default_options.merge(
580566
hiera_config: OctocatalogDiff::Spec.fixture_path('repos/default/config/hiera5.yaml'),
581-
hiera_path: 'hieradata'
567+
hiera_path_strip: '/var/lib/puppet'
582568
)
583569
logger, _logger_str = OctocatalogDiff::Spec.setup_logger
584570
testobj = OctocatalogDiff::CatalogUtil::BuildDir.new(options, logger)
585571
hiera_yaml = File.join(testobj.tempdir, 'hiera.yaml')
586572
expect(File.file?(hiera_yaml)).to eq(true)
587573
hiera_cfg = YAML.load_file(hiera_yaml)
588-
expect(hiera_cfg[:backends]).to eq(['yaml'])
589-
expect(hiera_cfg[:yaml]).to eq(datadir: File.join(testobj.tempdir, 'environments', 'production', 'hieradata'))
574+
expect(hiera_cfg['defaults']).to eq('datadir' => File.join(testobj.tempdir, '/environments/production/hieradata'))
575+
expect(hiera_cfg['hierarchy']).to include('name' => 'fqdn', 'path' => 'servers/%{::fqdn}.yaml')
576+
expect(hiera_cfg['hierarchy']).to include('name' => 'datacenter', 'path' => 'datacenter/%{::datacenter}.yaml')
577+
expect(hiera_cfg['hierarchy']).to include('name' => 'special',
578+
'path' => 'special/%{::operatingsystem}.yaml',
579+
'datadir' => File.join(testobj.tempdir, '/environments/production/special'))
590580
end
591581

592582
it 'should handle symbolized keys' do
593583
options = default_options.merge(
594584
hiera_config: OctocatalogDiff::Spec.fixture_path('repos/default/config/hiera5-symbols.yaml'),
595-
hiera_path: 'hieradata'
585+
hiera_path_strip: '/var/lib/puppet'
596586
)
597587
logger, _logger_str = OctocatalogDiff::Spec.setup_logger
598588
testobj = OctocatalogDiff::CatalogUtil::BuildDir.new(options, logger)
599589
hiera_yaml = File.join(testobj.tempdir, 'hiera.yaml')
600590
expect(File.file?(hiera_yaml)).to eq(true)
601591
hiera_cfg = YAML.load_file(hiera_yaml)
602-
expect(hiera_cfg[:backends]).to eq(['yaml'])
603-
expect(hiera_cfg[:yaml]).to eq(datadir: File.join(testobj.tempdir, 'environments', 'production', 'hieradata'))
592+
expect(hiera_cfg['defaults']).to eq('datadir' => File.join(testobj.tempdir, '/environments/production/hieradata'))
593+
expect(hiera_cfg['hierarchy']).to include('name' => 'fqdn', 'path' => 'servers/%{::fqdn}.yaml')
594+
expect(hiera_cfg['hierarchy']).to include('name' => 'datacenter', 'path' => 'datacenter/%{::datacenter}.yaml')
595+
expect(hiera_cfg['hierarchy']).to include('name' => 'special',
596+
'path' => 'special/%{::operatingsystem}.yaml',
597+
'datadir' => File.join(testobj.tempdir, '/environments/production/special'))
604598
end
605599
end
606600
end

0 commit comments

Comments
 (0)