Skip to content

Commit 0096070

Browse files
Check workload version
1 parent da2fd87 commit 0096070

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

src/abstract_charm.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,26 @@ def is_compatible(
4141
old_workload_version: str,
4242
new_workload_version: str,
4343
) -> bool:
44+
# Check charm version compatibility
4445
if not super().is_compatible(
4546
old_charm_version=old_charm_version,
4647
new_charm_version=new_charm_version,
4748
old_workload_version=old_workload_version,
4849
new_workload_version=new_workload_version,
4950
):
5051
return False
51-
# TODO: check workload version—prevent downgrade?
52-
return True
52+
53+
# Check workload version compatibility
54+
old_major, old_minor, old_patch = (int(component) for component in old_workload_version.split("."))
55+
new_major, new_minor, new_patch = (int(component) for component in new_workload_version.split("."))
56+
if old_major != new_major:
57+
return False
58+
if new_minor > old_minor:
59+
return True
60+
elif new_minor == old_minor:
61+
return new_patch >= old_patch
62+
else:
63+
return False
5364

5465

5566
class MySQLRouterCharm(ops.CharmBase, abc.ABC):

0 commit comments

Comments
 (0)