Skip to content

Commit 00f22bd

Browse files
uses is_newer logic from updater service
1 parent 7d1f18d commit 00f22bd

File tree

2 files changed

+26
-13
lines changed

2 files changed

+26
-13
lines changed

start.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717

1818
refinery_dir = sys.argv[1]
1919

20+
if wait_until_refinery_is_ready(timeout=1):
21+
print("Refinery is already running!", flush=True)
22+
sys.exit(0)
23+
2024
print("Creating docker-compose.yml file...", flush=True)
2125
minio_endpoint = process_docker_compose_template(refinery_dir)
2226
print("Creating jwks.json secret...", flush=True)
@@ -34,7 +38,8 @@
3438

3539
run_updates = is_any_service_version_changed()
3640
if run_updates:
37-
if not create_database_dump():
41+
success_db_dump = create_database_dump()
42+
if not success_db_dump:
3843
print("Database dump failed!", flush=True)
3944
print("Please contact the developers!", flush=True)
4045
sys.exit(0)

util/update_helper.py

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import json
22
import time
3+
from typing import List
34
from util.constants import SERVICE_VERSIONS
45
from util.docker_helper import is_uvicorn_application_started, exec_command_on_container
56
from util.postgres_helper import get_db_versions, wait_until_postgres_is_ready
@@ -13,22 +14,29 @@ def is_any_service_version_changed() -> bool:
1314

1415
any_service_updated = False
1516
for service, version in db_versions.items():
16-
db_version_int = _version_number_to_int(version)
17-
current_version_int = _version_number_to_int(current_versions[service])
18-
19-
if db_version_int < current_version_int:
17+
if is_newer(version, current_versions[service].lstrip("v")):
18+
print(service, flush=True)
2019
any_service_updated = True
21-
elif db_version_int > current_version_int:
22-
print(
23-
f"Last version of {service} is newer than current version! Cannot update!",
24-
flush=True,
25-
)
26-
return False
20+
break
2721
return any_service_updated
2822

2923

30-
def _version_number_to_int(version_number: str) -> int:
31-
return int(version_number.lstrip("v").replace(".", ""))
24+
# v1 newer than v2 (e.g. 1.1.2 > 1.1.1)
25+
def is_newer(v1: str, v2: str) -> bool:
26+
a = [int(x) for x in v1.split(".")]
27+
b = [int(x) for x in v2.split(".")]
28+
if len(a) != len(b) and len(a) != 3:
29+
raise Exception("invalid version format")
30+
return __is_newer_int(a, b)
31+
32+
33+
def __is_newer_int(v1: List[int], v2: List[int]) -> bool:
34+
for idx, _ in enumerate(v1):
35+
if v2[idx] > v1[idx]:
36+
return False
37+
elif v2[idx] < v1[idx]:
38+
return True
39+
return False
3240

3341

3442
def updater_service_update_to_newest():

0 commit comments

Comments
 (0)