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:
Reid Vandewiele
2013-04-04 19:32:42 -07:00
parent ff80bc7f79
commit f7a95a1e0e
7 changed files with 68 additions and 208 deletions

View File

@@ -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,
}
}