(MODULES-10681) Add option to manage symlink to java::adopt

While here, convert the documentation to Puppet Strings and add
some basic unit tests.
This commit is contained in:
Frank Wall
2020-05-26 16:21:33 +02:00
parent 236a115ed6
commit 06f1a56b31
4 changed files with 108 additions and 221 deletions

View File

@@ -1,116 +1,47 @@
# Defined Type java::adopt
#
# Description
# Installs OpenJDK Java built with AdoptOpenJDK with the Hotspot JVM.
# @summary
# Install one or more versions of AdoptOpenJDK Java.
#
# Install one or more versions of AdoptOpenJDK Java.
# @param ensure
# Install or remove the package.
#
# Currently only Linux RedHat, Amazon and Debian are supported.
# @param version
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor versions will be used.
#
# Parameters
# [*version*]
# Version of Java to install, e.g. '8' or '9'. Default values for major and minor
# versions will be used.
# @param version_major
# Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with version_minor.
#
# [*version_major*]
# Major version which should be installed, e.g. '8u101' or '9.0.4'. Must be used together with
# version_minor.
# @param version_minor
# Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8'). Must be used together with version_major.
#
# [*version_minor*]
# Minor version which should be installed, e.g. 'b12' (for version = '8') or '11' (for version != '8').
# Must be used together with version_major.
# @param java
# Type of Java Standard Edition to install, jdk or jre.
#
# [*java_edition*]
# Type of Java Edition to install, jdk or jre.
# @param proxy_server
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
#
# [*ensure*]
# Install or remove the package.
# @param proxy_type
# Proxy server type (none|http|https|ftp). (passed to archive)
#
# [*proxy_server*]
# Specify a proxy server, with port number if needed. ie: https://example.com:8080. (passed to archive)
# @param basedir
# Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
#
# [*proxy_type*]
# Proxy server type (none|http|https|ftp). (passed to archive)
# @param manage_basedir
# Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
#
# [*basedir*]
# Directory under which the installation will occur. If not set, defaults to
# /usr/lib/jvm for Debian and /usr/java for RedHat.
# @param package_type
# Type of installation package for specified version of java_se. java_se 6 comes
# in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
#
# [*manage_basedir*]
# Whether to manage the basedir directory. Defaults to false.
# Note: /usr/lib/jvm is managed for Debian by default, separate from this parameter.
# @param manage_symlink
# Whether to manage a symlink that points to the installation directory. Defaults to false.
#
# [*package_type*]
# Type of installation package for specified version of java. java 6 comes
# in a few installation package flavors and we need to account for them.
# Optional forced package types: rpm, rpmbin, tar.gz
#
# Variables
# [*release_major*]
# Major version release number for java. Used to construct download URL.
#
# [*release_minor*]
# Minor version release number for java. Used to construct download URL.
#
# [*install_path*]
# Base install path for specified version of java. Used to determine if java
# has already been installed.
#
# [*os*]
# java OS type.
#
# [*destination*]
# Destination directory to save java installer to. Usually /tmp on Linux and
# C:\TEMP on Windows.
#
# [*creates_path*]
# Fully qualified path to java after it is installed. Used to determine if
# java is already installed.
#
# [*arch*]
# java architecture type.
#
# [*package_name*]
# Name of the java installation package to download from github.
#
# [*install_command*]
# Installation command used to install java. Installation commands
# differ by package_type. 'bin' types are installed via shell command. 'rpmbin'
# types have the rpms extracted and then forcibly installed. 'rpm' types are
# forcibly installed.
#
# [*spacer*]
# Spacer to be used in github download url. In major version 8 this is a simple dash
# in later versions they use a crazy plus sign, which needs to be used in urlencoded
# format
#
# [*download_folder_prefix*]
# Download folder name begins differently depending on the release. After major release
# 8, they have given it a dash. Be aware that even if you want to have a JRE, the folder
# still begins with "jdk"
#
# [*release_minor_url*]
# filled depending on major release. Until major release 8 the minor part needs to be given
# with a 'b' for build, in later versions it is a underscore or a plus sign, which needs
# to be stripped for the download url and is replaced with the given spaces (see above)
#
# [*_package_type*]
# Helper variable which gets filled depending on parameter package_type
#
# [*_basedir*]
# Helper variable which gets filled depending on parameter basedir
#
# [*_version*]
# Helper variable which gets filled depending on parameter version
#
# [*_version_int*]
# Helper variable which gets the value of $_version converted to integer
#
# [*_append_jre*]
# Helper variable which gets filled with the string "-jre" if jre was selected to build the correct install path
#
# [*_release_minor_package_name*]
# Helper variable which gets filled with the right minor string depending on the major version
# @param symlink_name
# The name for the optional symlink in the installation directory.
#
define java::adopt (
$ensure = 'present',
@@ -123,6 +54,8 @@ define java::adopt (
$basedir = undef,
$manage_basedir = true,
$package_type = undef,
$manage_symlink = false,
$symlink_name = undef,
) {
# archive module is used to download the java package
@@ -357,6 +290,14 @@ define java::adopt (
require => $install_requires
}
if ($manage_symlink and $symlink_name) {
file { "${_basedir}/${symlink_name}":
ensure => link,
target => $creates_path,
require => Exec["Install AdoptOpenJDK java ${java} ${_version} ${release_major} ${release_minor}"],
}
}
}
default : {
fail ("unsupported platform ${$facts['kernel']}")