Get real hostname instead of node key
Fix network_metadata_to_hosts() function to get real hostname
instead of permanent service node key.
Change-Id: Ibbd2e11d5a076e60ef5729abafd449417f954ae4
Closes-Bug: #1573029
(cherry picked from commit 4660d59a5b
)
This commit is contained in:
parent
7ffecbfddc
commit
da149fa050
@ -3,7 +3,7 @@
|
||||
#
|
||||
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:network_metadata_to_hosts, :type => :rvalue, :doc => <<-EOS
|
||||
newfunction(:network_metadata_to_hosts, :type => :rvalue, :arity => -2, :doc => <<-EOS
|
||||
convert network_metadata hash to
|
||||
hash for puppet `host` create_resources call
|
||||
|
||||
@ -11,20 +11,29 @@ module Puppet::Parser::Functions
|
||||
EOS
|
||||
) do |args|
|
||||
|
||||
unless args.size == 1 or args.size == 3
|
||||
raise(Puppet::ParseError, 'network_metadata_to_hosts(): Wrong number of arguments, need one or three')
|
||||
end
|
||||
required_opts = args[1] && (args[2] || false)
|
||||
|
||||
raise(
|
||||
ArgumentError,
|
||||
'network_metadata_to_hosts(): `network_role` and `node_prefix` opts are required'
|
||||
) if required_opts == false
|
||||
|
||||
nodes = args[0].fetch('nodes', {})
|
||||
network_role = args[1] || 'mgmt/vip'
|
||||
prefix = args[2] || ''
|
||||
|
||||
hosts = Hash.new
|
||||
nodes = args[0].fetch('nodes', {})
|
||||
network_role = (args[1].to_s == '' ? 'mgmt/vip' : args[1].to_s)
|
||||
prefix = args[2].to_s
|
||||
nodes.each do |name, props|
|
||||
fqdn = "#{prefix}#{props['fqdn']}"
|
||||
hosts[fqdn]={:ip=>props['network_roles'][network_role],:host_aliases=>["#{prefix}#{name}"]}
|
||||
notice("Generating host entry #{name} #{props['network_roles'][network_role]} #{props['fqdn']}")
|
||||
|
||||
nodes.each_value do |node|
|
||||
fqdn = "#{prefix}#{node['fqdn']}"
|
||||
hosts[fqdn] = {
|
||||
:ip => node['network_roles'][network_role],
|
||||
:host_aliases => ["#{prefix}#{node['name']}"]
|
||||
}
|
||||
notice("Generating host entry #{node['name']} #{node['network_roles'][network_role]} #{node['fqdn']}")
|
||||
end
|
||||
return hosts
|
||||
|
||||
hosts
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -10,7 +10,7 @@ let(:network_metadata) {"""
|
||||
node-5:
|
||||
swift_zone: '5'
|
||||
uid: '5'
|
||||
fqdn: node-5.domain.local
|
||||
fqdn: ctrl-005.domain.local
|
||||
network_roles:
|
||||
keystone/api: 10.88.0.6
|
||||
neutron/api: 10.88.0.6
|
||||
@ -21,11 +21,11 @@ let(:network_metadata) {"""
|
||||
user_node_name: CO22
|
||||
node_roles:
|
||||
- compute
|
||||
name: node-5
|
||||
name: ctrl-005
|
||||
node-4:
|
||||
swift_zone: '4'
|
||||
uid: '4'
|
||||
fqdn: node-4.domain.local
|
||||
fqdn: ctrl-004.domain.local
|
||||
network_roles:
|
||||
keystone/api: 10.88.0.7
|
||||
neutron/api: 10.88.0.7
|
||||
@ -39,11 +39,11 @@ let(:network_metadata) {"""
|
||||
user_node_name: CNT21
|
||||
node_roles:
|
||||
- primary-controller
|
||||
name: node-4
|
||||
name: ctrl-004
|
||||
node-6:
|
||||
swift_zone: '6'
|
||||
uid: '6'
|
||||
fqdn: node-6.domain.local
|
||||
fqdn: ctrl-006.domain.local
|
||||
network_roles:
|
||||
keystone/api: 10.88.0.8
|
||||
neutron/api: 10.88.0.8
|
||||
@ -55,7 +55,7 @@ let(:network_metadata) {"""
|
||||
user_node_name: CO23
|
||||
node_roles:
|
||||
- compute
|
||||
name: node-6
|
||||
name: ctrl-006
|
||||
vips:
|
||||
vrouter_pub:
|
||||
network_role: public/vip
|
||||
@ -105,23 +105,25 @@ let(:network_metadata) {"""
|
||||
|
||||
it 'should return hash for creating ordinary 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']},
|
||||
'ctrl-006.domain.local' => {:ip => '10.88.0.8', :host_aliases => ['ctrl-006']},
|
||||
'ctrl-005.domain.local' => {:ip => '10.88.0.6', :host_aliases => ['ctrl-005']},
|
||||
'ctrl-004.domain.local' => {:ip => '10.88.0.7', :host_aliases => ['ctrl-004']},
|
||||
})
|
||||
end
|
||||
|
||||
it 'should return hash for creating prefixed set of "host" puppet resources by create_resources()' do
|
||||
expect(scope.function_network_metadata_to_hosts([YAML.load(network_metadata), 'nova/migration', 'xxx-'])).to eq({
|
||||
'xxx-node-6.domain.local' => {:ip => '10.77.0.8', :host_aliases => ['xxx-node-6']},
|
||||
'xxx-node-5.domain.local' => {:ip => '10.77.0.6', :host_aliases => ['xxx-node-5']},
|
||||
'xxx-node-4.domain.local' => {:ip => '10.77.0.7', :host_aliases => ['xxx-node-4']},
|
||||
'xxx-ctrl-006.domain.local' => {:ip => '10.77.0.8', :host_aliases => ['xxx-ctrl-006']},
|
||||
'xxx-ctrl-005.domain.local' => {:ip => '10.77.0.6', :host_aliases => ['xxx-ctrl-005']},
|
||||
'xxx-ctrl-004.domain.local' => {:ip => '10.77.0.7', :host_aliases => ['xxx-ctrl-004']},
|
||||
})
|
||||
end
|
||||
|
||||
it { expect{scope.function_network_metadata_to_hosts([])}.to raise_error(ArgumentError, /Wrong number of arguments given/) }
|
||||
|
||||
it 'should throw exception on wrong number of parameters' do
|
||||
expect{scope.function_network_metadata_to_hosts([YAML.load(network_metadata), 'nova/migration'])}.to \
|
||||
raise_error(Puppet::ParseError, /Wrong number of arg/)
|
||||
raise_error(ArgumentError, /opts are required/)
|
||||
end
|
||||
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user