From a019f615333828a33295dcb755ff9a6d7037c68f Mon Sep 17 00:00:00 2001
From: Eugeny Kisel <ekisel@objectstyle.com>
Date: Fri, 22 May 2020 14:33:13 +0300
Subject: [PATCH 1/5] Added a case statement to include executing manage_dirs
 on the class config only for Debian, because there's dependency of Debian
 tool unless  => "/usr/bin/dpkg -s ${mysql::server::package_name}", Created
 the parameter managed_dirs for the class mysql::server to allow use the class
 mysql::server::managed_dirs

---
 manifests/server.pp        |  1 +
 manifests/server/config.pp | 28 ++++++++++++++++------------
 2 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/manifests/server.pp b/manifests/server.pp
index 8c8a30f1c..fd212f997 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -91,6 +91,7 @@
                   $mysql_group             = $mysql::params::mysql_group,
                   $mycnf_owner             = $mysql::params::mycnf_owner,
                   $mycnf_group             = $mysql::params::mycnf_group,
+                  $managed_dirs            = undef,
                   $root_password           = $mysql::params::root_password,
                   $service_enabled         = $mysql::params::server_service_enabled,
                   $service_manage          = $mysql::params::server_service_manage,
diff --git a/manifests/server/config.pp b/manifests/server/config.pp
index 3082cd4ff..94d508ed1 100644
--- a/manifests/server/config.pp
+++ b/manifests/server/config.pp
@@ -36,18 +36,22 @@
   }
 
   #Debian: Creating world readable directories before installing.
