Source code for insights.parsers.dmsetup

"""
dmsetup commands - Command ``dmsetup``
======================================

Parsers for parsing and extracting data from output of commands related to
``dmsetup``.
Parsers contained in this module are:

DmsetupInfo - command ``dmsetup info -C``
-----------------------------------------

"""

from insights import parser, CommandParser
from insights.parsers import parse_delimited_table
from insights.specs import Specs


[docs]@parser(Specs.dmsetup_info) class DmsetupInfo(CommandParser): """ ``dmsetup info -C`` command output Example input:: Name Maj Min Stat Open Targ Event UUID VG00-tmp 253 8 L--w 1 1 0 LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTax6lLmBji2ueSbX49gxcV76M29cmukQiw4 VG00-home 253 3 L--w 1 1 0 LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTaxCqXOnbGe2zjhX923dFiIdl1oi7mO9tXp VG00-var 253 6 L--w 1 2 0 LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTaxicvyvt67113nTb8vMlGfgdEjDx0LKT2O VG00-swap 253 1 L--w 2 1 0 LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTax3Ll2XhOYZkylx1CjOQi7G4yHgrIOsyqG VG00-root 253 0 L--w 1 1 0 LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTaxKpnAKYhrYMYMNMwjegkW965bUgtJFTRY VG00-var_log_audit 253 5 L--w 1 1 0 LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTaxwQ8R0XWJRm86QX3befq1cHRy47Von6ZW Example data structure produced:: data = [ { 'Stat': 'L--w', 'Name': 'VG00-tmp', 'Min': '8', 'Targ': '1', 'Maj': '253', 'Open': '1', 'Event': '0', 'UUID': 'LVM-gy9uAwD7LuTIApplr2sogbOx5iS0FTax6lLmBji2ueSbX49gxcV76M29cmukQiw4' },... ] Attributes: data (list): List of devices found, in order names (list): Device names, in order found uuids (list): UUID by_name (dict): Access to each device by devicename by_uuid (dict): Access to each device by uuid Example: >>> len(info) 6 >>> info.names[0] 'VG00-tmp' >>> info[1]['Maj'] '253' >>> info[1]['Stat'] 'L--w' """
[docs] def parse_content(self, content): self.data = parse_delimited_table(content) self.names = [dm['Name'] for dm in self.data if 'Name' in dm] self.by_name = dict((dm['Name'], dm) for dm in self.data if 'Name' in dm) self.uuids = [dm['UUID'] for dm in self.data if 'UUID' in dm] self.by_uuid = dict((dm['UUID'], dm) for dm in self.data if 'UUID' in dm)
def __len__(self): """ The length of the devices list """ return len(self.data) def __iter__(self): """ Iterate through the devices list """ for dm in self.data: yield dm def __getitem__(self, idx): """ Fetch a device by index in devices list """ return self.data[idx]