Example #1
0
def parse_partition_info(parted_output):
    lines = parted_output.split('\n')
    generic_params = lines[1].rstrip(';').split(':')
    generic = {
        'dev': generic_params[0],
        'size': utils.parse_unit(generic_params[1], 'MiB'),
        'logical_block': int(generic_params[3]),
        'physical_block': int(generic_params[4]),
        'table': generic_params[5],
        'model': generic_params[6]
    }
    parts = []
    for line in lines[2:]:
        line = line.strip().rstrip(';')
        if not line:
            continue
        part_params = line.split(':')
        part = {
            'disk_dev': generic['dev'],
            'name': "%s%s" % (generic['dev'], int(part_params[0])),
            'num': int(part_params[0]),
            'begin': utils.parse_unit(part_params[1], 'MiB'),
            'end': utils.parse_unit(part_params[2], 'MiB'),
            'size': utils.parse_unit(part_params[3], 'MiB'),
            'fstype': part_params[4] or None,
            'type': None,
            'flags': []
        }
        if part['fstype'] != 'free':
            part['type'] = part_params[5] or None
            part['flags'] = [f for f in part_params[6].split(', ') if f]

        parts.append(part)

    return {'generic': generic, 'parts': parts}
Example #2
0
def parse_partition_info(parted_output):
    lines = parted_output.split('\n')
    generic_params = lines[1].rstrip(';').split(':')
    generic = {
        'dev': generic_params[0],
        'size': utils.parse_unit(generic_params[1], 'MiB'),
        'logical_block': int(generic_params[3]),
        'physical_block': int(generic_params[4]),
        'table': generic_params[5],
        'model': generic_params[6]
    }
    parts = []
    for line in lines[2:]:
        line = line.strip().rstrip(';')
        if not line:
            continue
        part_params = line.split(':')
        part = {
            'disk_dev': generic['dev'],
            'name': "%s%s" % (generic['dev'], int(part_params[0])),
            'num': int(part_params[0]),
            'begin': utils.parse_unit(part_params[1], 'MiB'),
            'end': utils.parse_unit(part_params[2], 'MiB'),
            'size': utils.parse_unit(part_params[3], 'MiB'),
            'fstype': part_params[4] or None,
            'type': None,
            'flags': []
        }
        if part['fstype'] != 'free':
            part['type'] = part_params[5] or None
            part['flags'] = [f for f in part_params[6].split(', ') if f]

        parts.append(part)

    return {'generic': generic, 'parts': parts}
Example #3
0
def vgdisplay_parse(output):
    vgs = []
    for line in output.split('\n'):
        line = line.strip()
        if not line:
            continue
        vg_params = line.split(';')
        vgs.append({
            'name': vg_params[0],
            'uuid': vg_params[1],
            'size': utils.parse_unit(vg_params[2], 'm'),
            'free': utils.parse_unit(vg_params[3], 'm', ceil=False)
        })
    LOG.debug('Found volume groups: {0}'.format(vgs))
    return vgs
Example #4
0
def vgdisplay_parse(output):
    vgs = []
    for line in output.split('\n'):
        line = line.strip()
        if not line:
            continue
        vg_params = line.split(';')
        vgs.append({
            'name': vg_params[0],
            'uuid': vg_params[1],
            'size': utils.parse_unit(vg_params[2], 'm'),
            'free': utils.parse_unit(vg_params[3], 'm', ceil=False)
        })
    LOG.debug('Found volume groups: {0}'.format(vgs))
    return vgs
Example #5
0
def pvdisplay_parse(output):
    pvs = []
    for line in output.split('\n'):
        line = line.strip()
        if not line:
            continue
        pv_params = line.split(';')
        pvs.append({
            'name': pv_params[0],
            'vg': pv_params[1] or None,
            'psize': utils.parse_unit(pv_params[2], 'm'),
            'devsize': utils.parse_unit(pv_params[3], 'm'),
            'uuid': pv_params[4]
        })
    LOG.debug('Found physical volumes: {0}'.format(pvs))
    return pvs
