Allow switching between side-by-side JDK versions
diff --git a/ansible/roles/common/tasks/main.yml b/ansible/roles/common/tasks/main.yml
index bfa6e2f..385666a 100644
--- a/ansible/roles/common/tasks/main.yml
+++ b/ansible/roles/common/tasks/main.yml
@@ -39,6 +39,17 @@
retries: 10
delay: 15
until: yumresult is not failed
+- name: "get exact jdk folder path"
+ find:
+ file_type: directory
+ paths: /usr/lib/jvm/
+ patterns: "{{ jdk_folder_pattern }}"
+ register: actual_jdk_folder
+- name: "ensure correct version of jdk is selected"
+ alternatives:
+ link: /usr/lib/jvm/java
+ name: java-openjdk
+ path: "{{ actual_jdk_folder.files[0].path }}"
- name: "configure node shutdown"
shell: shutdown +{{ shutdown_delay_minutes }} &> {{ user_home }}/.shutdown creates={{ user_home }}/.shutdown
when: shutdown_delay_minutes > 0
diff --git a/lib/muchos/config/base.py b/lib/muchos/config/base.py
index 2956b57..6b24a25 100644
--- a/lib/muchos/config/base.py
+++ b/lib/muchos/config/base.py
@@ -358,14 +358,7 @@
def version(self, software_id):
return self.get("general", software_id + "_version")
- @ansible_host_var
- def java_product_version(self):
- java_version_map = {
- "java-1.8.0-openjdk": 8,
- "java-11-openjdk": 11,
- "java-latest-openjdk": 13,
- }
-
+ def filter_by_java_version(self, dict_to_search):
# Given that a user might chose to install a specific JDK version
# (where the version is suffixed to package name) it is safer
# to check if the configured Java version starts with one of the above
@@ -373,7 +366,7 @@
configured_java_version = self.get("general", "java_package")
filtered_java_versions = {
k: v
- for (k, v) in java_version_map.items()
+ for (k, v) in dict_to_search.items()
if configured_java_version.startswith(k)
}
if len(filtered_java_versions) != 1:
@@ -384,6 +377,26 @@
return next(iter(filtered_java_versions.values()))
+ @ansible_host_var
+ def java_product_version(self):
+ java_version_map = {
+ "java-1.8.0-openjdk": 8,
+ "java-11-openjdk": 11,
+ "java-latest-openjdk": 14,
+ }
+
+ return self.filter_by_java_version(java_version_map)
+
+ @ansible_host_var
+ def jdk_folder_pattern(self):
+ jdk_folder_pattern_map = {
+ "java-1.8.0-openjdk": "java-1.8.0-openjdk*x86_64",
+ "java-11-openjdk": "java-11-openjdk*x86_64",
+ "java-latest-openjdk": "java-14-openjdk*x86_64",
+ }
+
+ return self.filter_by_java_version(jdk_folder_pattern_map)
+
def checksum(self, software):
return self.checksum_ver(software, self.version(software))