32 lines
1000 B
Ruby
32 lines
1000 B
Ruby
require 'yaml'
|
|
|
|
module Puppet::Parser::Functions
|
|
newfunction(:hiera_overrides, :doc => <<-EOS
|
|
Custom function to override hiera parameters, the first argument -
|
|
file name, where write new parameters in yaml format, ex:
|
|
hiera_overrides('/etc/hiera/test.yaml')
|
|
EOS
|
|
) do |args|
|
|
filename = args[0]
|
|
|
|
begin
|
|
yaml_string = File.read filename
|
|
|
|
hiera_overrides = YAML.load yaml_string
|
|
rescue Errno::ENOENT
|
|
hiera_overrides = {}
|
|
end
|
|
|
|
# override neutron_advanced_configuration
|
|
neutron_advanced_configuration = {}
|
|
neutron_advanced_configuration['neutron_dvr'] = false
|
|
neutron_advanced_configuration['neutron_l2_pop'] = false
|
|
neutron_advanced_configuration['neutron_l3_ha'] = false
|
|
neutron_advanced_configuration['neutron_qos'] = false
|
|
hiera_overrides['neutron_advanced_configuration'] = neutron_advanced_configuration
|
|
|
|
# write to hiera override yaml file
|
|
File.open(filename, 'w') { |file| file.write(hiera_overrides.to_yaml) }
|
|
end
|
|
end
|