diff --git a/REFERENCE.md b/REFERENCE.md
index 3966853..f7419b2 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -22,6 +22,7 @@ The following parameters are available in the `java_artisanal` class:
* [`source`](#-java_artisanal--source)
* [`package`](#-java_artisanal--package)
* [`dir`](#-java_artisanal--dir)
+* [`set_alternatives`](#-java_artisanal--set_alternatives)
##### `source`
@@ -53,6 +54,14 @@ TODO this seems like something we should derive.
Default value: `'jdk1.8.0_202-amd64'`
+##### `set_alternatives`
+
+Data type: `Boolean`
+
+If false, do not set the /usr/bin alternatives to point to this version.
+
+Default value: `true`
+
### `java_artisanal::java17`
Install jdk 17 via RPMs
@@ -64,6 +73,7 @@ The following parameters are available in the `java_artisanal::java17` class:
* [`source`](#-java_artisanal--java17--source)
* [`package`](#-java_artisanal--java17--package)
* [`version`](#-java_artisanal--java17--version)
+* [`set_alternatives`](#-java_artisanal--java17--set_alternatives)
* [`source_user`](#-java_artisanal--java17--source_user)
* [`source_pass`](#-java_artisanal--java17--source_pass)
@@ -91,6 +101,14 @@ String giving version of installed rpm.
Default value: `'17.34+19'`
+##### `set_alternatives`
+
+Data type: `Boolean`
+
+If true, set the /usr/bin alternatives to point to this version.
+
+Default value: `!$java_artisanal::set_alternatives`
+
##### `source_user`
Data type: `Optional[String]`
diff --git a/manifests/init.pp b/manifests/init.pp
index 045a5c6..a155884 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -16,10 +16,14 @@
# https://bugs.openjdk.java.net/browse/JDK-8202528
# TODO this seems like something we should derive.
#
+# @param set_alternatives
+# If false, do not set the /usr/bin alternatives to point to this version.
+#
class java_artisanal (
Stdlib::HTTPUrl $source = 'https://github.com/frekele/oracle-java/releases/download/8u202-b08/jdk-8u202-linux-x64.rpm',
String $package = 'jdk1.8',
String $dir = 'jdk1.8.0_202-amd64',
+ Boolean $set_alternatives = true,
) {
yum::install { $package:
ensure => present,
@@ -48,8 +52,10 @@
require => Yum::Install[$package],
}
- alternatives { $cmd:
- path => $dest,
+ if $set_alternatives {
+ alternatives { $cmd:
+ path => $dest,
+ }
}
}
}
diff --git a/manifests/java17.pp b/manifests/java17.pp
index f508221..693ac43 100644
--- a/manifests/java17.pp
+++ b/manifests/java17.pp
@@ -10,6 +10,9 @@
# @param version
# String giving version of installed rpm.
#
+# @param set_alternatives
+# If true, set the /usr/bin alternatives to point to this version.
+#
# @param source_user
# Optional string giving username to access source URL.
#
@@ -20,6 +23,7 @@
String $source = 'https://cdn.azul.com/zulu/bin/zulu17.34.19-ca-jdk17.0.3-linux.x86_64.rpm',
String $package = 'zulu-17',
String $version = '17.34+19',
+ Boolean $set_alternatives = !$java_artisanal::set_alternatives,
Optional[String] $source_user = undef,
Optional[String] $source_pass = undef,
) {
@@ -37,4 +41,32 @@
provider => 'rpm',
source => $rpmfile,
}
+
+ $cmds = [
+ 'java',
+ 'javac',
+# 'javaws',
+ 'jar',
+ 'jconsole',
+ 'jstack',
+ ]
+
+ $cmds.each |$cmd| {
+ $src = "/usr/bin/${cmd}"
+ $dest = "/usr/lib/jvm/zulu-17/bin/${cmd}"
+
+ alternative_entry { $dest:
+ ensure => present,
+ altlink => $src,
+ altname => $cmd,
+ priority => 900,
+ require => Package[$package],
+ }
+
+ if $set_alternatives {
+ alternatives { $cmd:
+ path => $dest,
+ }
+ }
+ }
}
diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb
index 5997363..c05690e 100644
--- a/spec/classes/init_spec.rb
+++ b/spec/classes/init_spec.rb
@@ -16,13 +16,19 @@
jconsole
jstack
].each do |cmd|
+ dest = "/usr/java/jdk1.8.0_202-amd64/bin/#{cmd}"
it do
- dest = "/usr/java/jdk1.8.0_202-amd64/bin/#{cmd}"
is_expected.to contain_alternative_entry(dest).with(
ensure: 'present',
priority: 1000
)
end
+
+ it do
+ is_expected.to contain_alternatives(cmd).with(
+ path: dest
+ )
+ end
end
end
end