"""
System block files under ``/sys/block``
=======================================
This module contains the following parsers:
StableWrites - file ``/sys/block/*/queue/stable_writes``
--------------------------------------------------------
MaxSegmentSize - file ``/sys/block/*/queue/max_segment_size``
-------------------------------------------------------------
DiscardMaxBytes - file ``/sys/block/*/queue/discard_max_bytes``
---------------------------------------------------------------
"""
from insights import Parser, parser
from insights.core.exceptions import ParseException
from insights.specs import Specs
[docs]
@parser(Specs.sys_block_queue_stable_writes)
class StableWrites(Parser):
"""
Class for parsing the ``/sys/block/*/queue/stable_writes`` files.
Typical content of the file is::
1
Examples:
>>> type(block_stable_writes)
<class 'insights.parsers.sys_block.StableWrites'>
>>> block_stable_writes.stable_writes
1
>>> block_stable_writes.device
'sda'
Raises:
ParseException: When content is empty or unparsable
"""
[docs]
def parse_content(self, content):
if len(content) != 1:
raise ParseException('Error: {0}'.format(content if content else 'empty file'))
try:
self._stable_writes = int(content[0].strip())
self._device = self.file_path.split('/')[-3]
except ValueError:
raise ParseException("Error: unparsable content: {0}".format(content[0]))
@property
def stable_writes(self):
""" int: Value of ``stable_writes``."""
return self._stable_writes
@property
def device(self):
""" str: Block device name from file path."""
return self._device
[docs]
@parser(Specs.sys_block_queue_max_segment_size)
class MaxSegmentSize(Parser):
"""
Class for parsing the ``/sys/block/*/queue/max_segment_size`` files.
Typical content of the file is::
4294967295
Examples:
>>> type(max_segment_size)
<class 'insights.parsers.sys_block.MaxSegmentSize'>
>>> max_segment_size.max_segment_size
4294967295
>>> max_segment_size.device
'sda'
Raises:
ParseException: When content is empty or unparsable
"""
[docs]
def parse_content(self, content):
if len(content) != 1:
raise ParseException('Error: {0}'.format(content or 'empty file'))
try:
self._max_segment_size = int(content[0].strip())
self._device = self.file_path.split('/')[-3]
except ValueError:
raise ParseException("Error: unparsable content: {0}".format(content[0]))
max_segment_size = property(lambda self: self._max_segment_size)
device = property(lambda self: self._device)
[docs]
@parser(Specs.sys_block_queue_discard_max_bytes)
class DiscardMaxBytes(Parser):
"""
Class for parsing the ``/sys/block/*/queue/discard_max_bytes`` files.
Typical content of the file is::
0
Examples:
>>> type(discard_max_bytes)
<class 'insights.parsers.sys_block.DiscardMaxBytes'>
>>> discard_max_bytes.discard_max_bytes
0
>>> discard_max_bytes.device
'sda'
Raises:
ParseException: When content is empty or unparsable
"""
[docs]
def parse_content(self, content):
if len(content) != 1:
raise ParseException('Error: {0}'.format(content or 'empty file'))
try:
self._discard_max_bytes = int(content[0].strip())
self._device = self.file_path.split('/')[-3]
except ValueError:
raise ParseException("Error: unparsable content: {0}".format(content[0]))
discard_max_bytes = property(lambda self: self._discard_max_bytes)
device = property(lambda self: self._device)