Deployment process fails if user named node with non-ASCII chars
Changes hiera override method which used 'inline_template' puppet functions that return string in US-ASCII encoding to custom puppet function. Change-Id: I6385021ace5090206bb4aaa239eda429714d4cd2 Closes-bug: #1519916
This commit is contained in:
parent
7592c7d490
commit
fd702a6d55
@ -0,0 +1,60 @@
|
||||
require 'yaml'
|
||||
|
||||
module Puppet::Parser::Functions
|
||||
newfunction(:hiera_overrides) do |args|
|
||||
filename = args[0]
|
||||
hiera_overrides = {}
|
||||
|
||||
# override network_metadata
|
||||
delete_roles = ['neutron/floating','neutron/mesh','neutron/private']
|
||||
network_metadata = function_hiera(['network_metadata'])
|
||||
nodes = network_metadata['nodes']
|
||||
nodes.each do |node, meta|
|
||||
(nodes[node]['network_roles']).delete_if { | key, value | delete_roles.include?(key) }
|
||||
end
|
||||
hiera_overrides['network_metadata'] = network_metadata
|
||||
|
||||
# override neutron_config/quantum_settings
|
||||
neutron_config = function_hiera(['neutron_config'])
|
||||
neutron_config['predefined_networks'] = {}
|
||||
hiera_overrides['neutron_config'] = neutron_config
|
||||
hiera_overrides['quantum_settings'] = neutron_config
|
||||
|
||||
# override network_scheme
|
||||
delete_bridges = ['br-mesh','br-floating']
|
||||
network_scheme = function_hiera(['network_scheme'])
|
||||
|
||||
transformations = network_scheme['transformations']
|
||||
transformations.delete_if { |action| action['action'] == 'add-br' and delete_bridges.include?(action['name']) }
|
||||
transformations.delete_if { |action| action['action'] == 'add-patch' and not (action['bridges'] & delete_bridges).empty? }
|
||||
transformations.delete_if { |action| action['action'] == 'add-port' and delete_bridges.include?(action['bridge']) }
|
||||
|
||||
roles = network_scheme['roles']
|
||||
roles.delete_if { |role, bridge| delete_bridges.include?(bridge) }
|
||||
|
||||
endpoints = network_scheme['endpoints']
|
||||
endpoints.delete_if { |bridge, value| delete_bridges.include?(bridge) }
|
||||
hiera_overrides['network_scheme'] = network_scheme
|
||||
|
||||
# override neutron_advanced_configuration
|
||||
neutron_advanced_configuration = function_hiera(['neutron_advanced_configuration'])
|
||||
neutron_advanced_configuration['neutron_dvr'] = false
|
||||
neutron_advanced_configuration['neutron_l2_pop'] = false
|
||||
hiera_overrides['neutron_advanced_configuration'] = neutron_advanced_configuration
|
||||
|
||||
# override testvm image
|
||||
test_vm_image = {}
|
||||
test_vm_image['os_name'] = 'TinyCoreLinux'
|
||||
test_vm_image['img_path'] = '/usr/share/tcl-testvm/tcl.vmdk'
|
||||
test_vm_image['container_format'] = 'bare'
|
||||
test_vm_image['min_ram'] = '128'
|
||||
test_vm_image['disk_format'] = 'vmdk'
|
||||
test_vm_image['glance_properties'] = '--property hypervisor_type=vmware --property vmware_disktype=streamOptimized --property vmware_adaptertype=lsiLogic'
|
||||
test_vm_image['img_name'] = 'TestVM-VMDK'
|
||||
test_vm_image['public'] = 'true'
|
||||
hiera_overrides['test_vm_image'] = test_vm_image
|
||||
|
||||
# write to hiera override yaml file
|
||||
File.open(filename, 'w') { |file| file.write(hiera_overrides.to_yaml) }
|
||||
end
|
||||
end
|
@ -4,115 +4,13 @@ class nsxv::hiera_override (
|
||||
$override_file = "/etc/hiera/override/${plugin_name}.yaml"
|
||||
$override_dir = dirname($override_file)
|
||||
|
||||
$neutron_config = inline_template("<%-
|
||||
require 'yaml'
|
||||
settings = scope.function_hiera(['neutron_config'])
|
||||
settings['predefined_networks'] = {}
|
||||
neutron_config = { 'neutron_config' => settings }
|
||||
-%>
|
||||
<%= neutron_config.to_yaml %>")
|
||||
|
||||
$network_metadata = inline_template("<%-
|
||||
require 'yaml'
|
||||
delete_roles = ['neutron/floating','neutron/mesh','neutron/private']
|
||||
network_metadata = { 'network_metadata' => scope.function_hiera(['network_metadata']) }
|
||||
nodes = network_metadata['network_metadata']['nodes']
|
||||
nodes.each do |node, meta|
|
||||
(nodes[node]['network_roles']).delete_if { | key, value | delete_roles.include?(key) }
|
||||
end
|
||||
-%>
|
||||
<%= network_metadata.to_yaml %>")
|
||||
|
||||
$network_scheme = inline_template("<%-
|
||||
require 'yaml'
|
||||
delete_bridges = ['br-mesh','br-floating']
|
||||
network_scheme = { 'network_scheme' => scope.function_hiera(['network_scheme']) }
|
||||
|
||||
transformations = network_scheme['network_scheme']['transformations']
|
||||
transformations.delete_if { |action| action['action'] == 'add-br' and delete_bridges.include?(action['name']) }
|
||||
transformations.delete_if { |action| action['action'] == 'add-patch' and not (action['bridges'] & delete_bridges).empty? }
|
||||
transformations.delete_if { |action| action['action'] == 'add-port' and delete_bridges.include?(action['bridge']) }
|
||||
|
||||
roles = network_scheme['network_scheme']['roles']
|
||||
roles.delete_if { |role, bridge| delete_bridges.include?(bridge) }
|
||||
|
||||
endpoints = network_scheme['network_scheme']['endpoints']
|
||||
endpoints.delete_if { |bridge, value| delete_bridges.include?(bridge) }
|
||||
-%>
|
||||
<%= network_scheme.to_yaml %>")
|
||||
|
||||
$neutron_advanced_configuration = inline_template("<%-
|
||||
require 'yaml'
|
||||
neutron_advanced_configuration = { 'neutron_advanced_configuration' => scope.function_hiera(['neutron_advanced_configuration']) }
|
||||
neutron_advanced_configuration['neutron_advanced_configuration']['neutron_dvr'] = false
|
||||
neutron_advanced_configuration['neutron_advanced_configuration']['neutron_l2_pop'] = false
|
||||
-%>
|
||||
<%= neutron_advanced_configuration.to_yaml %>")
|
||||
|
||||
$override_testvm_image = inline_template("<%-
|
||||
require 'yaml'
|
||||
test_vm_image = {}
|
||||
test_vm_image['os_name'] = 'TinyCoreLinux'
|
||||
test_vm_image['img_path'] = '/usr/share/tcl-testvm/tcl.vmdk'
|
||||
test_vm_image['container_format'] = 'bare'
|
||||
test_vm_image['min_ram'] = '128'
|
||||
test_vm_image['disk_format'] = 'vmdk'
|
||||
test_vm_image['glance_properties'] = '--property hypervisor_type=vmware --property vmware_disktype=streamOptimized --property vmware_adaptertype=lsiLogic'
|
||||
test_vm_image['img_name'] = 'TestVM-VMDK'
|
||||
test_vm_image['public'] = 'true'
|
||||
override_testvm_image = { 'test_vm_image' => test_vm_image }
|
||||
-%>
|
||||
<%= override_testvm_image.to_yaml %>")
|
||||
|
||||
file { $override_dir:
|
||||
ensure => directory,
|
||||
} ->
|
||||
concat { $override_file:
|
||||
ensure => present,
|
||||
ensure_newline => true,
|
||||
order => 'numeric',
|
||||
replace => true,
|
||||
}
|
||||
concat::fragment{ 'quantum_settings':
|
||||
ensure => present,
|
||||
target => $override_file,
|
||||
content => regsubst($neutron_config,'neutron_config','quantum_settings'),
|
||||
order => '01'
|
||||
}
|
||||
concat::fragment{ 'neutron_config':
|
||||
ensure => present,
|
||||
target => $override_file,
|
||||
content => regsubst($neutron_config,'---',''),
|
||||
order => '05'
|
||||
}
|
||||
concat::fragment{ 'network_metadata':
|
||||
ensure => present,
|
||||
target => $override_file,
|
||||
content => regsubst($network_metadata,'---',''),
|
||||
order => '10'
|
||||
}
|
||||
concat::fragment{ 'network_scheme':
|
||||
ensure => present,
|
||||
target => $override_file,
|
||||
content => regsubst($network_scheme,'---',''),
|
||||
order => '20'
|
||||
}
|
||||
concat::fragment{ 'neutron_advanced_configuration':
|
||||
ensure => present,
|
||||
target => $override_file,
|
||||
content => regsubst($neutron_advanced_configuration,'---',''),
|
||||
order => '30'
|
||||
}
|
||||
concat::fragment{ 'override-testvm-image':
|
||||
ensure => present,
|
||||
target => $override_file,
|
||||
content => regsubst($override_testvm_image,'---',''),
|
||||
order => '40'
|
||||
}
|
||||
|
||||
file_line {"${plugin_name}_hiera_override":
|
||||
path => '/etc/hiera.yaml',
|
||||
line => " - override/${plugin_name}",
|
||||
after => ' - override/module/%{calling_module}',
|
||||
}
|
||||
file { $override_dir:
|
||||
ensure => directory,
|
||||
}
|
||||
hiera_overrides($override_file)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user