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