This repository has been archived on 2022-06-20. You can view files and clone it, but cannot push or open issues or pull requests.
custom_facts/jdk.py

70 lines
1.5 KiB
Python
Executable File

#!/usr/bin/env python2.7
# -*- coding: UTF-8 -*-
import re
import json
import subprocess
from collections import defaultdict
def fetch_java_version():
lines = []
cmd = "java -version"
args = cmd.split(" ")
try:
proc = subprocess.check_output(
args, stderr=subprocess.STDOUT, universal_newlines=True)
proc = proc.splitlines()
for line in proc:
lines.append(line.rstrip())
except Exception:
raise
return lines
def get_vendor_version():
lines = fetch_java_version()
line = lines[1].lower()
vendor = (line.split()[0]).lower()
if vendor == "openjdk" and "zulu" in line:
exp_jdk = re.compile(r"(\d+(\.\d+){1,}_\d+)")
exp_zulu = re.compile(r"zulu (\d+(\.\d+){1,})")
vendor = "zulu"
version = "%s-jdk%s" % (exp_zulu.search(line).group(1),
exp_jdk.search(line).group())
else:
exp = re.compile(r"(\d+(\.\d+){1,})")
version = exp.search(line).group()
return (vendor, version)
def main():
result = defaultdict(dict)
try:
vendor, version = get_vendor_version()
result.update(vendor=vendor)
result.update(version=version)
result.update(error=False)
except OSError:
result.update(vendor="nobody")
result.update(version="0.0.0")
result.update(error=False)
except Exception as e:
result.update(error=True)
result.update(message=str(e))
print(json.dumps(result))
if __name__ == "__main__":
main()