Skip to content

Commit e2ff7b6

Browse files
committed
MODULES-4069: Fail when required params are not available in params.
When overriding all values required for the java setup, there is no need to fail if params.pp does not support the package.
1 parent 6605e34 commit e2ff7b6

File tree

2 files changed

+60
-14
lines changed

2 files changed

+60
-14
lines changed

manifests/init.pp

Lines changed: 32 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -54,56 +54,74 @@
5454
$java_alternative_path = undef,
5555
$java_home = undef
5656
) {
57-
include java::params
57+
include ::java::params
5858

5959
validate_re($version, 'present|installed|latest|^[.+_0-9a-zA-Z:~-]+$')
6060

6161
if $package_options != undef {
6262
validate_array($package_options)
6363
}
6464

65-
if has_key($java::params::java, $distribution) {
66-
$default_package_name = $java::params::java[$distribution]['package']
67-
$default_alternative = $java::params::java[$distribution]['alternative']
68-
$default_alternative_path = $java::params::java[$distribution]['alternative_path']
69-
$default_java_home = $java::params::java[$distribution]['java_home']
70-
} else {
71-
fail("Java distribution ${distribution} is not supported.")
65+
$default_package_name = has_key($java::params::java, $distribution) ? {
66+
false => undef,
67+
default => $java::params::java[$distribution]['package'],
7268
}
7369

7470
$use_java_package_name = $package ? {
7571
undef => $default_package_name,
7672
default => $package,
7773
}
7874

75+
76+
## Weird logic........
7977
## If $java_alternative is set, use that.
8078
## Elsif the DEFAULT package is being used, then use $default_alternative.
8179
## Else undef
8280
$use_java_alternative = $java_alternative ? {
83-
undef => $use_java_package_name ? {
84-
$default_package_name => $default_alternative,
81+
undef => $use_java_package_name ? {
82+
$default_package_name => has_key($java::params::java, $distribution) ? {
83+
default => $java::params::java[$distribution]['alternative'],
84+
false => undef,
85+
},
8586
default => undef,
8687
},
8788
default => $java_alternative,
8889
}
8990

9091
## Same logic as $java_alternative above.
9192
$use_java_alternative_path = $java_alternative_path ? {
92-
undef => $use_java_package_name ? {
93-
$default_package_name => $default_alternative_path,
93+
undef => $use_java_package_name ? {
94+
$default_package_name => has_key($java::params::java, $distribution) ? {
95+
default => $java::params::java[$distribution]['alternative_path'],
96+
false => undef,
97+
},
9498
default => undef,
9599
},
96100
default => $java_alternative_path,
97101
}
98102

99103
$use_java_home = $java_home ? {
100-
undef => $use_java_package_name ? {
101-
$default_package_name => $default_java_home,
104+
undef => $use_java_package_name ? {
105+
$default_package_name => has_key($java::params::java, $distribution) ? {
106+
default => $java::params::java[$distribution]['java_home'],
107+
false => undef,
108+
},
102109
default => undef,
103110
},
104111
default => $java_home,
105112
}
106113

114+
## This should only be required if we did not override all the information we need.
115+
# One of the defaults is missing and its not intentional:
116+
if ((
117+
$use_java_package_name == undef or $use_java_alternative == undef or
118+
$use_java_alternative_path == undef or $use_java_home == undef
119+
) and (
120+
! has_key($::java::params::java, $distribution)
121+
)) {
122+
fail("Java distribution ${distribution} is not supported. Missing default values.")
123+
}
124+
107125
$jre_flag = $use_java_package_name ? {
108126
/headless/ => '--jre-headless',
109127
default => '--jre'

spec/classes/java_spec.rb

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,6 +232,34 @@
232232
it { is_expected.to contain_package('java').with_name('jre') }
233233
end
234234

235+
describe 'custom java package' do
236+
let(:facts) { {:osfamily => 'Debian', :operatingsystem => 'Debian', :lsbdistcodename => 'jessie', :operatingsystemrelease => '8.6', :architecture => 'amd64',} }
237+
context 'all params provided' do
238+
let(:params) { {
239+
'distribution' => 'custom',
240+
'package' => 'custom_jdk',
241+
'java_alternative' => 'java-custom_jdk',
242+
'java_alternative_path' => '/opt/custom_jdk/bin/java',
243+
'java_home' => '/opt/custom_jdk',
244+
} }
245+
246+
it { is_expected.to contain_package('java').with_name('custom_jdk') }
247+
it { is_expected.to contain_file_line('java-home-environment').with_line('JAVA_HOME=/opt/custom_jdk') }
248+
it { is_expected.to contain_exec('update-java-alternatives').with_command('update-java-alternatives --set java-custom_jdk --jre') }
249+
250+
end
251+
context 'missing parameters' do
252+
let(:params) { {
253+
'distribution' => 'custom',
254+
'package' => 'custom_jdk',
255+
} }
256+
it do
257+
expect { catalogue }.to raise_error Puppet::Error, /is not supported. Missing default values/
258+
end
259+
end
260+
end
261+
262+
235263
describe 'incompatible OSs' do
236264
[
237265
{

0 commit comments

Comments
 (0)