Vendor the external cookbooks
Knife-Zero doesn't include Berkshelf support, so vendoring everything in the repo is convenient again
This commit is contained in:
78
cookbooks/mariadb/libraries/mariadb_helper.rb
Normal file
78
cookbooks/mariadb/libraries/mariadb_helper.rb
Normal file
@@ -0,0 +1,78 @@
|
||||
# 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
|
||||
21
cookbooks/mariadb/libraries/matchers.rb
Normal file
21
cookbooks/mariadb/libraries/matchers.rb
Normal file
@@ -0,0 +1,21 @@
|
||||
if defined?(ChefSpec)
|
||||
def add_mariadb_configuration(resource_name)
|
||||
ChefSpec::Matchers::ResourceMatcher
|
||||
.new(:mariadb_configuration, :add, resource_name)
|
||||
end
|
||||
|
||||
def remove_mariadb_configuration(resource_name)
|
||||
ChefSpec::Matchers::ResourceMatcher
|
||||
.new(:mariadb_configuration, :remove, resource_name)
|
||||
end
|
||||
|
||||
def add_mariadb_replication(resource_name)
|
||||
ChefSpec::Matchers::ResourceMatcher
|
||||
.new(:mariadb_replication, :add, resource_name)
|
||||
end
|
||||
|
||||
def remove_mariadb_replication(resource_name)
|
||||
ChefSpec::Matchers::ResourceMatcher
|
||||
.new(:mariadb_replication, :remove, resource_name)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user