Skip to content

Commit bfd1999

Browse files
committed
Merge pull request #101 from martasd/manage-db-status
Added an option to specify db status.
2 parents 147cf40 + 0453790 commit bfd1999

File tree

4 files changed

+38
-17
lines changed

4 files changed

+38
-17
lines changed

.fixtures.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
fixtures:
2+
repositories:
3+
"stdlib": "git://github.com/puppetlabs/puppetlabs-stdlib"
24
symlinks:
35
"mysql": "#{source_dir}"

Modulefile

+1
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ license 'Apache 2.0'
66
summary 'Mysql module'
77
description 'Mysql module'
88
project_page 'http://github.com/puppetlabs/puppetlabs-mysql'
9+
dependency 'puppetlabs/stdlib', '>= 2.2.1'

manifests/db.pp

+23-17
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
# [*grant*] - array of privileges to grant user.
1717
# [*enforce_sql*] - whether to enforce or conditionally run sql on creation.
1818
# [*sql*] - sql statement to run.
19+
# [*ensure*] - specifies if a database is present or absent.
1920
#
2021
# Actions:
2122
#
@@ -39,39 +40,44 @@
3940
$host = 'localhost',
4041
$grant = 'all',
4142
$sql = '',
42-
$enforce_sql = false
43+
$enforce_sql = false,
44+
$ensure = 'present'
4345
) {
4446

47+
validate_re($ensure, [ '^present$', '^absent$' ],
48+
"${ensure} is not supported for ensure. Allowed values are 'present' and 'absent'.")
49+
4550
database { $name:
46-
ensure => present,
51+
ensure => $ensure,
4752
charset => $charset,
4853
provider => 'mysql',
4954
require => Class['mysql::server'],
5055
}
5156

5257
database_user { "${user}@${host}":
53-
ensure => present,
58+
ensure => $ensure,
5459
password_hash => mysql_password($password),
5560
provider => 'mysql',
5661
require => Database[$name],
5762
}
5863

59-
database_grant { "${user}@${host}/${name}":
60-
privileges => $grant,
61-
provider => 'mysql',
62-
require => Database_user["${user}@${host}"],
63-
}
64+
if $ensure == 'present' {
65+
database_grant { "${user}@${host}/${name}":
66+
privileges => $grant,
67+
provider => 'mysql',
68+
require => Database_user["${user}@${host}"],
69+
}
6470

65-
$refresh = ! $enforce_sql
71+
$refresh = ! $enforce_sql
6672

67-
if $sql {
68-
exec{ "${name}-import":
69-
command => "/usr/bin/mysql ${name} < ${sql}",
70-
logoutput => true,
71-
refreshonly => $refresh,
72-
require => Database_grant["${user}@${host}/${name}"],
73-
subscribe => Database[$name],
73+
if $sql {
74+
exec{ "${name}-import":
75+
command => "/usr/bin/mysql ${name} < ${sql}",
76+
logoutput => true,
77+
refreshonly => $refresh,
78+
require => Database_grant["${user}@${host}/${name}"],
79+
subscribe => Database[$name],
80+
}
7481
}
7582
}
76-
7783
}

spec/defines/mysql_db_spec.rb

+12
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@
99
}
1010
}
1111

12+
it 'should report an error when ensure is not present or absent' do
13+
params.merge!({'ensure' => 'invalid_val'})
14+
expect { subject }.to raise_error(Puppet::Error,
15+
/invalid_val is not supported for ensure\. Allowed values are 'present' and 'absent'\./)
16+
end
17+
1218
it 'should not notify the import sql exec if no sql script was provided' do
1319
should contain_database('test_db').without_notify
1420
end
@@ -27,4 +33,10 @@
2733
params.merge!({'sql' => 'test_sql', 'enforce_sql' => true})
2834
should contain_exec('test_db-import').with_refreshonly(false)
2935
end
36+
37+
it 'should not create database and database user' do
38+
params.merge!({'ensure' => 'absent', 'host' => 'localhost'})
39+
should contain_database('test_db').with_ensure('absent')
40+
should contain_database_user('testuser@localhost').with_ensure('absent')
41+
end
3042
end

0 commit comments

Comments
 (0)