Use network_metadata hash instead of deprecated nodes list
for generate /etc/hosts file Change-Id: I81d429976b1f737d05d5f73d51404d663a817300 Closes-bug: #1518439
This commit is contained in:
parent
1a6d7e9d6a
commit
1c0244b81c
|
@ -0,0 +1,21 @@
|
|||
#
|
||||
# network_metadata_to_hosts
|
||||
#
|
||||
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:network_metadata_to_hosts, :type => :rvalue, :doc => <<-EOS
|
||||
convert network_metadata hash to
|
||||
hash for puppet `host` create_resources call
|
||||
EOS
|
||||
) do |args|
|
||||
hosts=Hash.new
|
||||
nodes=args[0].fetch('nodes', {})
|
||||
nodes.each do |name, props|
|
||||
hosts[props['fqdn']]={:ip=>props['network_roles']['mgmt/vip'],:host_aliases=>[name]}
|
||||
notice("Generating host entry #{name} #{props['network_roles']['mgmt/vip']} #{props['fqdn']}")
|
||||
end
|
||||
return hosts
|
||||
end
|
||||
end
|
||||
|
||||
# vim: set ts=2 sw=2 et :
|
|
@ -1,5 +1,12 @@
|
|||
notice('MODULAR: hosts.pp')
|
||||
|
||||
class { "l23network::hosts_file":
|
||||
nodes => hiera('nodes'),
|
||||
$hosts_file = '/etc/hosts'
|
||||
$host_resources = network_metadata_to_hosts(hiera_hash('network_metadata'))
|
||||
|
||||
Host {
|
||||
ensure => present,
|
||||
target => $hosts_file
|
||||
}
|
||||
|
||||
create_resources(host, $host_resources)
|
||||
|
||||
|
|
|
@ -0,0 +1,111 @@
|
|||
require 'spec_helper'
|
||||
require 'yaml'
|
||||
|
||||
|
||||
describe 'network_metadata_to_hosts' do
|
||||
|
||||
let(:network_metadata) {"""
|
||||
---
|
||||
nodes:
|
||||
node-5:
|
||||
swift_zone: '5'
|
||||
uid: '5'
|
||||
fqdn: node-5.domain.local
|
||||
network_roles:
|
||||
keystone/api: 10.88.0.6
|
||||
neutron/api: 10.88.0.6
|
||||
mgmt/database: 10.88.0.6
|
||||
mgmt/vip: 10.88.0.6
|
||||
sahara/api: 10.88.0.6
|
||||
user_node_name: CO22
|
||||
node_roles:
|
||||
- compute
|
||||
name: node-5
|
||||
node-4:
|
||||
swift_zone: '4'
|
||||
uid: '4'
|
||||
fqdn: node-4.domain.local
|
||||
network_roles:
|
||||
keystone/api: 10.88.0.7
|
||||
neutron/api: 10.88.0.7
|
||||
mgmt/database: 10.88.0.7
|
||||
mgmt/vip: 10.88.0.7
|
||||
sahara/api: 10.88.0.7
|
||||
heat/api: 10.88.0.7
|
||||
ceilometer/api: 10.88.0.7
|
||||
ex: 10.88.1.132
|
||||
user_node_name: CNT21
|
||||
node_roles:
|
||||
- primary-controller
|
||||
name: node-4
|
||||
node-6:
|
||||
swift_zone: '6'
|
||||
uid: '6'
|
||||
fqdn: node-6.domain.local
|
||||
network_roles:
|
||||
keystone/api: 10.88.0.8
|
||||
neutron/api: 10.88.0.8
|
||||
mgmt/database: 10.88.0.8
|
||||
sahara/api: 10.88.0.8
|
||||
ceilometer/api: 10.88.0.8
|
||||
mgmt/vip: 10.88.0.8
|
||||
user_node_name: CO23
|
||||
node_roles:
|
||||
- compute
|
||||
name: node-6
|
||||
vips:
|
||||
vrouter_pub:
|
||||
network_role: public/vip
|
||||
node_roles:
|
||||
- controller
|
||||
- primary-controller
|
||||
namespace: vrouter
|
||||
ipaddr: 10.88.1.130
|
||||
management:
|
||||
network_role: mgmt/vip
|
||||
node_roles:
|
||||
- controller
|
||||
- primary-controller
|
||||
namespace: haproxy
|
||||
ipaddr: 10.88.0.10
|
||||
public:
|
||||
network_role: public/vip
|
||||
node_roles:
|
||||
- controller
|
||||
- primary-controller
|
||||
namespace: haproxy
|
||||
ipaddr: 10.88.1.131
|
||||
vrouter:
|
||||
network_role: mgmt/vip
|
||||
node_roles:
|
||||
- controller
|
||||
- primary-controller
|
||||
namespace: vrouter
|
||||
ipaddr: 10.88.0.9
|
||||
"""}
|
||||
|
||||
|
||||
let(:scope) { PuppetlabsSpec::PuppetInternals.scope }
|
||||
|
||||
before(:each) do
|
||||
puppet_debug_override()
|
||||
end
|
||||
|
||||
subject do
|
||||
function_name = Puppet::Parser::Functions.function('network_metadata_to_hosts')
|
||||
scope.method(function_name)
|
||||
end
|
||||
|
||||
it 'should exist' do
|
||||
expect(subject).to eq scope.method('function_network_metadata_to_hosts')
|
||||
end
|
||||
|
||||
it 'should return hash for creating set of "host" puppet resources by create_resources()' do
|
||||
expect(scope.function_network_metadata_to_hosts([YAML.load(network_metadata)])).to eq({
|
||||
'node-6.domain.local' => {:ip => '10.88.0.8', :host_aliases => ['node-6']},
|
||||
'node-5.domain.local' => {:ip => '10.88.0.6', :host_aliases => ['node-5']},
|
||||
'node-4.domain.local' => {:ip => '10.88.0.7', :host_aliases => ['node-4']},
|
||||
})
|
||||
end
|
||||
|
||||
end
|
Loading…
Reference in New Issue