Revision 9122e60a
b/lib/bdev.py | ||
---|---|---|
792 | 792 |
""" |
793 | 793 |
_VERSION_RE = re.compile(r"^version: (\d+)\.(\d+)\.(\d+)" |
794 | 794 |
r" \(api:(\d+)/proto:(\d+)(?:-(\d+))?\)") |
795 |
_VALID_LINE_RE = re.compile("^ *([0-9]+): cs:([^ ]+).*$") |
|
796 |
_UNUSED_LINE_RE = re.compile("^ *([0-9]+): cs:Unconfigured$") |
|
795 | 797 |
|
796 | 798 |
_DRBD_MAJOR = 147 |
797 | 799 |
_ST_UNCONFIGURED = "Unconfigured" |
... | ... | |
817 | 819 |
_ThrowError("Can't read any data from %s", filename) |
818 | 820 |
return data |
819 | 821 |
|
820 |
@staticmethod
|
|
821 |
def _MassageProcData(data): |
|
822 |
@classmethod
|
|
823 |
def _MassageProcData(cls, data):
|
|
822 | 824 |
"""Transform the output of _GetProdData into a nicer form. |
823 | 825 |
|
824 | 826 |
@return: a dictionary of minor: joined lines from /proc/drbd |
825 | 827 |
for that minor |
826 | 828 |
|
827 | 829 |
""" |
828 |
lmatch = re.compile("^ *([0-9]+):.*$") |
|
829 | 830 |
results = {} |
830 | 831 |
old_minor = old_line = None |
831 | 832 |
for line in data: |
832 | 833 |
if not line: # completely empty lines, as can be returned by drbd8.0+ |
833 | 834 |
continue |
834 |
lresult = lmatch.match(line)
|
|
835 |
lresult = cls._VALID_LINE_RE.match(line)
|
|
835 | 836 |
if lresult is not None: |
836 | 837 |
if old_minor is not None: |
837 | 838 |
results[old_minor] = old_line |
... | ... | |
892 | 893 |
data = cls._GetProcData() |
893 | 894 |
|
894 | 895 |
used_devs = {} |
895 |
valid_line = re.compile("^ *([0-9]+): cs:([^ ]+).*$") |
|
896 | 896 |
for line in data: |
897 |
match = valid_line.match(line)
|
|
897 |
match = cls._VALID_LINE_RE.match(line)
|
|
898 | 898 |
if not match: |
899 | 899 |
continue |
900 | 900 |
minor = int(match.group(1)) |
... | ... | |
1025 | 1025 |
""" |
1026 | 1026 |
data = cls._GetProcData() |
1027 | 1027 |
|
1028 |
unused_line = re.compile("^ *([0-9]+): cs:Unconfigured$") |
|
1029 |
used_line = re.compile("^ *([0-9]+): cs:") |
|
1030 | 1028 |
highest = None |
1031 | 1029 |
for line in data: |
1032 |
match = unused_line.match(line)
|
|
1030 |
match = cls._UNUSED_LINE_RE.match(line)
|
|
1033 | 1031 |
if match: |
1034 | 1032 |
return int(match.group(1)) |
1035 |
match = used_line.match(line)
|
|
1033 |
match = cls._VALID_LINE_RE.match(line)
|
|
1036 | 1034 |
if match: |
1037 | 1035 |
minor = int(match.group(1)) |
1038 | 1036 |
highest = max(highest, minor) |
Also available in: Unified diff