Make sure time format is fullmatch
diff --git a/staffeln/common/time.py b/staffeln/common/time.py
index 3c0b57b..103096a 100644
--- a/staffeln/common/time.py
+++ b/staffeln/common/time.py
@@ -17,7 +17,7 @@
def parse_timedelta_string(time_str):
empty_flag = True
try:
- parts = regex.match(time_str)
+ parts = regex.fullmatch(time_str)
if not parts:
return None
parts = parts.groupdict()
diff --git a/staffeln/conductor/backup.py b/staffeln/conductor/backup.py
index aae3432..19659c2 100755
--- a/staffeln/conductor/backup.py
+++ b/staffeln/conductor/backup.py
@@ -9,6 +9,7 @@
from oslo_utils import timeutils
from staffeln import objects
from staffeln.common import constants, context, openstack
+from staffeln.common import time as xtime
from staffeln.conductor import result
from staffeln.i18n import _
@@ -498,9 +499,21 @@
for server in servers:
if CONF.conductor.retention_metadata_key in server.metadata:
- retention_map[server.id] = server.metadata[
+ server_retention_time = server.metadata[
CONF.conductor.retention_metadata_key
].lower()
+ if xtime.regex.fullmatch(server_retention_time):
+ LOG.debug(
+ f"Found retention time ({server_retention_time}) defined for "
+ f"server {server.id}, Adding it retention reference map."
+ )
+ retention_map[server.id] = server_retention_time
+ else:
+ LOG.info(
+ f"Server retention time for instance {server.id} is incorrect. "
+ "Please follow '<YEARS>y<MONTHS>m<WEEKS>w<DAYS>d<HOURS>"
+ "h<MINUTES>min<SECONDS>s' format."
+ )
return retention_map
def _volume_queue(self, task):