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
Raw Permalink Normal View History

2018-09-16 12:09:04 +02:00
#!/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:
2018-11-11 02:36:52 +01:00
proc = subprocess.check_output(
args, stderr=subprocess.STDOUT, universal_newlines=True)
2018-09-16 12:09:04 +02:00
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,})")
2018-09-16 12:09:04 +02:00
vendor = "zulu"
2018-11-11 02:36:52 +01:00
version = "%s-jdk%s" % (exp_zulu.search(line).group(1),
exp_jdk.search(line).group())
2018-09-16 12:09:04 +02:00
else:
exp = re.compile(r"(\d+(\.\d+){1,})")
2018-09-16 12:09:04 +02:00
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)
2018-11-11 02:36:52 +01:00
except OSError:
result.update(vendor="nobody")
result.update(version="0.0.0")
result.update(error=False)
2018-09-16 12:09:04 +02:00
except Exception as e:
result.update(error=True)
result.update(message=str(e))
2018-09-16 12:09:04 +02:00
print(json.dumps(result))
2018-09-16 12:09:04 +02:00
if __name__ == "__main__":
main()