in cookbooks/fb_network_scripts/resources/default.rb [21:121]
def build_config
configs = {}
bridging = false
primary_int = node['fb_network_scripts']['primary_interface']
unless node['fb_network_scripts']['interfaces'][primary_int]
node.default['fb_network_scripts']['interfaces'][primary_int] = {}
end
if primary_int != 'eth0' &&
node['fb_network_scripts']['interfaces']['eth0'] &&
node['fb_network_scripts']['interfaces']['eth0'].empty?
node.rm(:fb_network_scripts, :interfaces, :eth0)
end
interface_configs = node['fb_network_scripts']['interfaces'].to_hash
interface_configs.each do |interface, config|
config['name'] = interface
unless config['onboot']
config['onboot'] = 'yes'
end
unless config['bootproto']
config['bootproto'] = 'static'
end
unless config['v6router']
config['v6router'] = 'no'
end
unless config['ipv6_autoconf']
config['ipv6_autoconf'] = 'yes'
end
if [false, 'no', 'n', 'N', 'NO'].include?(config['onboot'])
config['onboot'] = 'no'
else
config['onboot'] = 'yes'
end
if [true, 'yes', 'y', 'Y', 'YES'].include?(config['v6router'])
config['v6router'] = 'yes'
else
config['v6router'] = 'no'
end
Chef::Log.debug("NETCONF: #{interface} #{config}")
have_v4_config = (config.key?('ip') && config.key?('netmask')) ||
config.key?('my_inner_ipaddr')
have_v6_config = config.key?('ipv6')
want_auto = (config['bootproto'] == 'static' &&
!have_v4_config && !have_v6_config)
if config['range']
config['ip'] = '127.0.0.2'
config['netmask'] = '255.255.255.0'
elsif want_auto
if interface == primary_int
unless config['ip'] || config['ipv6']
fail "fb_network_scripts: #{interface} has neither IPv4 nor " +
'IPv6 address, aborting'
end
elsif config['bridge'] || config['ovs_bridge']
config.delete('bootproto')
bridging = true
else
Chef::Log.error(
"fb_network_scripts: you requested that #{interface} be " +
"configured, but didn't provide configuration data, (and _also_" +
"it's not the primary interface [#{primary_int}], so it cannot " +
'be configured!',
)
fail 'fb_network_scripts: not enough data to configure ' +
"#{interface}, cowardly refusing to continue."
end
end
if config['v6range']
unless config['v6secondaries']
config['v6secondaries'] = []
end
config['v6secondaries'] += FB::NetworkScripts.v6range2list(
config['v6range']['start'], config['v6range']['end']
)
unless config['ipv6']
config['ipv6'] = config['v6secondaries'].shift
end
end
configs[interface] = config
end
configs.values
end