From 5f1ee440e828623c53ffb7b9be3b7e7357af9fd5 Mon Sep 17 00:00:00 2001 From: Rick Tuk Date: Thu, 25 Sep 2025 11:19:51 +0200 Subject: [PATCH] added helper method in mysql provider to pick mysql or mariadb binary variant based on version changed commands to use the new helper method --- lib/puppet/provider/mysql.rb | 30 ++++++++++----------- lib/puppet/provider/mysql_database/mysql.rb | 2 +- lib/puppet/provider/mysql_datadir/mysql.rb | 4 +-- lib/puppet/provider/mysql_grant/mysql.rb | 2 +- lib/puppet/provider/mysql_plugin/mysql.rb | 2 +- lib/puppet/provider/mysql_user/mysql.rb | 2 +- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/lib/puppet/provider/mysql.rb b/lib/puppet/provider/mysql.rb index e539d9b9c..64cb44a8d 100644 --- a/lib/puppet/provider/mysql.rb +++ b/lib/puppet/provider/mysql.rb @@ -37,33 +37,33 @@ class Puppet::Provider::Mysql < Puppet::Provider '/usr/mysql/5.7/lib64', ].join(':') + def self.pick_correct_binary(mysql_variant, mariadb_variant) + version = Facter.value(:mysqld_version) + if version.scan(%r{mariadb}i) && Puppet::Util::Package.versioncmp(version&.scan(%r{\d+\.\d+\.\d+})&.first, '11.0.0') >= 0 + return mariadb_variant + end + mysql_variant + end + + def pick_correct_binary(mysql_variant, mariadb_variant) + self.class.pick_correct_binary(mysql_variant, mariadb_variant) + end + # rubocop:disable Style/HashSyntax - commands :mysql_client => 'mysql' - commands :mariadb_client => 'mariadb' - commands :mysqld_service => 'mysqld' - commands :mariadbd_service => 'mariadbd' - commands :mysql_admin => 'mysqladmin' - commands :mariadb_admin => 'mariadb-admin' + commands :mysql_client => pick_correct_binary('mysql', 'mariadb') + commands :mysqld_service => pick_correct_binary('mysqld', 'mariadbd') + commands :mysql_admin => pick_correct_binary('mysqladmin', 'mariadb-admin') # rubocop:enable Style/HashSyntax def self.mysql_raw(*args) - if newer_than('mariadb' => '11.0.0') && mysqld_version_string.scan(%r{mariadb}i) - return mariadb_client(*args) - end mysql_client(*args) end def self.mysqld(*args) - if newer_than('mariadb' => '11.0.0') && mysqld_version_string.scan(%r{mariadb}i) - return mariadb_client(*args) - end mysqld_service(*args) end def self.mysqladmin(*args) - if newer_than('mariadb' => '11.0.0') && mysqld_version_string.scan(%r{mariadb}i) - return mariadb_client(*args) - end mysql_admin(*args) end diff --git a/lib/puppet/provider/mysql_database/mysql.rb b/lib/puppet/provider/mysql_database/mysql.rb index 04d95bf76..296ca4c4f 100644 --- a/lib/puppet/provider/mysql_database/mysql.rb +++ b/lib/puppet/provider/mysql_database/mysql.rb @@ -4,7 +4,7 @@ Puppet::Type.type(:mysql_database).provide(:mysql, parent: Puppet::Provider::Mysql) do desc 'Manages MySQL databases.' - commands mysql_raw: 'mysql' + commands mysql_raw: pick_correct_binary('mysql', 'mariadb') def self.instances mysql_caller('show databases', 'regular').split("\n").map do |name| diff --git a/lib/puppet/provider/mysql_datadir/mysql.rb b/lib/puppet/provider/mysql_datadir/mysql.rb index 08d6bfa14..f40a82a8d 100644 --- a/lib/puppet/provider/mysql_datadir/mysql.rb +++ b/lib/puppet/provider/mysql_datadir/mysql.rb @@ -34,8 +34,8 @@ '/usr/mysql/5.7/bin', ].join(':') - commands mysqld: 'mysqld' - optional_commands mysql_install_db: 'mysql_install_db' + commands mysqld: pick_correct_binary('mysqld', 'mariadbd') + optional_commands mysql_install_db: pick_correct_binary('mysql_install_db', 'mariadb-install-db') # rubocop:disable Lint/UselessAssignment def create name = @resource[:name] diff --git a/lib/puppet/provider/mysql_grant/mysql.rb b/lib/puppet/provider/mysql_grant/mysql.rb index 20af17151..a2c2b4af6 100644 --- a/lib/puppet/provider/mysql_grant/mysql.rb +++ b/lib/puppet/provider/mysql_grant/mysql.rb @@ -4,7 +4,7 @@ Puppet::Type.type(:mysql_grant).provide(:mysql, parent: Puppet::Provider::Mysql) do desc 'Set grants for users in MySQL.' - commands mysql_raw: 'mysql' + commands mysql_raw: pick_correct_binary('mysql', 'mariadb') def self.instances instance_configs = {} diff --git a/lib/puppet/provider/mysql_plugin/mysql.rb b/lib/puppet/provider/mysql_plugin/mysql.rb index 82db9f941..dbc2bdc66 100644 --- a/lib/puppet/provider/mysql_plugin/mysql.rb +++ b/lib/puppet/provider/mysql_plugin/mysql.rb @@ -4,7 +4,7 @@ Puppet::Type.type(:mysql_plugin).provide(:mysql, parent: Puppet::Provider::Mysql) do desc 'Manages MySQL plugins.' - commands mysql_raw: 'mysql' + commands mysql_raw: pick_correct_binary('mysql', 'mariadb') def self.instances mysql_caller('show plugins', 'regular').split("\n").map do |line| diff --git a/lib/puppet/provider/mysql_user/mysql.rb b/lib/puppet/provider/mysql_user/mysql.rb index b552a5620..12da1030d 100644 --- a/lib/puppet/provider/mysql_user/mysql.rb +++ b/lib/puppet/provider/mysql_user/mysql.rb @@ -3,7 +3,7 @@ require File.expand_path(File.join(File.dirname(__FILE__), '..', 'mysql')) Puppet::Type.type(:mysql_user).provide(:mysql, parent: Puppet::Provider::Mysql) do desc 'manage users for a mysql database.' - commands mysql_raw: 'mysql' + commands mysql_raw: pick_correct_binary('mysql', 'mariadb') # Build a property_hash containing all the discovered information about MySQL # users.