Source code for insights.combiners.package_provides_java

"""
PackageProvidesJavaAll - Combiner for packages which provide java
=================================================================

Combiner for collecting all the java command and the corresponding package name
which is parsed by the PackageProvidesJava parser.

"""

from .. import LegacyItemAccess
from insights.core.plugins import combiner
from insights.parsers.package_provides_java import PackageProvidesJava


[docs]@combiner(PackageProvidesJava) class PackageProvidesJavaAll(LegacyItemAccess): """ Combiner for collecting all the java command and the corresponding package name which is parsed by the PackageProvidesJava parser. It works as a ``dict`` with the java command as the key and the corresponding package name as the value. Examples: >>> PACKAGE_COMMAND_MATCH_1 = '''/usr/lib/jvm/jre/bin/java java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64''' >>> PACKAGE_COMMAND_MATCH_2 = '''/usr/lib/jvm/java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64/bin/java java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64''' >>> pack1 = PackageProvidesJava(context_wrap(PACKAGE_COMMAND_MATCH_1)) >>> pack2 = PackageProvidesJava(context_wrap(PACKAGE_COMMAND_MATCH_2)) >>> shared = [{PackageProvidesJavaAll: [pack1, pack2]}] >>> packages = shared[PackageProvidesJavaAll] >>> packages.running_javas ['/usr/lib/jvm/jre/bin/java', '/usr/lib/jvm/java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64/bin/java'] >>> packages.get_package("/usr/lib/jvm/jre/bin/java") 'java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64' >>> packages.get("/usr/lib/jvm/jre/bin/java") 'java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64' >>> packages["/usr/lib/jvm/jre/bin/java"] 'java-1.8.0-openjdk-headless-1.8.0.141-3.b16.el6_9.x86_64' """ def __init__(self, package_provides_java): self.data = {} for pkg in package_provides_java: self.data[pkg.command] = pkg.package super(PackageProvidesJavaAll, self).__init__() @property def running_javas(self): """ Returns the list of java commands which are running on the system. """ return self.data.keys()
[docs] def get_package(self, java_command): """ Returns the installed java package that provides the specified `java_command`. Parameters: java_command (str): The specified java command, e.g. found in ``ps`` command. Returns: (str): The package that provides the java command. """ return self.data.get(java_command)