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