89 lines
2.4 KiB
Ruby
89 lines
2.4 KiB
Ruby
require 'facter'
|
|
|
|
# Function to figure out old school to new school mappings
|
|
# Uses the biosdevname info to generate a mapping
|
|
module Puppet::Parser::Functions
|
|
newfunction(:c7_int_name, :type => :rvalue) do |args|
|
|
|
|
if args.length != 1
|
|
raise(Puppet::ParseError, "No interface name passed to convert")
|
|
end
|
|
|
|
int_name = args[0]
|
|
|
|
if Facter.value('osfamily') == 'Debian'
|
|
os_majrelease = Facter.value('operatingsystemmajrelease')
|
|
if(os_majrelease == '16.04')
|
|
interfaces = {}
|
|
kernel_devs=`/sbin/biosdevname -d`
|
|
if ($?.to_i == 4)
|
|
#Virtual Machine, so I give up
|
|
return int_name
|
|
end
|
|
kernel_devs.split("\n").each do |dev_info|
|
|
# Split the values
|
|
name, value = dev_info.split(':', 2)
|
|
|
|
# Stip the whitespace out
|
|
name = name.sub(/^[\s\n\r]*/, '').sub(/[\s\n\r]*$/, '')
|
|
value = value.sub(/^[\s\n\r]*/, '').sub(/[\s\n\r]*$/, '')
|
|
|
|
# Grab the kernel names
|
|
if name == 'Kernel name'
|
|
# Figure out the old school mapping
|
|
old_school=`/sbin/biosdevname --policy=all_ethN -i '#{value}'`
|
|
interfaces[old_school.chomp] = value
|
|
end
|
|
end
|
|
|
|
# Lookup
|
|
if interfaces.has_key?(int_name)
|
|
return interfaces[int_name]
|
|
end
|
|
|
|
# Default to what was passed
|
|
return int_name
|
|
end
|
|
#nothing to do here..
|
|
return int_name
|
|
|
|
#Debian Ends Here
|
|
end
|
|
|
|
# Don't need any of this logic for 6
|
|
Facter.loadfacts()
|
|
os_majrelease = Facter.value('operatingsystemmajrelease')
|
|
if os_majrelease != '7'
|
|
return int_name
|
|
end
|
|
|
|
# Get the kernel names
|
|
interfaces = {}
|
|
kernel_devs=`/usr/sbin/biosdevname -d`
|
|
kernel_devs.split("\n").each do |dev_info|
|
|
# Split the values
|
|
name, value = dev_info.split(':', 2)
|
|
next unless name and value
|
|
|
|
# Stip the whitespace out
|
|
name = name.sub(/^[\s\n\r]*/, '').sub(/[\s\n\r]*$/, '')
|
|
value = value.sub(/^[\s\n\r]*/, '').sub(/[\s\n\r]*$/, '')
|
|
|
|
# Grab the kernel names
|
|
if name == 'Kernel name'
|
|
# Figure out the old school mapping
|
|
old_school=`/usr/sbin/biosdevname --policy=all_ethN -i '#{value}'`
|
|
interfaces[old_school.chomp] = value
|
|
end
|
|
end
|
|
|
|
# Lookup
|
|
if interfaces.has_key?(int_name)
|
|
return interfaces[int_name]
|
|
end
|
|
|
|
# Default to what was passed
|
|
return int_name
|
|
end
|
|
end
|