Fix scope of vhost template variables

Dynamic scoping for variables in ERB templates was removed in puppet
4[1] which means that the variables defined in the
openstackci::logserver class cannot be found when it is referenced in
the httpd::vhost defined type and will be evaluated as nil when
puppet runs. Use scope.lookupvar instead to be explicit about the
variable's source.

[1] https://puppet.com/docs/puppet/4.10/lang_updating_manifests.html#dynamic-scoping-in-erb

Change-Id: Iea37fb14bc332cbf2d598b908bce997786814924
This commit is contained in:
Colleen Murphy 2018-04-26 21:33:35 +02:00
parent 7a4e625ca1
commit ef5e2f1034
2 changed files with 16 additions and 16 deletions

View File

@ -57,14 +57,14 @@ NameVirtualHost <%= @vhost_name %>:<%= @port %>
Satisfy Any
</Directory>
<% @readmes.each do |pattern, helpfile| -%>
<% scope.lookupvar('::openstackci::logserver::readmes').each do |pattern, helpfile| -%>
<Directory <%= @docroot %><%= pattern %>>
ReadmeName <%= helpfile %>
</Directory>
<% end -%>
RewriteEngine On
<% if @ara_middleware -%>
<% if scope.lookupvar('::openstackci::logserver::ara_middleware') -%>
<Directory "/usr/local/bin">
<Files "ara-wsgi-sqlite">
Allow from all
@ -73,20 +73,20 @@ NameVirtualHost <%= @vhost_name %>:<%= @port %>
</Directory>
# ARA sqlite middleware configuration
# See docs for details: https://ara.readthedocs.io/en/latest/advanced.html
SetEnv ARA_WSGI_TMPDIR_MAX_AGE <%= @ara_middleware_tmpdir_max_age %>
SetEnv ARA_WSGI_TMPDIR_MAX_AGE <%= scope.lookupvar('::openstackci::logserver::ara_middleware_tmpdir_max_age') %>
SetEnv ARA_WSGI_LOG_ROOT <%= @docroot %>
SetEnv ARA_WSGI_DATABASE_DIRECTORY <%= @ara_middleware_database_directory %>
SetEnv ARA_WSGI_DATABASE_DIRECTORY <%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %>
# Redirect .*/<%= @ara_middleware_database_directory %> to the ARA sqlite wsgi middleware
# Redirect .*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %> to the ARA sqlite wsgi middleware
# This middleware automatically loads the ARA web application with the
# database located at .*/<%= @ara_middleware_database_directory %>/ansible.sqlite.
# database located at .*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %>/ansible.sqlite.
# If we get a request directly to the database file, don't load the middleware
# so that users can download the raw database if they wish.
WSGIScriptAliasMatch ^.*/<%= @ara_middleware_database_directory %>(?!/ansible.sqlite) /usr/local/bin/ara-wsgi-sqlite
WSGIScriptAliasMatch ^.*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %>(?!/ansible.sqlite) /usr/local/bin/ara-wsgi-sqlite
# Everything beyond this point is rewritten to htmlify.
# Make sure we don't do that for dynamic ARA reports.
RewriteCond %{REQUEST_URI} ^.*/<%= @ara_middleware_database_directory %> [NC]
RewriteCond %{REQUEST_URI} ^.*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %> [NC]
RewriteRule .* - [L]
<% end -%>

View File

@ -67,7 +67,7 @@ NameVirtualHost <%= @vhost_name %>:<%= @port %>
Satisfy Any
</Directory>
<% @readmes.each do |pattern, helpfile| -%>
<% scope.lookupvar('::openstackci::logserver::readmes').each do |pattern, helpfile| -%>
<Directory <%= @docroot %><%= pattern %>>
ReadmeName <%= helpfile %>
</Directory>
@ -78,7 +78,7 @@ NameVirtualHost <%= @vhost_name %>:<%= @port %>
</Directory>
RewriteEngine On
<% if @ara_middleware -%>
<% if scope.lookupvar('::openstackci::logserver::ara_middleware') -%>
<Directory "/usr/local/bin">
<Files "ara-wsgi-sqlite">
Allow from all
@ -87,20 +87,20 @@ NameVirtualHost <%= @vhost_name %>:<%= @port %>
</Directory>
# ARA sqlite middleware configuration
# See docs for details: https://ara.readthedocs.io/en/latest/advanced.html
SetEnv ARA_WSGI_TMPDIR_MAX_AGE <%= @ara_middleware_tmpdir_max_age %>
SetEnv ARA_WSGI_TMPDIR_MAX_AGE <%= scope.lookupvar('::openstackci::logserver::ara_middleware_tmpdir_max_age') %>
SetEnv ARA_WSGI_LOG_ROOT <%= @docroot %>
SetEnv ARA_WSGI_DATABASE_DIRECTORY <%= @ara_middleware_database_directory %>
SetEnv ARA_WSGI_DATABASE_DIRECTORY <%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %>
# Redirect .*/<%= @ara_middleware_database_directory %> to the ARA sqlite wsgi middleware
# Redirect .*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %> to the ARA sqlite wsgi middleware
# This middleware automatically loads the ARA web application with the
# database located at .*/<%= @ara_middleware_database_directory %>/ansible.sqlite.
# database located at .*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %>/ansible.sqlite.
# If we get a request directly to the database file, don't load the middleware
# so that users can download the raw database if they wish.
WSGIScriptAliasMatch ^.*/<%= @ara_middleware_database_directory %>(?!/ansible.sqlite) /usr/local/bin/ara-wsgi-sqlite
WSGIScriptAliasMatch ^.*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %>(?!/ansible.sqlite) /usr/local/bin/ara-wsgi-sqlite
# Everything beyond this point is rewritten to htmlify.
# Make sure we don't do that for dynamic ARA reports.
RewriteCond %{REQUEST_URI} ^.*/<%= @ara_middleware_database_directory %> [NC]
RewriteCond %{REQUEST_URI} ^.*/<%= scope.lookupvar('::openstackci::logserver::ara_middleware_database_directory') %> [NC]
RewriteRule .* - [L]
<% end -%>