diff --git a/manifests/init.pp b/manifests/init.pp index 40363d5..038a776 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -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, } } diff --git a/manifests/package_debian.pp b/manifests/package_debian.pp deleted file mode 100644 index 565399d..0000000 --- a/manifests/package_debian.pp +++ /dev/null @@ -1,27 +0,0 @@ -# Class: java::package_debian -# -# Implementation class of the Java package -# for debian based systems. -# -# This class is not meant to be used by the end user -# of the module. It is an implementation class -# of the composite Class[java] -# -# Parameters: -# -# Actions: -# -# Requires: -# -# Sample Usage: -# -class java::package_debian( - $version, - $distribution -) { - - package { 'java': - ensure => $version, - name => $distribution, - } -} diff --git a/manifests/package_redhat.pp b/manifests/package_redhat.pp deleted file mode 100644 index 681d978..0000000 --- a/manifests/package_redhat.pp +++ /dev/null @@ -1,28 +0,0 @@ -# Class: java::package_redhat -# -# Implementation class of the Java package -# for redhat based systems. -# -# This class is not meant to be used by the end user -# of the module. It is an implementation class -# of the composite Class[java] -# -# Parameters: -# -# Actions: -# -# Requires: -# -# Sample Usage: -# -class java::package_redhat( - $version, - $distribution -) { - - package { 'java': - ensure => $version, - name => $distribution, - } - -} diff --git a/manifests/package_solaris.pp b/manifests/package_solaris.pp deleted file mode 100644 index a9752c5..0000000 --- a/manifests/package_solaris.pp +++ /dev/null @@ -1,27 +0,0 @@ -# Class: java::package_solaris -# -# Implementation class of the Java package -# for Solaris based systems. -# -# This class is not meant to be used by the end user -# of the module. It is an implementation class -# of the composite Class[java] -# -# Parameters: -# -# Actions: -# -# Requires: -# -# Sample Usage: -# -class java::package_solaris( - $version, - $distribution -) { - - package { 'java': - ensure => $version, - name => $distribution, - } -} diff --git a/manifests/package_suse.pp b/manifests/package_suse.pp deleted file mode 100644 index 98f5e8f..0000000 --- a/manifests/package_suse.pp +++ /dev/null @@ -1,27 +0,0 @@ -# Class: java::package_suse -# -# Implementation class of the Java package -# for SUSE based systems. -# -# This class is not meant to be used by the end user -# of the module. It is an implementation class -# of the composite Class[java] -# -# Parameters: -# -# Actions: -# -# Requires: -# -# Sample Usage: -# -class java::package_suse( - $version, - $distribution -) { - - package { 'java': - ensure => $version, - name => $distribution, - } -} diff --git a/manifests/params.pp b/manifests/params.pp new file mode 100644 index 0000000..6261daa --- /dev/null +++ b/manifests/params.pp @@ -0,0 +1,46 @@ +# Class: java::params +# +# This class sets the value of two variables, jdk_package and jre_package, +# appropriate for the client system in question. +# +class java::params { + + case $::osfamily { + default: { fail("unsupported platform ${::osfamily}") } + 'RedHat': { + case $::operatingsystem { + default: { fail("unsupported os ${::operatingsystem}") } + 'RedHat', 'CentOS': { + $jdk_package = 'java-1.7.0-openjdk-devel' + $jre_package = 'java-1.7.0-openjdk' + } + 'Fedora': { + $jdk_package = 'java' + $jre_package = 'java' + } + } + } + 'Debian': { + case $::lsbdistcodename { + default: { fail("unsupported release ${::lsbdistcodename}") } + 'squeeze', 'lucid': { + $jdk_package = 'openjdk-6-jdk' + $jre_package = 'openjdk-6-jre-headless' + } + 'wheezy', 'precise': { + $jdk_package = 'openjdk-7-jdk' + $jre_package = 'openjdk-7-jre-headless' + } + } + } + 'Solaris': { + $jdk_package = 'developer/java/jdk-7' + $jre_package = 'runtime/java/jre-7' + } + 'Suse': { + $jdk_package = 'java-1_6_0-ibm-devel' + $jre_package = 'java-1_6_0-ibm' + } + } + +} diff --git a/tests/init.pp b/tests/init.pp index 4114e3b..bdd923e 100644 --- a/tests/init.pp +++ b/tests/init.pp @@ -1,10 +1,4 @@ -node default { - - notify { "alpha": } -> - class { 'java': - distribution => 'jdk', - version => 'latest', - } -> - notify { "omega": } - +class { 'java': + distribution => 'jdk', + version => 'latest', }