Skip to content

Commit a972e4d

Browse files
author
Ashley Penney
committed
Merge pull request #258 from apenney/refactor
Completely redesign the MySQL module.
2 parents 4e6b792 + 2a46d9e commit a972e4d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1171
-1949
lines changed

README.md

+395-106
Large diffs are not rendered by default.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
module Puppet::Parser::Functions
2+
newfunction(:mysql_strip_hash, :type => :rvalue, :arity => 1, :doc => <<-EOS
3+
TEMPORARY FUNCTION: EXPIRES 2014-03-10
4+
When given a hash this function strips out all blank entries.
5+
EOS
6+
) do |args|
7+
8+
hash = args[0]
9+
unless hash.is_a?(Hash)
10+
raise(Puppet::ParseError, 'mysql_strip_hash(): Requires hash to work with')
11+
end
12+
13+
# Filter out all the top level blanks.
14+
hash.reject{|k,v| v == ''}.each do |k,v|
15+
if v.is_a?(Hash)
16+
v.reject!{|ki,vi| vi == '' }
17+
end
18+
end
19+
20+
end
21+
end

lib/puppet/provider/mysql_user/mysql.rb

-5
Original file line numberDiff line numberDiff line change
@@ -81,11 +81,6 @@ def exists?
8181
@property_hash[:ensure] == :present || false
8282
end
8383

84-
def flush
85-
@property_hash.clear
86-
mysql([defaults_file, '-NBe', 'FLUSH PRIVILEGES'].compact)
87-
end
88-
8984
##
9085
## MySQL user properties
9186
##

manifests/backup.pp

