fuel-plugin-calico/deployment_scripts/puppet/modules/calico/lib/puppet/parser/functions/convert_external_peers.rb

28 lines
814 B
Ruby

Puppet::Parser::Functions::newfunction( :convert_external_peers,
:type => :rvalue, :doc => <<-EOS
This function get text in format
name:asnum:ipaddr:flags...
and convert to hash, used into generate_bgp_peers()
{
peer_name => {
ipaddr => '1.2.3.4',
as_number => '64646'
}
}
EOS
) do |argv|
if argv.size != 1
raise(
Puppet::ParseError,
"convert_external_peers(): Wrong number of arguments. Should be one."
)
end
peers = argv[0]
as_number = argv[1]
Hash[*peers.split(/\n/).map{|v| v.gsub(/\s+/, "")}.reject{|c| c.empty?}.map{|v| v.split(':')}.reject{|v| v.size<3}.map{|l| [l[0],{'as_number'=>l[1],'ipaddr'=> l[2]}]}.flatten]
end
# vim: set ts=2 sw=2 et :