From 7ca86e1c0d68f45915d9f583ffaf149285905005 Mon Sep 17 00:00:00 2001 From: Sergio Correia Date: Tue, 3 Jun 2025 10:50:48 +0100 Subject: [PATCH 4/6] templates: duplicate str_to_version() in the adjust script As a follow-up of upstream PR#1486, duplicate the str_to_version() method in adjust.py so that we do not need the keylime modules in order for the configuration upgrade script to run. Signed-off-by: Sergio Correia --- templates/2.0/adjust.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/templates/2.0/adjust.py b/templates/2.0/adjust.py index 6008e4c..24ba898 100644 --- a/templates/2.0/adjust.py +++ b/templates/2.0/adjust.py @@ -4,9 +4,27 @@ import logging import re from configparser import RawConfigParser from logging import Logger -from typing import Dict, List, Optional, Tuple +from typing import Dict, Tuple, Union -from keylime.common.version import str_to_version + +def str_to_version(v_str: str) -> Union[Tuple[int, int], None]: + """ + Validates the string format and converts the provided string to a tuple of + ints which can be sorted and compared. + + :returns: Tuple with version number parts converted to int. In case of + invalid version string, returns None + """ + + # Strip to remove eventual quotes and spaces + v_str = v_str.strip('" ') + + m = re.match(r"^(\d+)\.(\d+)$", v_str) + + if not m: + return None + + return (int(m.group(1)), int(m.group(2))) def adjust( -- 2.47.1