summaryrefslogtreecommitdiffstats
path: root/booty/util.py
blob: 41287059db57906df969089d9dc469c51f6af838 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import string
from flags import flags

def getDiskPart(dev, storage):
    path = storage.devicetree.getDeviceByName(dev).path[5:]
    cut = len(dev)
    if (path.startswith('rd/') or path.startswith('ida/') or
            path.startswith('cciss/') or path.startswith('sx8/') or
            path.startswith('mapper/') or path.startswith('mmcblk') or
            path.startswith('md')):
        if dev[-2] == 'p':
            cut = -1
        elif dev[-3] == 'p':
            cut = -2
    else:
        if dev[-2] in string.digits:
            cut = -2
        elif dev[-1] in string.digits:
            cut = -1

    name = dev[:cut]

    # hack off the trailing 'p' from /dev/cciss/*, for example
    if name[-1] == 'p':
        for letter in name:
            if letter not in string.letters and letter != "/":
                name = name[:-1]
                break

    if cut < 0:
        partNum = int(dev[cut:]) - 1
    else:
        partNum = None

    return (name, partNum)