From a371b6312bd087c5f2d961b79a2990ec0424ecae Mon Sep 17 00:00:00 2001 From: Igor Zinovik Date: Thu, 10 Nov 2016 14:18:37 +0300 Subject: [PATCH] Provide a flag that mark existence of provider network Puppet provider does not detect presence of provider network 'admin_floating_net' and tries to create it on each deployment run. Introduce flag that will mark that network exist. Change-Id: Idf02399bef4cff4d9dcfa0f3f68f5e70466f4a87 Closes-bug: #1626927 --- .../manifests/neutron-network-create.pp | 41 +++++++++++-------- .../parser/functions/hiera_overrides.rb | 9 +++- .../parser/functions/skip_provider_network.rb | 24 +++++++++++ .../puppet/modules/nsxt/manifests/params.pp | 1 + deployment_tasks.yaml | 2 - 5 files changed, 57 insertions(+), 20 deletions(-) create mode 100644 deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/skip_provider_network.rb diff --git a/deployment_scripts/puppet/manifests/neutron-network-create.pp b/deployment_scripts/puppet/manifests/neutron-network-create.pp index e1ef054..a48e66d 100644 --- a/deployment_scripts/puppet/manifests/neutron-network-create.pp +++ b/deployment_scripts/puppet/manifests/neutron-network-create.pp @@ -18,23 +18,30 @@ $floating_net_cidr = $settings['floating_net_cidr'] $floating_net_gw = $settings['floating_net_gw'] $default_floating_net_gw = regsubst($floating_net_cidr,'^(\d+\.\d+\.\d+)\.\d+/\d+$','\1.1') -neutron_network { $floating_net : - ensure => 'present', - provider_physical_network => $settings['external_network'], - provider_network_type => 'local', - router_external => true, - tenant_name => $os_tenant_name, - shared => true, -} -neutron_subnet { "${floating_net}__subnet" : - ensure => 'present', - cidr => $floating_net_cidr, - network_name => $floating_net, - tenant_name => $os_tenant_name, - gateway_ip => pick($floating_net_gw,$default_floating_net_gw), - enable_dhcp => false, - allocation_pools => $floating_net_allocation_pool, - require => Neutron_network[$floating_net], +$skip_provider_network = try_get_value('skip_provider_network', false) + +if ! $skip_provider_network { + neutron_network { $floating_net : + ensure => 'present', + provider_physical_network => $settings['external_network'], + provider_network_type => 'local', + router_external => true, + tenant_name => $os_tenant_name, + shared => true, + } + + neutron_subnet { "${floating_net}__subnet" : + ensure => 'present', + cidr => $floating_net_cidr, + network_name => $floating_net, + tenant_name => $os_tenant_name, + gateway_ip => pick($floating_net_gw, $default_floating_net_gw), + enable_dhcp => false, + allocation_pools => $floating_net_allocation_pool, + require => Neutron_network[$floating_net], + } + + skip_provider_network($::nsxt::params::hiera_yml) } $internal_net_dns = split($settings['internal_net_dns'], ',') diff --git a/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/hiera_overrides.rb b/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/hiera_overrides.rb index 96ee545..084f24a 100644 --- a/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/hiera_overrides.rb +++ b/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/hiera_overrides.rb @@ -8,7 +8,14 @@ file name, where write new parameters in yaml format, ex: EOS ) do |args| filename = args[0] - hiera_overrides = {} + + begin + yaml_string = File.read filename + + hiera_overrides = YAML.load yaml_string + rescue Errno::ENOENT + hiera_overrides = {} + end # override neutron_advanced_configuration neutron_advanced_configuration = {} diff --git a/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/skip_provider_network.rb b/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/skip_provider_network.rb new file mode 100644 index 0000000..ef94b6c --- /dev/null +++ b/deployment_scripts/puppet/modules/nsxt/lib/puppet/parser/functions/skip_provider_network.rb @@ -0,0 +1,24 @@ +require 'yaml' + +module Puppet::Parser::Functions + newfunction(:skip_provider_network, :doc => <<-EOS +Custom function to override hiera parameters, the first argument - +file name, where write new parameters in yaml format, ex: + hiera_overrides('/etc/hiera/test.yaml') +EOS + ) do |args| + filename = args[0] + + begin + yaml_string = File.read filename + hiera_overrides = YAML.load yaml_string + rescue Errno::ENOENT + hiera_overrides = {} + end + + hiera_overrides['skip_provider_network'] = true + + # write to hiera override yaml file + File.open(filename, 'w') { |file| file.write(hiera_overrides.to_yaml) } + end +end diff --git a/deployment_scripts/puppet/modules/nsxt/manifests/params.pp b/deployment_scripts/puppet/modules/nsxt/manifests/params.pp index 763e3c0..aa8fdf8 100644 --- a/deployment_scripts/puppet/modules/nsxt/manifests/params.pp +++ b/deployment_scripts/puppet/modules/nsxt/manifests/params.pp @@ -1,5 +1,6 @@ class nsxt::params { $hiera_key = 'nsx-t' + $hiera_yml = '/etc/hiera/plugins/nsx-t.yaml' $plugin_package = 'python-vmware-nsx' $core_plugin = 'vmware_nsx.plugin.NsxV3Plugin' $nsx_plugin_dir = '/etc/neutron/plugins/vmware' diff --git a/deployment_tasks.yaml b/deployment_tasks.yaml index 36101c3..1d78358 100644 --- a/deployment_tasks.yaml +++ b/deployment_tasks.yaml @@ -257,8 +257,6 @@ - nsx-t-primary-neutron-server-start - nsx-t-configure-agents-dhcp - primary-openstack-network-agents-metadata - condition: - yaql_exp: "changed($.quantum)" parameters: puppet_manifest: puppet/manifests/neutron-network-create.pp puppet_modules: puppet/modules:/etc/puppet/modules