Skip to content

Commit

Permalink
feat(appswerver): Add new appserver config params for passenger (ajgo…
Browse files Browse the repository at this point in the history
…n#227)

* chore: add new webserver_config_params

* style: Fixed failing rubocop lints.

* chore: add PassengerMaxPreloaderIdleTime params to webserver_config

* fix(appserver): fixed constants and error document values where the syntax violates the convention

* test: added webserver_config_params test
  • Loading branch information
qazfff authored and ajgon committed Dec 12, 2019
1 parent e41ffca commit 17fa4ea
Show file tree
Hide file tree
Showing 4 changed files with 86 additions and 2 deletions.
25 changes: 25 additions & 0 deletions docs/source/attributes.rst
Expand Up @@ -564,6 +564,31 @@ passenger
made to your web server. Useful for certain hybrid static/dynamic
web sites.

- ``app['appserver']['pool_idle_time']``

- **Type:** Integer
- **Default:** 300
- Sets the ``PoolIdleTime`` parameter

- ``app['appserver']['max_request_queue_size']``

- **Type:** Integer
- **Default:** 100
- Sets the ``MaxRequestQueueSize`` parameter

- ``app['appserver']['error_document']``

- **Type:** Hash
- **Default:** off
- Sets the { "status": "file" } parameter
e.g. { "500": "500.html", "503": "503.html" }

- ``app['appserver']['passenger_max_preloader_idle_time']``

- **Type:** Integer
- **Default:** 300
- Sets the ``PassengerMaxPreloaderIdleTime`` parameter

webserver
~~~~~~~~~

Expand Down
13 changes: 11 additions & 2 deletions libraries/drivers_appserver_passenger.rb
Expand Up @@ -5,7 +5,16 @@ module Appserver
class Passenger < Drivers::Appserver::Base
adapter :passenger
allowed_engines :passenger
output filter: %i[max_pool_size min_instances mount_point]
WEBSERVER_CONFIG_PARAMS = %i[
max_pool_size
min_instances
mount_point
pool_idle_time
max_request_queue_size
error_document
passenger_max_preloader_idle_time
].freeze
output filter: WEBSERVER_CONFIG_PARAMS

def manual_action(action); end

Expand All @@ -17,7 +26,7 @@ def add_appserver_service_context; end

def webserver_config_params
o = out
Hash[%i[max_pool_size min_instances mount_point].map { |k| [k, o[k]] }].reject { |_k, v| v.nil? }
Hash[WEBSERVER_CONFIG_PARAMS.map { |k| [k, o[k]] }].reject { |_k, v| v.nil? }
end
end
end
Expand Down
18 changes: 18 additions & 0 deletions spec/unit/recipes/configure_spec.rb
Expand Up @@ -879,6 +879,10 @@
deploy['dummy_project']['appserver']['max_pool_size'] = 10
deploy['dummy_project']['appserver']['min_instances'] = 5
deploy['dummy_project']['appserver']['mount_point'] = '/some/mount/point'
deploy['dummy_project']['appserver']['pool_idle_time'] = 300
deploy['dummy_project']['appserver']['max_request_queue_size'] = 100
deploy['dummy_project']['appserver']['error_document'] = { "503": '503.html', "504": '504.html' }
deploy['dummy_project']['appserver']['passenger_max_preloader_idle_time'] = 300
deploy['dummy_project']['webserver']['adapter'] = 'apache2'
deploy['dummy_project']['global']['environment'] = 'production'
solo_node.set['deploy'] = deploy
Expand Down Expand Up @@ -927,6 +931,20 @@
expect(chef_run)
.to render_file("/etc/apache2/sites-available/#{aws_opsworks_app['shortname']}.conf")
.with_content('PassengerMinInstances 5')
expect(chef_run)
.to render_file("/etc/apache2/sites-available/#{aws_opsworks_app['shortname']}.conf")
.with_content('PoolIdleTime 300')
expect(chef_run)
.to render_file("/etc/apache2/sites-available/#{aws_opsworks_app['shortname']}.conf")
.with_content('MaxRequestQueueSize 100')
expect(chef_run)
.to render_file("/etc/apache2/sites-available/#{aws_opsworks_app['shortname']}.conf")
.with_content('PassengerErrorOverride on')
.with_content('ErrorDocument 503 /503.html')
.with_content('ErrorDocument 504 /504.html')
expect(chef_run)
.to render_file("/etc/apache2/sites-available/#{aws_opsworks_app['shortname']}.conf")
.with_content('PassengerMaxPreloaderIdleTime 300')
expect(chef_run)
.to render_file("/etc/apache2/sites-available/#{aws_opsworks_app['shortname']}.conf")
expect(chef_run)
Expand Down
32 changes: 32 additions & 0 deletions templates/default/appserver.apache2.passenger.conf.erb
Expand Up @@ -55,6 +55,15 @@ Header always unset "X-Powered-By"
<% if @appserver_config[:min_instances] -%>
PassengerMinInstances <%= @appserver_config[:min_instances] %>
<% end %>
<% if @appserver_config[:pool_idle_time] -%>
PassengerPoolIdleTime <%= @appserver_config[:pool_idle_time] %>
<% end %>
<% if @appserver_config[:max_request_queue_size] -%>
PassengerMaxRequestQueueSize <%= @appserver_config[:max_request_queue_size] %>
<% end %>
<% if @appserver_config[:passenger_max_preloader_idle_time] -%>
PassengerMaxPreloaderIdleTime <%= @appserver_config[:passenger_max_preloader_idle_time] %>
<% end %>

<Location <%= @appserver_config[:mount_point] %>>
PassengerAppEnv <%= @deploy_env %>
Expand All @@ -63,6 +72,13 @@ Header always unset "X-Powered-By"
</Location>

RewriteEngine on

<% if @appserver_config[:error_document] -%>
PassengerErrorOverride on
<% @appserver_config[:error_document].each do | status, file | %>
ErrorDocument <%= status %> /<%= file %>
<% end %>
<% end %>
<% end %>
<%= @out[:extra_config] %>
Expand Down Expand Up @@ -138,6 +154,15 @@ SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
<% if @appserver_config[:min_instances] -%>
PassengerMinInstances <%= @appserver_config[:min_instances] %>
<% end %>
<% if @appserver_config[:pool_idle_time] -%>
PassengerPoolIdleTime <%= @appserver_config[:pool_idle_time] %>
<% end %>
<% if @appserver_config[:max_request_queue_size] -%>
PassengerMaxRequestQueueSize <%= @appserver_config[:max_request_queue_size] %>
<% end %>
<% if @appserver_config[:passenger_max_preloader_idle_time] -%>
PassengerMaxPreloaderIdleTime <%= @appserver_config[:passenger_max_preloader_idle_time] %>
<% end %>

<Location <%= @appserver_config[:mount_point] %>>
PassengerAppEnv <%= @deploy_env %>
Expand All @@ -149,6 +174,13 @@ SSLStaplingCache "shmcb:logs/stapling-cache(150000)"

RewriteEngine on

<% if @appserver_config[:error_document] -%>
PassengerErrorOverride on
<% @appserver_config[:error_document].each do | status, file | %>
ErrorDocument <%= status %> /<%= file %>
<% end %>
<% end %>
<%= @out[:extra_config_ssl] %>

</VirtualHost>
Expand Down

0 comments on commit 17fa4ea

Please sign in to comment.