From d6ddc690de73ac355fc672ffa35b1de18f96b022 Mon Sep 17 00:00:00 2001 From: Steffen Zieger Date: Tue, 12 Nov 2024 21:40:20 +0100 Subject: [PATCH] add disable-flush-all, disable-watch and memory-file parameter (#177) --- manifests/init.pp | 3 ++ spec/classes/init_spec.rb | 48 ++++++++++++++++++++++++++ templates/memcached.conf.erb | 12 +++++++ templates/memcached_freebsd_rcconf.erb | 12 +++++++ templates/memcached_svcprop.erb | 15 +++++++- templates/memcached_sysconfig.erb | 12 +++++++ templates/memcached_windows.erb | 12 ++++++- 7 files changed, 112 insertions(+), 2 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index f5bc09c..d9fabbe 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -50,6 +50,9 @@ String $config_tmpl = $memcached::params::config_tmpl, Boolean $disable_cachedump = false, Optional[Integer] $max_reqs_per_event = undef, + Boolean $disable_flush_all = false, + Boolean $disable_watch = false, + Optional[Stdlib::Absolutepath] $memory_file = undef, ) inherits memcached::params { # Logging to syslog and file are mutually exclusive # Fail if both options are defined diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb index 9f282a5..cfcf77b 100644 --- a/spec/classes/init_spec.rb +++ b/spec/classes/init_spec.rb @@ -166,6 +166,54 @@ it { is_expected.to contain_file('/etc/memcached.conf').with_content(%r{^-l 127.0.3.1,127.0.3.2$}) } end end + + describe 'when setting disable_flush_all parameter to true' do + let :params do + { + 'disable_flush_all' => true, + } + end + + context 'on RedHat', if: facts[:os]['family'] == 'RedHat' do + it { is_expected.to contain_file('/etc/sysconfig/memcached').with_content(%r{^OPTIONS="-l 127.0.0.1 -U 0 -t \d+ --disable-flush-all }) } + end + + context 'on Debian', if: facts[:os]['family'] == 'Debian' do + it { is_expected.to contain_file('/etc/memcached.conf').with_content(%r{^--disable-flush-all$}) } + end + end + + describe 'when setting disable_watch parameter to true' do + let :params do + { + 'disable_watch' => true, + } + end + + context 'on RedHat', if: facts[:os]['family'] == 'RedHat' do + it { is_expected.to contain_file('/etc/sysconfig/memcached').with_content(%r{^OPTIONS="-l 127.0.0.1 -U 0 -t \d+ --disable-watch }) } + end + + context 'on Debian', if: facts[:os]['family'] == 'Debian' do + it { is_expected.to contain_file('/etc/memcached.conf').with_content(%r{^--disable-watch$}) } + end + end + + describe 'when setting memory_file parameter to /tmpfs_mount/memory_file' do + let :params do + { + 'memory_file' => '/tmpfs_mount/memory_file', + } + end + + context 'on RedHat', if: facts[:os]['family'] == 'RedHat' do + it { is_expected.to contain_file('/etc/sysconfig/memcached').with_content(%r{^OPTIONS="-l 127.0.0.1 -U 0 -t \d+ --memory-file=/tmpfs_mount/memory_file }) } + end + + context 'on Debian', if: facts[:os]['family'] == 'Debian' do + it { is_expected.to contain_file('/etc/memcached.conf').with_content(%r{^--memory-file=/tmpfs_mount/memory_file$}) } + end + end end end end diff --git a/templates/memcached.conf.erb b/templates/memcached.conf.erb index 22ef4fa..3fc3f92 100644 --- a/templates/memcached.conf.erb +++ b/templates/memcached.conf.erb @@ -105,3 +105,15 @@ logfile <%= @logfile -%> <% if @max_reqs_per_event -%> -R <%= @max_reqs_per_event %> <% end -%> + +<% if @disable_flush_all -%> +--disable-flush-all +<% end -%> + +<% if @disable_watch -%> +--disable-watch +<% end -%> + +<% if @memory_file -%> +--memory-file=<%= @memory_file %> +<% end -%> diff --git a/templates/memcached_freebsd_rcconf.erb b/templates/memcached_freebsd_rcconf.erb index 4e8a5df..1b9b226 100644 --- a/templates/memcached_freebsd_rcconf.erb +++ b/templates/memcached_freebsd_rcconf.erb @@ -79,6 +79,18 @@ end if @max_reqs_per_event flags << "-R #{@max_reqs_per_event}" end + +if @disable_flush_all + flags << "--disable-flush-all" +end + +if @disable_watch + flags << "--disable-watch" +end + +if @memory_file + flags << "--memory-file=#{@memory_file}" +end -%> memcached_enable="<%= enabled %>" memcached_flags="<%= flags.join(" ") %>" diff --git a/templates/memcached_svcprop.erb b/templates/memcached_svcprop.erb index 9a38a4f..9f2aac4 100644 --- a/templates/memcached_svcprop.erb +++ b/templates/memcached_svcprop.erb @@ -92,5 +92,18 @@ end if @max_reqs_per_event result << '"-R" "' + @max_reqs_per_event.to_s + '"' -end -%> +end + +if @disable_flush_all + result << '"--disable-flush-all"' +end + +if @disable_watch + result << '"--disable-watch"' +end + +if @memory_file + result << '"--memory-file=' + @memory_file + '"' +end +-%> <%= result.join(' ') -%> diff --git a/templates/memcached_sysconfig.erb b/templates/memcached_sysconfig.erb index d19ea95..bf41b3b 100644 --- a/templates/memcached_sysconfig.erb +++ b/templates/memcached_sysconfig.erb @@ -47,6 +47,18 @@ if @use_sasl result << '-S' end +if @disable_flush_all + result << '--disable-flush-all' +end + +if @disable_watch + result << '--disable-watch' +end + +if @memory_file + result << '--memory-file=' + @memory_file +end + if !@logstdout # log to syslog via logger if @syslog && !@logfile diff --git a/templates/memcached_windows.erb b/templates/memcached_windows.erb index 715bd78..14a7216 100644 --- a/templates/memcached_windows.erb +++ b/templates/memcached_windows.erb @@ -39,5 +39,15 @@ if @disable_cachedump end if @max_reqs_per_event result << '-R' + @max_reqs_per_event.to_s -end -%> +end +if @disable_flush_all + result << '--disable-flush-all' +end +if @disable_watch + result << '--disable-watch' +end +if @memory_file + result << '--memory-file=' + @memory_file +end +-%> c:\memcached\memcached.exe -d runservice <%= result.join(' ') %>