Skip to content

Commit

Permalink
enhance logging support per location: adding access_log & log_not_fou…
Browse files Browse the repository at this point in the history
…nd directives

adding documentation comments

adding support for include directive in map (voxpupuli#1149)

* adding support for include directive in map

* change param name includes to include_files to keep naming consistent with the other manifests
adding test to ensure empty value , single and multiple inclusions works correctly

* fix rubocop offenses

adding support for proxy_cache_bypass and proxy_cache_lock (voxpupuli#1150)

* adding support for proxy_cache_bypass and proxy_cache_lock

* adding tests and restrict proxy_cache_lock to enum

fixing access_log, adding error_log and adding tests

access_log: adding format_log to stay consistent with server declaration: when using it just disable logging, error_log: adding error_level to be able to set a different error level per location if needed); passing off disable the error_log

changing type to Optional[Variant[Array, String]] for access_log & error_log to handle multiple declaration

changing type to Optional[Variant[Array, String]] for access_log & error_log to handle multiple declaration
  • Loading branch information
ceonizm committed Feb 7, 2020
1 parent 875b5d3 commit f17c1ba
Show file tree
Hide file tree
Showing 2 changed files with 130 additions and 61 deletions.
124 changes: 63 additions & 61 deletions manifests/resource/location.pp
Original file line number Diff line number Diff line change
Expand Up @@ -94,8 +94,8 @@
# of off.
# [*proxy_cache_valid*] - This directive sets the time for caching
# different replies.
# [*proxy_cache_lock*] - This directive sets the locking mechanism for pouplating cache.
# [*proxy_cache_bypass*] - Defines conditions which the response will not be cached
# [*proxy_cache_lock*] - This directive sets the locking mechanism for pouplating cache.
# [*proxy_cache_bypass*] - Defines conditions which the response will not be cached
# [*proxy_method*] - If defined, overrides the HTTP method of the
# request to be passed to the backend.
# [*proxy_http_version*] - Sets the proxy http version
Expand All @@ -119,6 +119,7 @@
# [*flv*] - Indicates whether or not this loation can be
# used for flv streaming. Default: false
# [*expires*] - Setup expires time for locations content
# [*add_header*] - Hash: Adds headers to the location block. If any are specified, locations will no longer inherit headers from the parent server context
# [*access_log*] - disable or override the logging in access_log (log format can be set with $format_log)
# [*error_log*] - override the error_log for this location
# [*log_not_found*] - enable or disable the logging of not found errors in error_log
Expand Down Expand Up @@ -184,19 +185,19 @@

define nginx::resource::location (
Enum['present', 'absent'] $ensure = 'present',
Boolean $internal = false,
String $location = $name,
Variant[String[1],Array[String[1],1]] $server = undef,
Optional[String] $www_root = undef,
Optional[String] $autoindex = undef,
Boolean $internal = false,
String $location = $name,
Variant[String[1], Array[String[1], 1]] $server = undef,
Optional[String] $www_root = undef,
Optional[String] $autoindex = undef,
Optional[Enum['on', 'off']] $autoindex_exact_size = undef,
Optional[Enum['html', 'xml', 'json', 'jsonp']] $autoindex_format = undef,
Optional[Enum['on', 'off']] $autoindex_localtime = undef,
Array $index_files = [
Array $index_files = [
'index.html',
'index.htm',
'index.php'],
Optional[String] $proxy = undef,
Optional[String] $proxy = undef,
Optional[String] $proxy_redirect = $nginx::proxy_redirect,
String $proxy_read_timeout = $nginx::proxy_read_timeout,
String $proxy_connect_timeout = $nginx::proxy_connect_timeout,
Expand All @@ -206,61 +207,61 @@
Array $proxy_pass_header = $nginx::proxy_pass_header,
Array $proxy_ignore_header = $nginx::proxy_ignore_header,
Optional[String] $proxy_next_upstream = undef,
Optional[String] $fastcgi = undef,
Optional[String] $fastcgi_index = undef,
Optional[Hash] $fastcgi_param = undef,
Optional[String] $fastcgi = undef,
Optional[String] $fastcgi_index = undef,
Optional[Hash] $fastcgi_param = undef,
String $fastcgi_params = "${nginx::conf_dir}/fastcgi.conf",
Optional[String] $fastcgi_script = undef,
Optional[String] $fastcgi_split_path = undef,
Optional[String] $uwsgi = undef,
Optional[Hash] $uwsgi_param = undef,
String $uwsgi_params = "${nginx::config::conf_dir}/uwsgi_params",
Optional[String] $uwsgi_read_timeout = undef,
Boolean $ssl = false,
Boolean $ssl_only = false,
Optional[String] $location_alias = undef,
Optional[String] $fastcgi_script = undef,
Optional[String] $fastcgi_split_path = undef,
Optional[String] $uwsgi = undef,
Optional[Hash] $uwsgi_param = undef,
String $uwsgi_params = "${nginx::config::conf_dir}/uwsgi_params",
Optional[String] $uwsgi_read_timeout = undef,
Boolean $ssl = false,
Boolean $ssl_only = false,
Optional[String] $location_alias = undef,
Optional[String[1]] $limit_zone = undef,
Optional[Enum['any', 'all']] $location_satisfy = undef,
Optional[Array] $location_allow = undef,
Optional[Array] $location_deny = undef,
Optional[Boolean ] $stub_status = undef,
Optional[Variant[String, Array]] $raw_prepend = undef,
Optional[Variant[String, Array]] $raw_append = undef,
Optional[Hash] $location_custom_cfg = undef,
Optional[Hash] $location_cfg_prepend = undef,
Optional[Hash] $location_cfg_append = undef,
Optional[Hash] $location_custom_cfg_prepend = undef,
Optional[Hash] $location_custom_cfg_append = undef,
Optional[Array] $include = undef,
Optional[Array] $try_files = undef,
Optional[String] $proxy_cache = undef,
Optional[String] $proxy_cache_key = undef,
Optional[String] $proxy_cache_use_stale = undef,
Optional[Enum['on', 'off']] $proxy_cache_lock = undef,
Optional[Variant[Array, String]] $proxy_cache_valid = undef,
Optional[Variant[Array, String]] $proxy_cache_bypass = undef,
Optional[String] $proxy_method = undef,
Optional[String] $proxy_http_version = undef,
Optional[String] $proxy_set_body = undef,
Optional[Enum['on', 'off']] $proxy_buffering = undef,
Optional[Enum['any', 'all']] $location_satisfy = undef,
Optional[Array] $location_allow = undef,
Optional[Array] $location_deny = undef,
Optional[Boolean ] $stub_status = undef,
Optional[Variant[String, Array]] $raw_prepend = undef,
Optional[Variant[String, Array]] $raw_append = undef,
Optional[Hash] $location_custom_cfg = undef,
Optional[Hash] $location_cfg_prepend = undef,
Optional[Hash] $location_cfg_append = undef,
Optional[Hash] $location_custom_cfg_prepend = undef,
Optional[Hash] $location_custom_cfg_append = undef,
Optional[Array] $include = undef,
Optional[Array] $try_files = undef,
Optional[String] $proxy_cache = undef,
Optional[String] $proxy_cache_key = undef,
Optional[String] $proxy_cache_use_stale = undef,
Optional[Enum['on', 'off']] $proxy_cache_lock = undef,
Optional[Variant[Array, String]] $proxy_cache_valid = undef,
Optional[Variant[Array, String]] $proxy_cache_bypass = undef,
Optional[String] $proxy_method = undef,
Optional[String] $proxy_http_version = undef,
Optional[String] $proxy_set_body = undef,
Optional[Enum['on', 'off']] $proxy_buffering = undef,
Optional[Nginx::Size] $proxy_max_temp_file_size = undef,
Optional[Nginx::Size] $proxy_busy_buffers_size = undef,
Optional[Enum['on', 'off']] $absolute_redirect = undef,
Optional[String] $auth_basic = undef,
Optional[String] $auth_basic_user_file = undef,
Optional[String] $auth_request = undef,
Array $rewrite_rules = [],
Integer[401,599] $priority = 500,
Boolean $mp4 = false,
Boolean $flv = false,
Optional[String] $expires = undef,
Hash $add_header = {},
$format_log = 'combined',
$error_level = 'error',
Optional[Variant[Array, String]] $access_log = undef,
Optional[Enum['on', 'off']] $log_not_found = undef,
Optional[Variant[Array, String]] $error_log = undef,
Hash $add_header = {},
Optional[String] $auth_basic = undef,
Optional[String] $auth_basic_user_file = undef,
Optional[String] $auth_request = undef,
Array $rewrite_rules = [],
Integer[401, 599] $priority = 500,
Boolean $mp4 = false,
Boolean $flv = false,
Optional[String] $expires = undef,
Hash $add_header = {},
$format_log = 'combined',
$error_level = 'error',
Optional[Enum['on', 'off']] $log_not_found = undef,
Hash $add_header = {},
Optional[Variant[Array, String]] $access_log = undef,
Optional[Variant[Array, String]] $error_log = undef
) {

if !defined(Class['nginx']) {
Expand Down Expand Up @@ -300,7 +301,7 @@
$ensure == 'present' and
$fastcgi != undef and
!defined(File[$fastcgi_params]) and
$fastcgi_params == "${nginx::conf_dir}/fastcgi.conf"
$fastcgi_params == "${nginx::conf_dir}/fastcgi.conf"
) {
file { $fastcgi_params:
ensure => 'present',
Expand All @@ -309,7 +310,8 @@
}
}

if $ensure == 'present' and $uwsgi != undef and !defined(File[$uwsgi_params]) and $uwsgi_params == "${nginx::conf_dir}/uwsgi_params" {
if $ensure == 'present' and $uwsgi != undef and !defined(File[$uwsgi_params]) and $uwsgi_params == "${nginx::conf_dir}
/uwsgi_params" {
file { $uwsgi_params:
ensure => 'present',
mode => '0644',
Expand Down
67 changes: 67 additions & 0 deletions spec/defines/resource_location_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1031,6 +1031,73 @@
value: '16k',
match: %r{\s+proxy_busy_buffers_size\s+16k;}
}
},
{
title: 'access_log undef',
attr: 'access_log',
value: :undef,
notmatch: %r{\s+access_log\s+.+;}
},
{
title: 'disabling access_log ',
attr: 'access_log',
value: 'off',
match: %r{\s+access_log\s+off;}
},
{
title: 'override access_log ',
attr: 'access_log',
value: '/var/log/nginx/specific-location.log',
match: %r{\s+access_log\s+/var/log/nginx/specific-location.log combined;}
},
{
title: 'override access_log with an array',
attr: 'access_log',
value: [
'/var/log/nginx/specific-location.log',
'syslog:10.0.0.1'
],
match: [
%r{\s+access_log\s+/var/log/nginx/specific-location.log combined;},
%r{\s+access_log\s+syslog:10\.0\.0\.1 combined;}
]
},
{
title: 'enabling logging errors not found ',
attr: 'log_not_found',
value: 'off',
match: %r{\s+log_not_found\s+off;}
},
{
title: 'enabling logging errors not found ',
attr: 'log_not_found',
value: 'on',
match: %r{\s+log_not_found\s+on;}
},
{
title: 'disabling error_log ',
attr: 'error_log',
value: 'off',
match: %r{\s+error_log\s+off;}
},
{
title: 'overriding error_log ',
attr: 'error_log',
value: '/my-error_log',
match: %r{\s+error_log\s+/my-error_log error;}
},
{
title: 'overriding error_log with an array',
attr: 'error_log',
value: [
'/my-error_log',
'syslog:10.0.0.1'
],
match: [
%r{\s+error_log\s+/my-error_log error;},
%r{\s+error_log\s+syslog:10\.0\.0\.1 error;}
]
}
].each do |param|
context "when #{param[:attr]} is #{param[:value]}" do
let(:default_params) { { location: 'location', proxy: 'proxy_value', server: 'server1' } }
Expand Down

0 comments on commit f17c1ba

Please sign in to comment.