2019-07-01 10:15:24 -04:00

110 lines
2.6 KiB
Ruby

def service_user
value_for_platform_family(
%w(suse fedora rhel amazon) => 'memcached',
'debian' => 'memcache',
'default' => 'nobody'
)
end
def service_group
value_for_platform_family(
%w(suse fedora rhel amazon) => 'memcached',
'debian' => 'memcache',
'default' => 'nogroup'
)
end
def binary_path
new_resource.binary_path || value_for_platform_family(
'suse' => '/usr/sbin/memcached',
'default' => '/usr/bin/memcached'
)
end
def lock_dir
value_for_platform_family(
%w(rhel fedora suse amazon) => '/var/lock/subsys',
'default' => '/var/lock'
)
end
# if the instance name is memcached don't spit out memcached_memcached
def memcached_instance_name
new_resource.instance_name == 'memcached' ? 'memcached' : "memcached_#{new_resource.instance_name}"
end
def disable_default_memcached_instance
return unless new_resource.disable_default_instance
service 'disable default memcached' do
service_name 'memcached'
action [:stop, :disable]
not_if { new_resource.instance_name == 'memcached' }
end
end
def remove_default_memcached_configs
return unless new_resource.remove_default_config
%w(/etc/memcached.conf /etc/sysconfig/memcached /etc/default/memcached).each do |f|
file f do
action :delete
end
end
end
def cli_options
options = "-m #{new_resource.memory} \
-U #{new_resource.udp_port} \
-p #{new_resource.port} \
-u #{new_resource.user} \
-l #{new_resource.listen} \
-c #{new_resource.maxconn} \
-I #{new_resource.max_object_size}"
options << " -o #{new_resource.experimental_options.join(',')}" unless new_resource.experimental_options.empty?
log_arg = ''
case new_resource.log_level
when 'info'
log_arg = 'v'
when 'debug'
log_arg = 'vv'
when 'trace'
log_arg = 'vvv'
end
options << " -#{log_arg}"
options << " -t #{new_resource.threads}" if new_resource.threads
options << " #{new_resource.extra_cli_options.join(' ')}" unless new_resource.extra_cli_options.empty?
options
end
def disable_legacy_runit_instance
return unless ::File.exist?("/etc/sv/#{memcached_instance_name}/run")
memcached_instance_runit memcached_instance_name do
action :remove
end
end
# choose the right platform init class
def platform_sysv_init_class
value_for_platform_family(
'debian' => Chef::Provider::Service::Init::Debian,
'default' => Chef::Provider::Service::Init::Redhat
)
end
def log_file_name
File.join(node['memcached']['logfilepath'], "#{memcached_instance_name}.log")
end
def create_log_file
file log_file_name do
user service_user
group service_group
mode '0644'
end
end