Merge pull request #25 from reidmv/reduce_complexity

Reduce complexity
This commit is contained in:
Matthaus Owens
2013-04-06 23:00:17 -07:00
14 changed files with 84 additions and 266 deletions

View File

@@ -1,3 +1,6 @@
2013-04-04 Reid Vandewiele <reid@puppetlabs.com> - 0.3.0
* Refactor, introduce params pattern
2012-11-15 Scott Schneider <sschneider@puppetlabs.com> - 0.2.0
* Add Solaris support

View File

@@ -1,4 +1,4 @@
Puppet OpenNebula Module - Puppet module for managing OpenNebula
Puppet Java Module - Puppet module for managing Java
Copyright (C) 2011 Puppet Labs Inc

View File

@@ -1,5 +1,5 @@
name 'puppetlabs-java'
version '0.2.0'
version '0.3.0'
source 'git://github.com/puppetlabs/puppetlabs-java'
author 'puppetlabs'
license 'Apache'

View File

@@ -2,32 +2,4 @@
Manage the Java runtime for use with other application software.
Currently this simply deploys the package on Enterprise Linux based systems and Debian based systems.
Tested on:
* Centos 5.6
* Ubuntu 10.04 Lucid
# RedHat Support #
The Java runtime this module is designed to configure are the RPM's provided by Oracle and obtained by extracting them from the "bin" installers.
For example:
./jdk-6u25-linux-x64-rpm.bin -x
Please download the installer from:
* [Java Downloads](http://www.oracle.com/technetwork/java/javase/downloads/jdk-6u25-download-346242.html)
# Ubuntu Support #
## Lucid ##
You need to have the partner repository enabled in order to install the Sun JDK or JRE.
aptitude install python-software-properties
sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"
aptitude update
Currently this deploys the correct Java package on a variety of platforms.

View File

@@ -4,111 +4,50 @@
#
# 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.
#
# [*package*]
# The name of the java package. This is configurable in case a non-standard
# java package is desired.
#
# Actions:
#
# Requires:
#
# Sample Usage:
#
# [Remember: No empty lines between comments and class definition]
class java(
$distribution = 'jdk',
$version = 'present'
$version = 'present',
$package = undef,
) {
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': {
$default_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'],
}
'jre': {
$default_package_name = $java::params::jre_package
}
}
'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")
}
$use_java_package_name = $package ? {
default => $package,
undef => $default_package_name,
}
package { 'java':
ensure => $version,
name => $use_java_package_name,
}
}

View File

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

View File

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

View File

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

View File

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

46
manifests/params.pp Normal file
View File

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

View File

@@ -1,6 +0,0 @@
--format
s
--colour
--loadby
mtime
--backtrace

View File

@@ -1,18 +0,0 @@
require 'pathname'
dir = Pathname.new(__FILE__).parent
$LOAD_PATH.unshift(dir, dir + 'lib', dir + '../lib')
require 'mocha'
require 'puppet'
gem 'rspec', '=1.2.9'
require 'spec/autorun'
Spec::Runner.configure do |config|
config.mock_with :mocha
end
# We need this because the RAL uses 'should' as a method. This
# allows us the same behaviour but with a different method name.
class Object
alias :must :should
end

View File

@@ -1,3 +0,0 @@
sun-java6-bin shared/accepted-sun-dlj-v1-1 boolean true
sun-java6-jdk shared/accepted-sun-dlj-v1-1 boolean true
sun-java6-jre shared/accepted-sun-dlj-v1-1 boolean true

View File

@@ -1,10 +1,4 @@
node default {
notify { "alpha": } ->
class { 'java':
distribution => 'jdk',
version => 'latest',
} ->
notify { "omega": }
class { 'java':
distribution => 'jdk',
version => 'latest',
}