Skip to content

Commit

Permalink
Merge pull request #31 from lsst-it/IT-4719/java17-alternative
Browse files Browse the repository at this point in the history
Allow for java 17 to be set as the /usr/bin alternative
  • Loading branch information
glennmorris committed Sep 7, 2023
2 parents b2e8450 + 89d1046 commit 263cafd
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 3 deletions.
18 changes: 18 additions & 0 deletions REFERENCE.md
Expand Up @@ -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)

##### <a name="-java_artisanal--source"></a>`source`

Expand Down Expand Up @@ -53,6 +54,14 @@ TODO this seems like something we should derive.

Default value: `'jdk1.8.0_202-amd64'`

##### <a name="-java_artisanal--set_alternatives"></a>`set_alternatives`

Data type: `Boolean`

If false, do not set the /usr/bin alternatives to point to this version.

Default value: `true`

### <a name="java_artisanal--java17"></a>`java_artisanal::java17`

Install jdk 17 via RPMs
Expand All @@ -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)

Expand Down Expand Up @@ -91,6 +101,14 @@ String giving version of installed rpm.

Default value: `'17.34+19'`

##### <a name="-java_artisanal--java17--set_alternatives"></a>`set_alternatives`

Data type: `Boolean`

If true, set the /usr/bin alternatives to point to this version.

Default value: `!$java_artisanal::set_alternatives`

##### <a name="-java_artisanal--java17--source_user"></a>`source_user`

Data type: `Optional[String]`
Expand Down
10 changes: 8 additions & 2 deletions manifests/init.pp
Expand Up @@ -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,
Expand Down Expand Up @@ -48,8 +52,10 @@
require => Yum::Install[$package],
}

alternatives { $cmd:
path => $dest,
if $set_alternatives {
alternatives { $cmd:
path => $dest,
}
}
}
}
32 changes: 32 additions & 0 deletions manifests/java17.pp
Expand Up @@ -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.
#
Expand All @@ -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,
) {
Expand All @@ -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,
}
}
}
}
8 changes: 7 additions & 1 deletion spec/classes/init_spec.rb
Expand Up @@ -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

0 comments on commit 263cafd

Please sign in to comment.