Source code for insights.parsers.avc_hash_stats

"""
AvcHashStats - File ``/sys/fs/selinux/avc/hash_stats``
======================================================

This parser reads the content of ``/sys/fs/selinux/avc/hash_stats``.
"""

from .. import parser, CommandParser, LegacyItemAccess

from ..parsers import get_active_lines
from insights.specs import Specs


[docs] @parser(Specs.avc_hash_stats) class AvcHashStats(CommandParser, LegacyItemAccess): """ Class ``AvcHashStats`` parses the content of the ``/sys/fs/selinux/avc/hash_stats``. Attributes: entries (int): It is used to show the count of avc hash entries. buckets (int): It is used to show the total count of buckets. buckets_used (int): It is used to show the count of used buckets. longest_chain (int): It is used to show the longest chain. A typical sample of the content of this file looks like:: entries: 509 buckets used: 290/512 longest chain: 7 Examples: >>> type(avc_hash_stats) <class 'insights.parsers.avc_hash_stats.AvcHashStats'> >>> avc_hash_stats.entries 509 >>> avc_hash_stats.buckets 512 >>> avc_hash_stats.buckets_used 290 >>> avc_hash_stats.longest_chain 7 """
[docs] def parse_content(self, content): self.data = {} for line in get_active_lines(content): key, value = map(lambda x: x.strip(), line.split(':')) self.data.update({key: value}) self.entries = int(self.data['entries']) if 'entries' in self.data else None self.buckets_used, self.buckets = map(lambda x: int(x.strip()), self.data['buckets used'].split('/')) \ if 'buckets used' in self.data else [None, None] self.longest_chain = int(self.data['longest chain']) if 'longest chain' in self.data else None