chef/cookbooks/mariadb/libraries/mariadb_helper.rb
Greg Karékinian a32f34b408 Vendor the external cookbooks
Knife-Zero doesn't include Berkshelf support, so vendoring everything in
the repo is convenient again
2019-10-13 19:17:42 +02:00

79 lines
2.6 KiB
Ruby

# MariaDB is a module containing mariadb cookbook helper
module MariaDB
# Helper module for mariadb cookbook
module Helper
require 'socket'
require 'timeout'
def do_port_connect(ip, port)
s = TCPSocket.new(ip, port)
s.close
true
rescue Errno::ECONNREFUSED, Errno::EHOSTUNREACH
false
end
def port_open?(ip, port)
begin
Timeout.timeout(5) do
return do_port_connect(ip, port)
end
rescue Timeout::Error
false
end
false
end
# Trying to determine if we need to restart the mysql service
def mariadb_service_restart_required?(ip, port, _socket)
restart = false
restart = true unless port_open?(ip, port)
restart
end
# Helper to determine if running operating system shipped a package for
# mariadb server & client. No galera shipped in any os yet.
# @param [String] os_platform Indicate operating system type, e.g. centos
# @param [String] os_version Indicate operating system version, e.g. 7.0
def os_package_provided?(os_platform, os_version)
package_provided = false
case os_platform
when 'centos', 'redhat'
package_provided = true if os_version.to_i == 7
when 'fedora'
package_provided = true if os_version.to_i >= 19
end
package_provided
end
# Helper to determine mariadb server service name shipped by native package
# If no native package available on this platform, return nil
# @param [String] os_platform Indicate operating system type, e.g. centos
# @param [String] os_version Indicate operating system version, e.g. 7.0
def os_service_name(os_platform, os_version)
return nil unless os_package_provided?(os_platform, os_version)
service_name = 'mariadb'
if os_platform == 'fedora' && os_version.to_i >= 19
service_name = 'mysqld'
end
service_name
end
# Helper to determine whether to use os native package
# @param [Boolean] prefer_os Indicate whether to prefer os native package
# @param [String] os_platform Indicate operating system type, e.g. centos
# @param [String] os_version Indicate operating system version, e.g. 7.0
def use_os_native_package?(prefer_os, os_platform, os_version)
return false unless prefer_os
if os_package_provided?(os_platform, os_version)
true
else
Chef::Log.warn 'prefer_os_package detected, but no native mariadb'\
" package available on #{os_platform}-#{os_version}."\
' Fall back to use community package.'
false
end
end
end
end