-  if $managed_dirs {
-    $managed_dirs.each | $entry | {
-      $dir = $options['mysqld']["${entry}"]
-      if ( $dir and $dir != '/usr' and $dir != '/tmp' ) {
-        exec {"${entry}-managed_dir-mkdir":
-          command => "/bin/mkdir -p ${dir}",
-          unless  => "/usr/bin/dpkg -s ${mysql::server::package_name}",
-          notify  =>  Exec["${entry}-managed_dir-chmod"],
-        }
-        exec {"${entry}-managed_dir-chmod":
-          command     => "/bin/chmod 777 ${dir}",
-          refreshonly => true,
+  case $::operatingsystem {
+    'Debian': {
+      if $managed_dirs {
+        $managed_dirs.each | $entry | {
+          $dir = $options['mysqld']["${entry}"]
+          if ( $dir and $dir != '/usr' and $dir != '/tmp' ) {
+            exec {"${entry}-managed_dir-mkdir":
+              command => "/bin/mkdir -p ${dir}",
+              unless  => "/usr/bin/dpkg -s ${mysql::server::package_name}",
+              notify  =>  Exec["${entry}-managed_dir-chmod"],
+            }
+            exec {"${entry}-managed_dir-chmod":
+              command     => "/bin/chmod 777 ${dir}",
+              refreshonly => true,
+            }
+          }
         }
       }
     }

From e1839deb1737c9da71d4a63660365de23b5d6712 Mon Sep 17 00:00:00 2001
From: Eugeny Kisel <ekisel@objectstyle.com>
Date: Mon, 1 Jun 2020 11:25:54 +0300
Subject: [PATCH 2/5] Updated REFERENCES for the new parameter managed_dirs.

---
 REFERENCE.md        | 9 +++++++++
 manifests/server.pp | 2 +-
 2 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/REFERENCE.md b/REFERENCE.md
index 0e3a8c66e..b4e81559e 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -455,6 +455,15 @@ Whether the MySQL configuration file should be managed. Valid values are `true`,
 
 Default value: $mysql::params::manage_config_file
 
+##### `managed_dirs`
+
+Data type: `Any`
+
+Manage MySQL system directories which described in the section `[mysqld]` of the configuration file
+`my.cnf`
+
+Default value: `undef`
+
 ##### `options`
 
 Data type: `Mysql::Options`
diff --git a/manifests/server.pp b/manifests/server.pp
index fd212f997..31f82bfa6 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -88,10 +88,10 @@
                   $remove_default_accounts = false,
                   $restart                 = $mysql::params::restart,
                   $root_group              = $mysql::params::root_group,
+                  $managed_dirs            = undef,
                   $mysql_group             = $mysql::params::mysql_group,
                   $mycnf_owner             = $mysql::params::mycnf_owner,
                   $mycnf_group             = $mysql::params::mycnf_group,
-                  $managed_dirs            = undef,
                   $root_password           = $mysql::params::root_password,
                   $service_enabled         = $mysql::params::server_service_enabled,
                   $service_manage          = $mysql::params::server_service_manage,

From 8974f16061106dee47b3e60391918e2be4f7790b Mon Sep 17 00:00:00 2001
From: Eugeny Kisel <ekisel@objectstyle.com>
Date: Mon, 1 Jun 2020 11:57:49 +0300
Subject: [PATCH 3/5] Added a default case for the case statement of managing
 dirs for Debian in mysql::server::config

---
 manifests/server/config.pp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/manifests/server/config.pp b/manifests/server/config.pp
index 94d508ed1..ccb57b261 100644
--- a/manifests/server/config.pp
+++ b/manifests/server/config.pp
@@ -55,6 +55,7 @@
         }
       }
     }
+    default: {}
   }
 
   if $mysql::server::manage_config_file  {

From a22132740b0da0b24eabf70a46dc0db508a849b2 Mon Sep 17 00:00:00 2001
From: Eugeny Kisel <ekisel@objectstyle.com>
Date: Wed, 3 Jun 2020 14:34:00 +0300
Subject: [PATCH 4/5] Fixed a default value for the parameter $managed_dirs
 from undef to $mysql::params::managed_dirs. Updated REFERENCE.md

---
 REFERENCE.md        | 2 +-
 manifests/server.pp | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/REFERENCE.md b/REFERENCE.md
index b4e81559e..6144afa7d 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -462,7 +462,7 @@ Data type: `Any`
 Manage MySQL system directories which described in the section `[mysqld]` of the configuration file
 `my.cnf`
 
-Default value: `undef`
+Default value: `$mysql::params::managed_dirs`
 
 ##### `options`
 
diff --git a/manifests/server.pp b/manifests/server.pp
index 31f82bfa6..1ac2843a7 100644
--- a/manifests/server.pp
+++ b/manifests/server.pp
@@ -88,7 +88,7 @@
                   $remove_default_accounts = false,
                   $restart                 = $mysql::params::restart,
                   $root_group              = $mysql::params::root_group,
-                  $managed_dirs            = undef,
+                  $managed_dirs            = $mysql::params::managed_dirs,
                   $mysql_group             = $mysql::params::mysql_group,
                   $mycnf_owner             = $mysql::params::mycnf_owner,
                   $mycnf_group             = $mysql::params::mycnf_group,

From 518996e0eee7765bc7e4ce07f823b474549c5c4d Mon Sep 17 00:00:00 2001
From: sheena <sheena@puppet.com>
Date: Thu, 18 Jun 2020 11:07:50 +0100
Subject: [PATCH 5/5] (maint) Add tests to verify mariadb

---
 spec/acceptance/mysql_mariadb_spec.rb | 44 +++++++++++++++++++++++++++
 1 file changed, 44 insertions(+)
 create mode 100644 spec/acceptance/mysql_mariadb_spec.rb

diff --git a/spec/acceptance/mysql_mariadb_spec.rb b/spec/acceptance/mysql_mariadb_spec.rb
new file mode 100644
index 000000000..f70a5bad4
--- /dev/null
+++ b/spec/acceptance/mysql_mariadb_spec.rb
@@ -0,0 +1,44 @@
+require 'spec_helper_acceptance'
+
+describe 'mysql server class', if: ((os[:family] == 'debian' && os[:release].to_i > 8) || (os[:family] == 'redhat' && os[:release].to_i > 6)) do
+  describe 'mariadb' do
+    let(:pp) do
+      <<-MANIFEST
+        $osname = $facts['os']['name'].downcase
+        yumrepo {'mariadb':
+          baseurl  => "http://yum.mariadb.org/10.4/$osname${facts['os']['release']['major']}-aarch64/",
+          gpgkey => 'https://yum.mariadb.org/RPM-GPG-KEY-MariaDB',
+          descr    => "MariaDB 10.4",
+          enabled  => 1,
+          gpgcheck => 1,
+        }->
+        class { '::mysql::server':
+          require                => Yumrepo['mariadb'],
+          package_name            => 'mariadb-server',
+          service_name            => 'mariadb',
+          root_password           => 'strongpassword',
+          remove_default_accounts => true,
+          managed_dirs            => ['/var/log','/var/run/mysql'],
+          override_options        => {
+            mysqld => {
+              log-error =>  '/var/log/mariadb.log',
+              pid-file =>  '/var/run/mysql/mysqld.pid',
+            },
+            mysqld_safe =>  {
+              log-error =>  '/var/log/mariadb.log',
+            },
+          },
+        }
+      MANIFEST
+    end
+
+    it 'apply manifest' do
+      apply_manifest(pp)
+    end
+    it 'mariadb connection' do
+      result = run_shell('mysql --user="root" --password="strongpassword" -e "status"')
+      expect(result.stdout).to match(%r{MariaDB})
+      expect(result.stderr).to be_empty
+    end
+  end
+end