This patch allows to parse a release version number introduced in DRBD 8.4.7-1.
Signed-off-by: Jun Futagawa <[email protected]> --- lib/storage/drbd_info.py | 16 +++++++++++----- test/py/ganeti.storage.drbd_unittest.py | 10 ++++++++++ 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/lib/storage/drbd_info.py b/lib/storage/drbd_info.py index 99605f1..4fd9a67 100644 --- a/lib/storage/drbd_info.py +++ b/lib/storage/drbd_info.py @@ -164,7 +164,8 @@ class DRBD8Info(object): """ - _VERSION_RE = re.compile(r"^version: (\d+)\.(\d+)\.(\d+)(?:\.(\d+))?" + _VERSION_RE = re.compile(r"^version: (\d+)\.(\d+)\.(\d+)" + r"(?:\.(\d+))?(?:-(\d+))?" r" \(api:(\d+)/proto:(\d+)(?:-(\d+))?\)") _VALID_LINE_RE = re.compile("^ *([0-9]+): cs:([^ ]+).*$") @@ -180,6 +181,7 @@ class DRBD8Info(object): - k_minor - k_point - k_fix (only on some drbd versions) + - k_release - api - proto - proto2 (only on drbd > 8.2.X) @@ -196,6 +198,8 @@ class DRBD8Info(object): (version["k_major"], version["k_minor"], version["k_point"]) if "k_fix" in version: retval += ".%s" % version["k_fix"] + if "k_release" in version: + retval += "-%s" % version["k_release"] retval += " (api:%d/proto:%d" % (version["api"], version["proto"]) if "proto2" in version: @@ -230,13 +234,15 @@ class DRBD8Info(object): "k_major": int(values[0]), "k_minor": int(values[1]), "k_point": int(values[2]), - "api": int(values[4]), - "proto": int(values[5]), + "api": int(values[5]), + "proto": int(values[6]), } if values[3] is not None: retval["k_fix"] = values[3] - if values[6] is not None: - retval["proto2"] = values[6] + if values[4] is not None: + retval["k_release"] = values[4] + if values[7] is not None: + retval["proto2"] = values[7] return retval diff --git a/test/py/ganeti.storage.drbd_unittest.py b/test/py/ganeti.storage.drbd_unittest.py index 9a1894f..2c181e8 100755 --- a/test/py/ganeti.storage.drbd_unittest.py +++ b/test/py/ganeti.storage.drbd_unittest.py @@ -50,6 +50,7 @@ class TestDRBD8(testutils.GanetiTestCase): "version: 8.0.12 (api:76/proto:86-91)", "version: 8.2.7 (api:88/proto:0-100)", "version: 8.3.7.49 (api:188/proto:13-191)", + "version: 8.4.7-1 (api:1/proto:86-101)", ] result = [ { @@ -83,6 +84,15 @@ class TestDRBD8(testutils.GanetiTestCase): "api": 188, "proto": 13, "proto2": "191", + }, + { + "k_major": 8, + "k_minor": 4, + "k_point": 7, + "k_release": "1", + "api": 1, + "proto": 86, + "proto2": "101", } ] for d, r in zip(data, result): -- 1.7.1
