Source code for insights.parsers.dcbtool_gc_dcb
"""
Dcbtool - Command ``/sbin/dcbtool gc {interface} dcb``
======================================================
Parse Lines from the `dcbtool gc eth1 dcb` to check DCBX if enabled
Successful completion of the command returns data similar to::
Command: Get Config
Feature: DCB State
Port: eth0
Status: Off
DCBX Version: FORCED CIN
The keys in this data are converted to lower case and spaces are converted
to underscores.
An `is_on` attribute is also provided to indicate if the status is 'On'.
Examples:
>>> dcbstate = shared[Dcbtool]
>>> dcb.data
{
"command": "Get Config",
"feature": "DCB State",
"port": "eth0",
"status": "Off"
"dcbx_version":"FORCED CIN"
}
>>> dcb['port']
'eth0'
>>> dcb['state']
'Off'
>>> dcb.is_on
False
If a "Connection refused" error is encountered,
an empty dictionary is returned`.
"""
from .. import parser, LegacyItemAccess, CommandParser, get_active_lines
from insights.specs import Specs
[docs]
@parser(Specs.dcbtool_gc_dcb)
class Dcbtool(LegacyItemAccess, CommandParser):
"""
Parse the output of the `dcbtool` command.
If the command output contains 'Connection refused', no data is stored.
The LegacyItemAccess mixin class is used to provide direct access to the
data.
Attributes:
data (dict): A dictionary of the content of the command output.
is_on: (bool): Is the status of the interface 'On'?
"""
[docs]
def parse_content(self, content):
self.data = {}
if "Connection refused" in content[0]:
return
for line in get_active_lines(content):
key, value = line.split(":", 1)
key = key.lower().replace(" ", "_")
self.data[key] = value.strip()
self.is_on = (self.data['status'] == 'On')