blob: 1c86a232bbcfc9f7c824b7726e2110e53df11947 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
module Puppet::Parser::Functions
newfunction(:vpp_physnet_mapping, :type => :rvalue, :doc => "Convert VPP ML2 physnet mapping from kernel nic name (eth1) to VPP name (GigabitEthernet0/7/0).") do |arg|
mapping_list = arg[0]
mapping_list.map! do |item|
mapping = item.split(':')
unless mapping.length == 2
raise Puppet::ParseError, "Invalid physnet mapping format: #{item}. Expecting 'physnet:interface_name'"
end
if defined? call_function
vpp_int = call_function('hiera', [mapping[1]])
else
vpp_int = function_hiera([mapping[1]])
end
if vpp_int.to_s.strip.empty?
raise Puppet::ParseError, "VPP interface mapped to #{mapping[1]} is not found."
end
mapping[0]+':'+vpp_int
end
return mapping_list.join(',')
end
end
|