Skip to content

Commit ede344f

Browse files
committed
Refactor mongos ensure handling
This now allows you to purge the package using $package_ensure. We can assume $service_ensure only has either running or stopped as value because of data types. We can use this to simplify our code. hasstatus has been defaulting to true since 2.7.0. Rename bind_ip_real to connect_ip to better state what it's used for.
1 parent 2291c76 commit ede344f

File tree

7 files changed

+100
-80
lines changed

7 files changed

+100
-80
lines changed

manifests/mongos.pp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# This installs a Mongo Shard daemon. See README.md for more details.
22
class mongodb::mongos (
3-
String $ensure = $mongodb::mongos::params::ensure,
43
Stdlib::Absolutepath $config = $mongodb::mongos::params::config,
54
Optional[String[1]] $config_content = $mongodb::mongos::params::config_content,
65
Optional[String[1]] $config_template = $mongodb::mongos::params::config_template,
@@ -26,7 +25,7 @@
2625
contain mongodb::mongos::config
2726
contain mongodb::mongos::service
2827

29-
if $ensure != 'absent' {
28+
unless $package_ensure in ['absent', 'purged'] {
3029
Class['mongodb::mongos::install'] -> Class['mongodb::mongos::config']
3130

3231
if $restart {

manifests/mongos/config.pp

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,52 @@
11
# PRIVATE CLASS: do not call directly
22
class mongodb::mongos::config (
3-
$ensure = $mongodb::mongos::ensure,
3+
$package_ensure = $mongodb::mongos::package_ensure,
44
$config = $mongodb::mongos::config,
55
$config_content = $mongodb::mongos::config_content,
66
$config_template = $mongodb::mongos::config_template,
77
$configdb = $mongodb::mongos::configdb,
88
$config_data = $mongodb::mongos::config_data,
99
$service_manage = $mongodb::mongos::service_manage,
1010
) {
11+
if $package_ensure == 'purged' {
12+
$ensure = 'absent'
13+
} else {
14+
$ensure = 'file'
15+
}
1116

12-
if ($ensure == 'present' or $ensure == true) {
13-
14-
#Pick which config content to use
15-
if $config_content {
16-
$config_content_real = $config_content
17-
} else {
18-
# Template has $config_data hash available
19-
$config_content_real = template(pick($config_template, 'mongodb/mongodb-shard.conf.erb'))
20-
}
17+
#Pick which config content to use
18+
if $config_content {
19+
$config_content_real = $config_content
20+
} else {
21+
# Template has $config_data hash available
22+
$config_content_real = template(pick($config_template, 'mongodb/mongodb-shard.conf.erb'))
23+
}
2124

22-
file { $config:
23-
content => $config_content_real,
24-
owner => 'root',
25-
group => 'root',
26-
mode => '0644',
27-
}
25+
file { $config:
26+
ensure => $ensure,
27+
content => $config_content_real,
28+
owner => 'root',
29+
group => 'root',
30+
mode => '0644',
31+
}
2832

29-
if $service_manage {
30-
if $facts['os']['family'] == 'RedHat' {
31-
file { '/etc/sysconfig/mongos' :
32-
ensure => file,
33-
owner => 'root',
34-
group => 'root',
35-
mode => '0644',
36-
content => "OPTIONS=\"--quiet -f ${config}\"\n",
37-
}
38-
} elsif $facts['os']['family'] == 'Debian' {
39-
file { '/etc/init.d/mongos' :
40-
ensure => file,
41-
content => template('mongodb/mongos/Debian/mongos.erb'),
42-
owner => 'root',
43-
group => 'root',
44-
mode => '0755',
45-
}
33+
if $service_manage {
34+
if $facts['os']['family'] == 'RedHat' {
35+
file { '/etc/sysconfig/mongos' :
36+
ensure => $ensure,
37+
owner => 'root',
38+
group => 'root',
39+
mode => '0644',
40+
content => "OPTIONS=\"--quiet -f ${config}\"\n",
41+
}
42+
} elsif $facts['os']['family'] == 'Debian' {
43+
file { '/etc/init.d/mongos' :
44+
ensure => $ensure,
45+
content => template('mongodb/mongos/Debian/mongos.erb'),
46+
owner => 'root',
47+
group => 'root',
48+
mode => '0755',
4649
}
4750
}
4851
}
49-
5052
}

manifests/mongos/install.pp

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,12 @@
11
# PRIVATE CLASS: do not call directly
22
class mongodb::mongos::install (
3-
$package_ensure = $mongodb::mongos::package_ensure,
4-
$package_name = $mongodb::mongos::package_name,
3+
$package_ensure = $mongodb::mongos::package_ensure,
4+
$package_name = $mongodb::mongos::package_name,
55
) {
66

7-
case $package_ensure {
8-
true: {
9-
$my_package_ensure = 'present'
10-
}
11-
false: {
12-
$my_package_ensure = 'absent'
13-
}
14-
'absent': {
15-
$my_package_ensure = 'absent'
16-
}
17-
'purged': {
18-
$my_package_ensure = 'purged'
19-
}
20-
default: {
21-
$my_package_ensure = $package_ensure
22-
}
23-
}
24-
25-
if !defined(Package[$package_name]) {
7+
unless defined(Package[$package_name]) {
268
package { 'mongodb_mongos':
27-
ensure => $my_package_ensure,
9+
ensure => $package_ensure,
2810
name => $package_name,
2911
}
3012
}

manifests/mongos/params.pp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,6 @@
1010

1111
$version = $mongodb::globals::version
1212

13-
$ensure = true
14-
1513
$package_ensure = pick($version, 'present')
1614
if $manage_package {
1715
$package_name = "mongodb-${edition}-mongos"

manifests/mongos/service.pp

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
# PRIVATE CLASS: do not call directly
22
class mongodb::mongos::service (
3+
$package_ensure = $mongodb::mongos::package_ensure,
34
$service_manage = $mongodb::mongos::service_manage,
45
$service_name = $mongodb::mongos::service_name,
56
$service_enable = $mongodb::mongos::service_enable,
@@ -10,32 +11,32 @@
1011
$port = $mongodb::mongos::port,
1112
) {
1213

13-
$service_ensure_real = $service_ensure ? {
14-
'absent' => false,
15-
'purged' => false,
16-
'stopped' => false,
17-
default => true
14+
if $package_ensure in ['absent', 'purged'] {
15+
$real_service_ensure = 'stopped'
16+
$real_service_enable = false
17+
} else {
18+
$real_service_ensure = $service_ensure
19+
$real_service_enable = $service_enable
1820
}
1921

2022
if $bind_ip == '0.0.0.0' {
21-
$bind_ip_real = '127.0.0.1'
23+
$connect_ip = '127.0.0.1'
2224
} else {
23-
$bind_ip_real = $bind_ip
25+
$connect_ip = $bind_ip
2426
}
2527

2628
if $service_manage {
2729
service { 'mongos':
28-
ensure => $service_ensure_real,
29-
name => $service_name,
30-
enable => $service_enable,
31-
provider => $service_provider,
32-
hasstatus => true,
33-
status => $service_status,
30+
ensure => $real_service_ensure,
31+
name => $service_name,
32+
enable => $real_service_enable,
33+
provider => $service_provider,
34+
status => $service_status,
3435
}
3536

36-
if $service_ensure_real {
37+
if $service_ensure == 'running' {
3738
mongodb_conn_validator { 'mongos':
38-
server => $bind_ip_real,
39+
server => $connect_ip,
3940
port => pick($port, 27017),
4041
timeout => '240',
4142
require => Service['mongos'],

spec/acceptance/mongos_spec.rb

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -94,11 +94,8 @@ class {'mongodb::globals': manage_package_repo => #{tengen}, }
9494
}
9595
-> class { 'mongodb::client': ensure => absent, }
9696
-> class { 'mongodb::mongos':
97-
ensure => absent,
98-
package_ensure => absent,
99-
service_ensure => stopped,
100-
service_enable => false
101-
}
97+
package_ensure => 'purged',
98+
}
10299
EOS
103100
apply_manifest(pp, catch_failures: true)
104101
end

spec/classes/mongos_spec.rb

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,47 @@
6363
it { is_expected.not_to contain_file('/etc/init.d/mongos') }
6464
it { is_expected.not_to contain_service('mongos') }
6565
end
66+
67+
context 'package_ensure => purged' do
68+
let(:params) do
69+
{
70+
package_ensure: 'purged'
71+
}
72+
end
73+
74+
it { is_expected.to compile.with_all_deps }
75+
76+
# install
77+
it { is_expected.to contain_class('mongodb::mongos::install') }
78+
it { is_expected.to contain_package('mongodb_mongos').with_ensure('purged') }
79+
80+
# config
81+
it { is_expected.to contain_class('mongodb::mongos::config') }
82+
83+
case facts[:osfamily]
84+
when 'RedHat'
85+
it { is_expected.to contain_file('/etc/mongos.conf').with_ensure('absent') }
86+
when 'Debian'
87+
it { is_expected.to contain_file('/etc/mongodb-shard.conf').with_ensure('absent') }
88+
end
89+
90+
if facts[:osfamily] == 'RedHat'
91+
it { is_expected.to contain_file('/etc/sysconfig/mongos').with_ensure('absent') }
92+
else
93+
it { is_expected.not_to contain_file('/etc/sysconfig/mongos') }
94+
end
95+
96+
if facts[:osfamily] == 'Debian'
97+
it { is_expected.to contain_file('/etc/init.d/mongos').with_ensure('absent') }
98+
else
99+
it { is_expected.not_to contain_file('/etc/init.d/mongos') }
100+
end
101+
102+
# service
103+
it { is_expected.to contain_class('mongodb::mongos::service') }
104+
105+
it { is_expected.to contain_service('mongos').with_ensure('stopped').with_enable(false) }
106+
end
66107
end
67108
end
68109

0 commit comments

Comments
 (0)