diff --git a/netutils/os_version.py b/netutils/os_version.py index 3edc07f4..8e3574fb 100644 --- a/netutils/os_version.py +++ b/netutils/os_version.py @@ -258,9 +258,9 @@ def _basic_version_metadata(version: str) -> t.Dict[str, t.Any]: basic_regex: re.Pattern[str] = re.compile( r""" ^ - (?P0|[1-9]\d*) + 0*(?P\d+) \. - (?P0|[1-9]\d*)? + (?:0*(?P\d+))? .*$ """, re.VERBOSE, diff --git a/tests/unit/test_os_versions.py b/tests/unit/test_os_versions.py index e647fd6e..e4a38d89 100755 --- a/tests/unit/test_os_versions.py +++ b/tests/unit/test_os_versions.py @@ -50,6 +50,30 @@ "vendor_metadata": False, }, }, + { + "sent": {"vendor": "cisco", "platform": "ios", "version": "03.03.05SE"}, + "received": { + "major": "3", + "minor": "3", + "vendor_metadata": False, + }, + }, + { + "sent": {"vendor": "cisco", "platform": "ios", "version": "3.03.05SE"}, + "received": { + "major": "3", + "minor": "3", + "vendor_metadata": False, + }, + }, + { + "sent": {"vendor": "cisco", "platform": "ios", "version": "3.3.05SE"}, + "received": { + "major": "3", + "minor": "3", + "vendor_metadata": False, + }, + }, # Juniper Junos uses a custom parser { "sent": {"vendor": "juniper", "platform": "junos", "version": "12.4R"},