Example #6
0
def pvdisplay_parse(output):
    pvs = []
    for line in output.split('\n'):
        line = line.strip()
        if not line:
            continue
        pv_params = line.split(';')
        pvs.append({
            'name': pv_params[0],
            'vg': pv_params[1] or None,
            'psize': utils.parse_unit(pv_params[2], 'm'),
            'devsize': utils.parse_unit(pv_params[3], 'm'),
            'uuid': pv_params[4]
        })
    LOG.debug('Found physical volumes: {0}'.format(pvs))
    return pvs
Example #7
0
 def test_parse_unit(self):
     self.assertEqual(utils.parse_unit("1.00m", "m", ceil=True), 1)
     self.assertEqual(utils.parse_unit("1.00m", "m", ceil=False), 1)
     self.assertEqual(utils.parse_unit("1.49m", "m", ceil=True), 2)
     self.assertEqual(utils.parse_unit("1.49m", "m", ceil=False), 1)
     self.assertEqual(utils.parse_unit("1.51m", "m", ceil=True), 2)
     self.assertEqual(utils.parse_unit("1.51m", "m", ceil=False), 1)
     self.assertRaises(ValueError, utils.parse_unit, "1.00m", "MiB")
     self.assertRaises(ValueError, utils.parse_unit, "", "MiB")
Example #8
0
 def test_parse_unit(self):
     self.assertEqual(utils.parse_unit('1.00m', 'm', ceil=True), 1)
     self.assertEqual(utils.parse_unit('1.00m', 'm', ceil=False), 1)
     self.assertEqual(utils.parse_unit('1.49m', 'm', ceil=True), 2)
     self.assertEqual(utils.parse_unit('1.49m', 'm', ceil=False), 1)
     self.assertEqual(utils.parse_unit('1.51m', 'm', ceil=True), 2)
     self.assertEqual(utils.parse_unit('1.51m', 'm', ceil=False), 1)
     self.assertRaises(ValueError, utils.parse_unit, '1.00m', 'MiB')
     self.assertRaises(ValueError, utils.parse_unit, '', 'MiB')
Example #9
0
 def test_parse_unit(self):
     self.assertEqual(utils.parse_unit('1.00m', 'm', ceil=True), 1)
     self.assertEqual(utils.parse_unit('1.00m', 'm', ceil=False), 1)
     self.assertEqual(utils.parse_unit('1.49m', 'm', ceil=True), 2)
     self.assertEqual(utils.parse_unit('1.49m', 'm', ceil=False), 1)
     self.assertEqual(utils.parse_unit('1.51m', 'm', ceil=True), 2)
     self.assertEqual(utils.parse_unit('1.51m', 'm', ceil=False), 1)
     self.assertRaises(ValueError, utils.parse_unit, '1.00m', 'MiB')
     self.assertRaises(ValueError, utils.parse_unit, '', 'MiB')
Example #10
0
def lvdisplay_parse(output):
    lvs = []
    for line in output.split('\n'):
        line = line.strip()
        if not line:
            continue
        lv_params = line.split(';')
        lvs.append({
            'name': lv_params[0],
            'size': utils.parse_unit(lv_params[1], 'm'),
            'vg': lv_params[2],
            'uuid': lv_params[3],
            # NOTE(agordeev): simulate lv_path with '/dev/$vg_name/$lv_name'
            'path': '/dev/%s/%s' % (lv_params[2], lv_params[0])
        })
    LOG.debug('Found logical volumes: {0}'.format(lvs))
    return lvs
Example #11
0
def lvdisplay_parse(output):
    lvs = []
    for line in output.split('\n'):
        line = line.strip()
        if not line:
            continue
        lv_params = line.split(';')
        lvs.append({
            'name': lv_params[0],
            'size': utils.parse_unit(lv_params[1], 'm'),
            'vg': lv_params[2],
            'uuid': lv_params[3],
            # NOTE(agordeev): simulate lv_path with '/dev/$vg_name/$lv_name'
            'path': '/dev/%s/%s' % (lv_params[2], lv_params[0])
        })
    LOG.debug('Found logical volumes: {0}'.format(lvs))
    return lvs