From 1d3fc3b407dfd21afda96427eac8178377d4bdca Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 1 Sep 2023 17:44:14 -0700 Subject: [PATCH 1/5] Add option to not set /usr/bin jdk8 alternatives --- manifests/init.pp | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/manifests/init.pp b/manifests/init.pp index 045a5c6..9e1bf3e 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -16,10 +16,15 @@ # https://bugs.openjdk.java.net/browse/JDK-8202528 # TODO this seems like something we should derive. # +# @param set_alternatives +# Optional boolean. 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', + 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', + Optional[Boolean] $set_alternatives = true, ) { yum::install { $package: ensure => present, @@ -48,8 +53,10 @@ require => Yum::Install[$package], } - alternatives { $cmd: - path => $dest, + if $set_alternatives { + alternatives { $cmd: + path => $dest, + } } } } From 7ccb26f51d1fc33dcda284f8556839904cc856ab Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Fri, 1 Sep 2023 17:44:48 -0700 Subject: [PATCH 2/5] Define java17 alternatives, and add option to set them --- manifests/java17.pp | 43 ++++++++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/manifests/java17.pp b/manifests/java17.pp index f508221..7d8fa30 100644 --- a/manifests/java17.pp +++ b/manifests/java17.pp @@ -16,12 +16,17 @@ # @param source_pass # Optional string giving password to access source URL. # +# @param set_alternatives +# Optional boolean. If true, set the /usr/bin alternatives +# to point to this version. +# class java_artisanal::java17 ( - 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', - Optional[String] $source_user = undef, - Optional[String] $source_pass = undef, + 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', + Optional[String] $source_user = undef, + Optional[String] $source_pass = undef, + Optional[Boolean] $set_alternatives = !$java_artisanal::set_alternatives, ) { $rpmfile = "/var/tmp/${package}-${version}.rpm" @@ -37,4 +42,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, + } + } + } } From c1e1ff0a85246ba47b2ce69012b05353535c3dca Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 6 Sep 2023 17:11:35 -0700 Subject: [PATCH 3/5] regenerate REFERENCE.md --- REFERENCE.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/REFERENCE.md b/REFERENCE.md index 3966853..8048fce 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,15 @@ TODO this seems like something we should derive. Default value: `'jdk1.8.0_202-amd64'` +##### `set_alternatives` + +Data type: `Optional[Boolean]` + +Optional 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 @@ -66,6 +76,7 @@ The following parameters are available in the `java_artisanal::java17` class: * [`version`](#-java_artisanal--java17--version) * [`source_user`](#-java_artisanal--java17--source_user) * [`source_pass`](#-java_artisanal--java17--source_pass) +* [`set_alternatives`](#-java_artisanal--java17--set_alternatives) ##### `source` @@ -107,3 +118,12 @@ Optional string giving password to access source URL. Default value: `undef` +##### `set_alternatives` + +Data type: `Optional[Boolean]` + +Optional boolean. If true, set the /usr/bin alternatives +to point to this version. + +Default value: `!$java_artisanal::set_alternatives` + From 8d27aedb8fa7d066b1331be7d8f030985e671979 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 6 Sep 2023 17:17:42 -0700 Subject: [PATCH 4/5] Avoid optional parameters with defaults that are not undef https://github.com/voxpupuli/puppet-lint-optional_default-check --- REFERENCE.md | 24 +++++++++++------------- manifests/init.pp | 11 +++++------ manifests/java17.pp | 19 +++++++++---------- 3 files changed, 25 insertions(+), 29 deletions(-) diff --git a/REFERENCE.md b/REFERENCE.md index 8048fce..f7419b2 100644 --- a/REFERENCE.md +++ b/REFERENCE.md @@ -56,10 +56,9 @@ Default value: `'jdk1.8.0_202-amd64'` ##### `set_alternatives` -Data type: `Optional[Boolean]` +Data type: `Boolean` -Optional boolean. If false, do not set the /usr/bin alternatives -to point to this version. +If false, do not set the /usr/bin alternatives to point to this version. Default value: `true` @@ -74,9 +73,9 @@ 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) -* [`set_alternatives`](#-java_artisanal--java17--set_alternatives) ##### `source` @@ -102,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]` @@ -118,12 +125,3 @@ Optional string giving password to access source URL. Default value: `undef` -##### `set_alternatives` - -Data type: `Optional[Boolean]` - -Optional boolean. If true, set the /usr/bin alternatives -to point to this version. - -Default value: `!$java_artisanal::set_alternatives` - diff --git a/manifests/init.pp b/manifests/init.pp index 9e1bf3e..a155884 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -17,14 +17,13 @@ # TODO this seems like something we should derive. # # @param set_alternatives -# Optional boolean. If false, do not set the /usr/bin alternatives -# to point to this version. +# 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', - Optional[Boolean] $set_alternatives = true, + 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, diff --git a/manifests/java17.pp b/manifests/java17.pp index 7d8fa30..693ac43 100644 --- a/manifests/java17.pp +++ b/manifests/java17.pp @@ -10,23 +10,22 @@ # @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. # # @param source_pass # Optional string giving password to access source URL. # -# @param set_alternatives -# Optional boolean. If true, set the /usr/bin alternatives -# to point to this version. -# class java_artisanal::java17 ( - 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', - Optional[String] $source_user = undef, - Optional[String] $source_pass = undef, - Optional[Boolean] $set_alternatives = !$java_artisanal::set_alternatives, + 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, ) { $rpmfile = "/var/tmp/${package}-${version}.rpm" From 89d10466e05dc612c7f3a077233d515170ee22f4 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Wed, 6 Sep 2023 17:32:31 -0700 Subject: [PATCH 5/5] Test for jdk8 alternatives being set by default --- spec/classes/init_spec.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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