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 2012-11-15 Scott Schneider <sschneider@puppetlabs.com> - 0.2.0
* Add Solaris support * 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 Copyright (C) 2011 Puppet Labs Inc

View File

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

View File

@@ -2,32 +2,4 @@
Manage the Java runtime for use with other application software. 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. Currently this deploys the correct Java package on a variety of platforms.
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

View File

@@ -4,111 +4,50 @@
# #
# Parameters: # 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: # Actions:
# #
# Requires: # Requires:
# #
# Sample Usage: # Sample Usage:
# #
# [Remember: No empty lines between comments and class definition]
class java( class java(
$distribution = 'jdk', $distribution = 'jdk',
$version = 'present' $version = 'present',
$package = undef,
) { ) {
include java::params
validate_re($distribution, '^jdk$|^jre$|^java.*$') validate_re($version, 'present|installed|latest|^[._0-9a-zA-Z:-]+$')
validate_re($version, 'installed|^[._0-9a-zA-Z:-]+$')
anchor { 'java::begin': } case $distribution {
anchor { 'java::end': } default: { fail('distribution must be one of jdk, jre') }
'jdk': {
case $::osfamily { $default_package_name = $java::params::jdk_package
'RedHat': {
if ($operatingsystem == 'Fedora') {
class { 'java::package_redhat':
version => $version,
distribution => 'java',
require => Anchor['java::begin'],
before => Anchor['java::end'],
} }
} else { 'jre': {
class { 'java::package_redhat': $default_package_name = $java::params::jre_package
version => $version,
distribution => $distribution,
require => Anchor['java::begin'],
before => Anchor['java::end'],
} }
} }
$use_java_package_name = $package ? {
default => $package,
undef => $default_package_name,
} }
'Debian': { package { 'java':
ensure => $version,
case $::lsbdistcodename { name => $use_java_package_name,
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")
}
} }
} }

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 { class { 'java':
notify { "alpha": } ->
class { 'java':
distribution => 'jdk', distribution => 'jdk',
version => 'latest', version => 'latest',
} ->
notify { "omega": }
} }