+16-68
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,4 @@
1-
# Class: mysql::backup
2-
#
3-
# This module handles ...
4-
#
5-
# Parameters:
6-
# [*backupuser*] - The name of the mysql backup user.
7-
# [*backuppassword*] - The password of the mysql backup user.
8-
# [*backupdir*] - The target directory of the mysqldump.
9-
# [*backupcompress*] - Boolean to compress backup with bzip2.
10-
# [*backuprotate*] - Number of backups to keep. Default 30
11-
# [*backupdatabases*] - Specify databases to back up as array (default all)
12-
# [*file_per_database*] - Boolean to dump each database to its own file.
13-
# [*delete_before_dump*] - Clean existing backups before creating new
14-
#
15-
# Actions:
16-
# GRANT SELECT, RELOAD, LOCK TABLES ON *.* TO 'user'@'localhost'
17-
# IDENTIFIED BY 'password';
18-
#
19-
# Requires:
20-
# Class['mysql::config']
21-
#
22-
# Sample Usage:
23-
# class { 'mysql::backup':
24-
# backupuser => 'myuser',
25-
# backuppassword => 'mypassword',
26-
# backupdir => '/tmp/backups',
27-
# backupcompress => true,
28-
# }
29-
#
1+
# Deprecated class
302
class mysql::backup (
313
$backupuser,
324
$backuppassword,
@@ -36,48 +8,24 @@
368
$delete_before_dump = false,
379
$backupdatabases = [],
3810
$file_per_database = false,
39-
$ensure = 'present'
11+
$ensure = 'present',
12+
$time = ['23', '5'],
4013
) {
4114

42-
mysql_user { "${backupuser}@localhost":
43-
ensure => $ensure,
44-
password_hash => mysql_password($backuppassword),
45-
provider => 'mysql',
46-
require => Class['mysql::config'],
47-
}
48-
49-
mysql_grant { "${backupuser}@localhost/*.*":
50-
ensure => present,
51-
user => "${backupuser}@localhost",
52-
table => '*.*',
53-
privileges => [ 'SELECT', 'RELOAD', 'LOCK TABLES', 'SHOW VIEW' ],
54-
require => Mysql_user["${backupuser}@localhost"],
55-
}
56-
57-
cron { 'mysql-backup':
58-
ensure => $ensure,
59-
command => '/usr/local/sbin/mysqlbackup.sh',
60-
user => 'root',
61-
hour => 23,
62-
minute => 5,
63-
require => File['mysqlbackup.sh'],
64-
}
65-
66-
file { 'mysqlbackup.sh':
67-
ensure => $ensure,
68-
path => '/usr/local/sbin/mysqlbackup.sh',
69-
mode => '0700',
70-
owner => 'root',
71-
group => 'root',
72-
content => template('mysql/mysqlbackup.sh.erb'),
73-
}
15+
crit("This class has been deprecated and callers should directly call
16+
mysql::server::backup now.")
7417

75-
file { 'mysqlbackupdir':
76-
ensure => 'directory',
77-
path => $backupdir,
78-
mode => '0700',
79-
owner => 'root',
80-
group => 'root',
18+
class { 'mysql::server::backup':
19+
ensure => $ensure,
20+
backupuser => $backupuser,
21+
backuppassword => $backuppassword,
22+
backupdir => $backupdir,
23+
backupcompress => $backupcompress,
24+
backuprotate => $backuprotate,
25+
delete_before_dump => $delete_before_dump,
26+
backupdatabases => $backupdatabases,
27+
file_per_database => $file_per_database,
28+
time => $time,
8129
}
8230

8331
}

manifests/bindings.pp

+19-45
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,32 @@
1-
# Class: mysql::bindings
2-
#
3-
# This class installs various bindings for mysql.
4-
#
5-
# Parameters:
6-
#
7-
# [*java_enable*] - Boolean to determine if we should include the java bindings.
8-
#
9-
# [*perl_enable*] - Boolean to determine if we should include the perl bindings.
10-
#
11-
# [*python_enable*] - Boolean to determine if we should include the python bindings.
12-
#
13-
# [*ruby_enable*] - Boolean to determine if we should include the ruby bindings.
14-
#
15-
# [*java_package_name*] - The name of the java package containing the java connector
16-
#
17-
# [*java_package_ensure*] - State of the java binding packages.
18-
#
19-
# [*perl_package_ensure*] - State of the perl binding packages.
20-
#
21-
# [*perl_package_name*] - The name of the perl mysql package to install
22-
#
23-
# [*perl_package_provider*] - The provider to use when installing the perl package.
24-
#
25-
# [*python_package_ensure*] - State of the python binding packages.
26-
#
27-
# [*python_package_name*] - The name of the python mysql package to install
28-
#
29-
# [*ruby_ensure*] - State of the ruby binding packages.
30-
#
31-
# [*ruby_package_name*] - The name of the ruby mysql package to install
32-
#
33-
# [*ruby_package_provider*] - The provider to use when installing the ruby package.
34-
#
1+
# See README.md.
352
class mysql::bindings (
363
# Boolean to determine if we should include the classes.
374
$java_enable = false,
385
$perl_enable = false,
6+
$php_enable = false,
397
$python_enable = false,
408
$ruby_enable = false,
419
# Settings for the various classes.
42-
$java_package_ensure = $mysql::params::java_package_ensure,
43-
$java_package_name = $mysql::params::java_package_name,
44-
$perl_package_ensure = $mysql::params::perl_package_ensure,
45-
$perl_package_name = $mysql::params::perl_package_name,
46-
$perl_package_provider = $mysql::params::perl_package_provider,
47-
$python_package_ensure = $mysql::params::python_package_ensure,
48-
$python_package_name = $mysql::params::python_package_name,
49-
$ruby_package_ensure = $mysql::params::ruby_package_ensure,
50-
$ruby_package_name = $mysql::params::ruby_package_name,
51-
$ruby_package_provider = $mysql::params::ruby_package_provider
52-
) inherits mysql::params {
10+
$java_package_ensure = $mysql::params::java_package_ensure,
11+
$java_package_name = $mysql::params::java_package_name,
12+
$java_package_provider = $mysql::params::java_package_provider,
13+
$perl_package_ensure = $mysql::params::perl_package_ensure,
14+
$perl_package_name = $mysql::params::perl_package_name,
15+
$perl_package_provider = $mysql::params::perl_package_provider,
16+
$php_package_ensure = $mysql::params::php_package_ensure,
17+
$php_package_name = $mysql::params::php_package_name,
18+
$php_package_provider = $mysql::params::php_package_provider,
19+
$python_package_ensure = $mysql::params::python_package_ensure,
20+
$python_package_name = $mysql::params::python_package_name,
21+
$python_package_provider = $mysql::params::python_package_provider,
22+
$ruby_package_ensure = $mysql::params::ruby_package_ensure,
23+
$ruby_package_name = $mysql::params::ruby_package_name,
24+
$ruby_package_provider = $mysql::params::ruby_package_provider
25+
) inherits mysql::globals {
5326

5427
if $java_enable { include '::mysql::bindings::java' }
5528
if $perl_enable { include '::mysql::bindings::perl' }
29+
if $php_enable { include '::mysql::bindings::php' }
5630
if $python_enable { include '::mysql::bindings::python' }
5731
if $ruby_enable { include '::mysql::bindings::ruby' }
5832

manifests/bindings/java.pp

+5-19
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,10 @@
1-
# Class: mysql::bindings::java
2-
#
3-
# This class installs the mysql-java-connector.
4-
#
5-
# Parameters:
6-
# [*package_name*] - The name of the mysql java package.
7-
# [*package_ensure*] - Ensure state for package. Can be specified as version.
8-
# Actions:
9-
#
10-
# Requires:
11-
#
12-
# Sample Usage:
13-
#
14-
class mysql::bindings::java (
15-
$package_ensure = $mysql::bindings::java_package_ensure,
16-
$package_name = $mysql::bindings::java_package_name
17-
) inherits mysql {
1+
# Private class
2+
class mysql::bindings::java {
183

194
package { 'mysql-connector-java':
20-
ensure => $package_ensure,
21-
name => $package_name,
5+
ensure => $mysql::bindings::java_package_ensure,
6+
name => $mysql::bindings::java_package_name,
7+
provider => $mysql::bindings::java_package_provider,
228
}
239

2410
}

manifests/bindings/perl.pp

+5-23
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,10 @@
1-
# Class: mysql::bindings::perl
2-
#
3-
# installs the perl bindings for mysql
4-
#
5-
# Parameters:
6-
# [*package_ensure*] - Ensure state for package. Can be specified as version.
7-
# [*package_name*] - name of package
8-
# [*package_provider*] - The provider to use to install the package
9-
#
10-
# Actions:
11-
#
12-
# Requires:
13-
#
14-
# Sample Usage:
15-
#
16-
class mysql::bindings::perl (
17-
$package_ensure = $mysql::bindings::perl_package_ensure,
18-
$package_name = $mysql::bindings::perl_package_name,
19-
$package_provider = $mysql::bindings::perl_package_provider
20-
) inherits mysql {
1+
# Private class
2+
class mysql::bindings::perl {
213

224
package{ 'perl_mysql':
23-
ensure => $package_ensure,
24-
name => $package_name,
25-
provider => $package_provider,
5+
ensure => $mysql::bindings::perl_package_ensure,
6+
name => $mysql::bindings::perl_package_name,
7+
provider => $mysql::bindings::perl_package_provider,
268
}
279

2810
}

manifests/bindings/php.pp

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
# Private class: See README.md
2+
class mysql::bindings::php {
3+
4+
package { 'php-mysql':
5+
ensure => $mysql::bindings::php_package_ensure,
6+
name => $mysql::bindings::php_package_name,
7+
provider => $mysql::bindings::php_package_provider,
8+
}
9+
10+
}

manifests/bindings/python.pp

+5-20
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,10 @@
1-
# Class: mysql::bindings::python
2-
#
3-
# This class installs the python libs for mysql.
4-
#
5-
# Parameters:
6-
# [*package_ensure*] - Ensure state for package. Can be specified as version.
7-
# [*package_name*] - Name of package
8-
#
9-
# Actions:
10-
#
11-
# Requires:
12-
#
13-
# Sample Usage:
14-
#
15-
class mysql::bindings::python(
16-
$package_ensure = $mysql::bindings::python_package_ensure,
17-
$package_name = $mysql::bindings::python_package_name
18-
) inherits mysql {
1+
# Private class
2+
class mysql::bindings::python {
193

204
package { 'python-mysqldb':
21-
ensure => $package_ensure,
22-
name => $package_name,
5+
ensure => $mysql::bindings::python_package_ensure,
6+
name => $mysql::bindings::python_package_name,
7+
provider => $mysql::bindings::python_package_provider,
238
}
249

2510
}

manifests/bindings/ruby.pp

+5-23
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,10 @@
1-
# Class: mysql::bindings::ruby
2-
#
3-
# installs the ruby bindings for mysql
4-
#
5-
# Parameters:
6-
# [*package_ensure*] - Ensure state for package. Can be specified as version.
7-
# [*package_name*] - name of package
8-
# [*package_provider*] - The provider to use to install the package
9-
#
10-
# Actions:
11-
#
12-
# Requires:
13-
#
14-
# Sample Usage:
15-
#
16-
class mysql::bindings::ruby (
17-
$package_ensure = $mysql::bindings::ruby_package_ensure,
18-
$package_name = $mysql::bindings::ruby_package_name,
19-
$package_provider = $mysql::bindings::ruby_package_provider
20-
) inherits mysql {
1+
# Private class
2+
class mysql::bindings::ruby {
213

224
package{ 'ruby_mysql':
23-
ensure => $package_ensure,
24-
name => $package_name,
25-
provider => $package_provider,
5+
ensure => $mysql::bindings::ruby_package_ensure,
6+
name => $mysql::bindings::ruby_package_name,
7+
provider => $mysql::bindings::ruby_package_provider,
268
}
279

2810
}

manifests/client.pp

+18
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#
2+
class mysql::client (
3+
$bindings_enable = false,
4+
) inherits mysql::globals {
5+
6+
include '::mysql::client::install'
7+
8+
if $bindings_enable {
9+
class { 'mysql::bindings':
10+
java_enable => true,
11+
perl_enable => true,
12+
php_enable => true,
13+
python_enable => true,
14+
ruby_enable => true,
15+
}
16+
}
17+
18+
}

manifests/client/install.pp

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
class mysql::client::install(
2-
$package_name = $mysql::client_package_name,
3-
$package_ensure = $mysql::client_package_ensure
2+
$package_name = $mysql::globals::client_package_name,
3+
$package_ensure = $mysql::globals::client_package_ensure
44
) {
55

66
package { 'mysql_client':

0 commit comments

Comments
 (0)