Source code for insights.parsers.proc_environ

"""
ProcEnviron - File ``/proc/<PID>/environ``
==========================================

Parser for parsing the ``environ`` file under ``/proc/<PID>``
directory.

"""
from insights.core import LegacyItemAccess, Parser
from insights.core.exceptions import ParseException, SkipComponent
from insights.core.plugins import parser
from insights.specs import Specs


[docs] class ProcEnviron(Parser, LegacyItemAccess): """ Base class for parsing the ``environ`` file under special ``/proc/<PID>`` directory into a dictionaries with environment variable name as key and containing environment variable value. Typical content looks like:: REGISTRIES=--add-registry registry.access.redhat.com \x00OPTIONS= --selinux-enabled --signature-verification=False\x00DOCKER_HTTP_HOST_COMPAT=1\x00ADD_REGISTRY=--add-registry registry.access.redhat.com\x00PATH=/usr/libexec/docker:/usr/bin:/usr/sbin\x00PWD=/run/docker/libcontainerd/containerd/135240dbd15a834acb21d68867930917afcc84c5f006ba65004acd88dccab756/init\x00LANG=en_US.UTF-8\x00GOTRACEBACK=crash\x00DOCKER_NETWORK_OPTIONS= --mtu=1450\x00DOCKER_CERT_PATH=/etc/docker\x00SHLVL=0\x00DOCKER_STORAGE_OPTIONS=--storage-driver devicemapper --storage-opt dm.fs=xfs --storage-opt dm.thinpooldev=/dev/mapper/docker--vg-docker--pool --storage-opt dm.use_deferred_removal=true --storage-opt dm.use_deferred_deletion=true \x00 Examples: >>> proc_environ['REGISTRIES'] '--add-registry registry.access.redhat.com' >>> 'OPTIONS' in proc_environ True Raises: insights.core.exceptions.SkipComponent: if the ``environ`` file is empty or doesn't exist. insights.core.exceptions.ParseException: if the ``environ`` file content is incorrect. """
[docs] def parse_content(self, content): if not content: raise SkipComponent("Empty output.") if len(content) != 1: raise ParseException("Incorrect content: '{0}'".format(content[-1])) self.data = {} for item in content[0].split('\x00'): if '=' in item: k, v = item.strip().split('=', 1) self.data[k] = v elif item: raise ParseException("Incorrect content: '{0}'".format(item))
[docs] @parser(Specs.openshift_fluentd_environ) class OpenshiftFluentdEnviron(ProcEnviron): """ Class for parsing the ``environ`` file of the ``fluentd`` process. """ pass
[docs] @parser(Specs.openshift_router_environ) class OpenshiftRouterEnviron(ProcEnviron): """ Class for parsing the ``environ`` file of the ``openshift-route`` process. """ pass