From 5b7e24a8eea0a6db479e85e530a554b08fa8bda2 Mon Sep 17 00:00:00 2001 From: Alexey Deryugin Date: Fri, 17 Jun 2016 14:16:36 +0300 Subject: [PATCH] Make Horizon get Neutron related parameters from Hiera Current implementation of horizon class in puppet-horizon holds well defined template for /etc/openstack_dashboard/local_settings.py that merges default neutron options with user defined options. Unfortunately only one user defined option "enable_distributed_router" gets its value from hiera, so we need to add ability to configure all available parameters using hiera. Change-Id: Ie54eaea9dccc63bd0928ec84f9c23523b22521a2 Closes-Bug: #1591406 --- .../manifests/horizon/horizon.pp | 13 ++++++-- tests/noop/spec/hosts/horizon/horizon_spec.rb | 33 ++++++++++++++----- 2 files changed, 34 insertions(+), 12 deletions(-) diff --git a/deployment/puppet/openstack_tasks/manifests/horizon/horizon.pp b/deployment/puppet/openstack_tasks/manifests/horizon/horizon.pp index 407576cbfa..9be48fa93e 100644 --- a/deployment/puppet/openstack_tasks/manifests/horizon/horizon.pp +++ b/deployment/puppet/openstack_tasks/manifests/horizon/horizon.pp @@ -43,8 +43,6 @@ class openstack_tasks::horizon::horizon { # Don't use custom backend until its code lands to MOS 9.0. $cache_backend = try_get_value($horizon_hash, 'cache_backend', 'django.core.cache.backends.memcached.MemcachedCache') - $neutron_dvr = pick($neutron_advanced_config['neutron_dvr'], false) - $ssl_hash = hiera_hash('use_ssl', {}) $internal_auth_protocol = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'protocol', 'http') $internal_auth_address = get_ssl_property($ssl_hash, {}, 'keystone', 'internal', 'hostname', [$service_endpoint, $management_vip]) @@ -53,7 +51,16 @@ class openstack_tasks::horizon::horizon { $keystone_url = "${internal_auth_protocol}://${internal_auth_address}:${internal_auth_port}/${keystone_api}" $cinder_options = {'enable_backup' => pick($storage_hash['volumes_ceph'], false)} - $neutron_options = {'enable_distributed_router' => $neutron_dvr} + $neutron_options = { + 'enable_lb' => pick($neutron_advanced_config['neutron_lb'], false), + 'enable_firewall' => pick($neutron_advanced_config['neutron_firewall'], false), + 'enable_quotas' => pick($neutron_advanced_config['neutron_quotas'], true), + 'enable_security_group' => pick($neutron_advanced_config['neutron_security_group'], true), + 'enable_vpn' => pick($neutron_advanced_config['neutron_vpn'], false), + 'enable_distributed_router' => pick($neutron_advanced_config['neutron_dvr'], false), + 'enable_ha_router' => pick($neutron_advanced_config['neutron_ha_router'], false), + 'profile_support' => pick($neutron_advanced_config['neutron_profile_support'], 'None'), + } $hypervisor_options = {'enable_quotas' => hiera('nova_quota')} $temp_root_default = '/var/lib/horizon' diff --git a/tests/noop/spec/hosts/horizon/horizon_spec.rb b/tests/noop/spec/hosts/horizon/horizon_spec.rb index 51c57e29a3..ba407ff773 100644 --- a/tests/noop/spec/hosts/horizon/horizon_spec.rb +++ b/tests/noop/spec/hosts/horizon/horizon_spec.rb @@ -75,6 +75,17 @@ describe manifest do Noop.puppet_function 'pick', horizon_hash['upload_max_size'], '10737418235' end + let(:neutron_advanced_config) { Noop.hiera_hash 'neutron_advanced_configuration', {} } + + let(:enable_lb) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_lb'], false } + let(:enable_firewall) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_firewall'], false } + let(:enable_quotas) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_quotas'], true } + let(:enable_security_group) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_security_group'], true } + let(:enable_vpn) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_vpn'], false } + let(:enable_distributed_router) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_dvr'], false } + let(:enable_ha_router) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_ha_router'], false } + let(:profile_support) { Noop.puppet_function 'pick', neutron_advanced_config['neutron_profile_support'], 'None' } + it 'contains ::horizon::wsgi::apache' do if facts[:osfamily] == 'Debian' and file_upload_max_size custom_fragment = "\n \n Order allow,deny\n Allow from all\n \n\n LimitRequestBody #{file_upload_max_size}\n\n" @@ -145,17 +156,21 @@ describe manifest do ) end - context 'with Neutron DVR', :if => Noop.hiera_structure('neutron_advanced_configuration/neutron_dvr') do - it 'should configure horizon for neutron DVR' do - should contain_class('horizon').with( - 'neutron_options' => { - 'enable_distributed_router' => Noop.hiera_structure('neutron_advanced_configuration/neutron_dvr') - } - ) - end + it 'should configure horizon to use advanced neutron options' do + should contain_class('horizon').with( + 'neutron_options' => { + 'enable_lb' => enable_lb, + 'enable_firewall' => enable_firewall, + 'enable_quotas' => enable_quotas, + 'enable_security_group' => enable_security_group, + 'enable_vpn' => enable_vpn, + 'enable_distributed_router' => enable_distributed_router, + 'enable_ha_router' => enable_ha_router, + 'profile_support' => profile_support, + } + ) end - it 'should have explicit ordering between LB classes and particular actions' do expect(graph).to ensure_transitive_dependency("Class[horizon]", "Haproxy_backend_status[keystone-public]") expect(graph).to ensure_transitive_dependency("Class[horizon]", "Haproxy_backend_status[keystone-admin]")