Refactor and reduce
The module in its previous incarnation was unnecessarily hard to read and use. This commit applies the "params" pattern in order to more clearly deliniate between logical variable selection and actual declarative configuration.
This commit is contained in:
@@ -4,111 +4,40 @@
|
||||
#
|
||||
# Parameters:
|
||||
#
|
||||
# [*distribution*]
|
||||
# The java distribution to install. Can be one of "jdk" or "jre".
|
||||
#
|
||||
# [*version*]
|
||||
# The version of java to install. By default, this module simply ensures
|
||||
# that java is present, and does not require a specific version.
|
||||
#
|
||||
# Actions:
|
||||
#
|
||||
# Requires:
|
||||
#
|
||||
# Sample Usage:
|
||||
#
|
||||
# [Remember: No empty lines between comments and class definition]
|
||||
class java(
|
||||
$distribution = 'jdk',
|
||||
$version = 'present'
|
||||
) {
|
||||
include java::params
|
||||
|
||||
validate_re($distribution, '^jdk$|^jre$|^java.*$')
|
||||
validate_re($version, 'installed|^[._0-9a-zA-Z:-]+$')
|
||||
|
||||
anchor { 'java::begin': }
|
||||
anchor { 'java::end': }
|
||||
|
||||
case $::osfamily {
|
||||
|
||||
'RedHat': {
|
||||
|
||||
if ($operatingsystem == 'Fedora') {
|
||||
class { 'java::package_redhat':
|
||||
version => $version,
|
||||
distribution => 'java',
|
||||
require => Anchor['java::begin'],
|
||||
before => Anchor['java::end'],
|
||||
}
|
||||
} else {
|
||||
class { 'java::package_redhat':
|
||||
version => $version,
|
||||
distribution => $distribution,
|
||||
require => Anchor['java::begin'],
|
||||
before => Anchor['java::end'],
|
||||
}
|
||||
}
|
||||
validate_re($version, 'present|installed|latest|^[._0-9a-zA-Z:-]+$')
|
||||
|
||||
case $distribution {
|
||||
default: { fail('distribution must be one of jdk, jre') }
|
||||
'jdk': {
|
||||
$java_package_name = $java::params::jdk_package
|
||||
}
|
||||
|
||||
'Debian': {
|
||||
|
||||
case $::lsbdistcodename {
|
||||
squeeze, lucid: {
|
||||
$distribution_debian = $distribution ? {
|
||||
jdk => 'openjdk-6-jdk',
|
||||
jre => 'openjdk-6-jre-headless',
|
||||
}
|
||||
}
|
||||
wheezy, precise: {
|
||||
$distribution_debian = $distribution ? {
|
||||
jdk => 'openjdk-7-jdk',
|
||||
jre => 'openjdk-7-jre-headless',
|
||||
}
|
||||
}
|
||||
default: {
|
||||
fail("operatingsystem distribution ${::lsbdistcodename} is not supported")
|
||||
}
|
||||
}
|
||||
|
||||
class { 'java::package_debian':
|
||||
version => $version,
|
||||
distribution => $distribution_debian,
|
||||
require => Anchor['java::begin'],
|
||||
before => Anchor['java::end'],
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
'Solaris': {
|
||||
|
||||
$distribution_solaris = $distribution ? {
|
||||
jdk => 'developer/java/jdk-7',
|
||||
jre => 'runtime/java/jre-7',
|
||||
}
|
||||
|
||||
class { 'java::package_solaris':
|
||||
version => $version,
|
||||
distribution => $distribution_solaris,
|
||||
require => Anchor['java::begin'],
|
||||
before => Anchor['java::end'],
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
'Suse': {
|
||||
|
||||
$distribution_suse = $distribution ? {
|
||||
jdk => 'java-1_6_0-ibm-devel',
|
||||
jre => 'java-1_6_0-ibm',
|
||||
}
|
||||
|
||||
class { 'java::package_suse':
|
||||
version => $version,
|
||||
distribution => $distribution_suse,
|
||||
require => Anchor['java::begin'],
|
||||
before => Anchor['java::end'],
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
default: {
|
||||
fail("osfamily ${::osfamily} is not supported")
|
||||
'jre': {
|
||||
$java_package_name = $java::params::jre_package
|
||||
}
|
||||
}
|
||||
|
||||
package { 'java':
|
||||
ensure => $version,
|
||||
name => $java_package_name,
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user