From b11342f929f4b6941cc4f7669a81bf9e156b393b Mon Sep 17 00:00:00 2001 From: Zsolt Ero Date: Thu, 22 Feb 2024 23:47:56 +0100 Subject: [PATCH] sync, check disk space --- init-server.py | 5 ++--- scripts/http_host/host_manager.py | 3 +++ scripts/http_host/http_host_lib/download_assets.py | 8 ++++++-- scripts/http_host/http_host_lib/download_tileset.py | 13 ++++++++++++- 4 files changed, 23 insertions(+), 6 deletions(-) diff --git a/init-server.py b/init-server.py index ea57eb4..3986a6e 100755 --- a/init-server.py +++ b/init-server.py @@ -110,9 +110,7 @@ def add_http_host_cron(c): def run_http_host_sync(c): - sudo_cmd( - c, '/data/ofm/venv/bin/python -u /data/ofm/http_host/bin/host_manager.py sync', user='ofm' - ) + sudo_cmd(c, '/data/ofm/venv/bin/python -u /data/ofm/http_host/bin/host_manager.py sync') def upload_https_host_files(c): @@ -218,6 +216,7 @@ def tile_gen(hostname, user, port): def debug(hostname, user, port): c = get_connection(hostname, user, port) + upload_https_host_files(c) run_http_host_sync(c) diff --git a/scripts/http_host/host_manager.py b/scripts/http_host/host_manager.py index d073b4b..3eb45f2 100755 --- a/scripts/http_host/host_manager.py +++ b/scripts/http_host/host_manager.py @@ -179,6 +179,9 @@ def sync(ctx): print('running sync') print(datetime.datetime.now(tz=datetime.timezone.utc)) + assert_linux() + assert_sudo() + download_done = False download_done += ctx.invoke(download_tileset, area='monaco') download_done += ctx.invoke(download_tileset, area='planet') diff --git a/scripts/http_host/http_host_lib/download_assets.py b/scripts/http_host/http_host_lib/download_assets.py index 131697d..92bdcb6 100644 --- a/scripts/http_host/http_host_lib/download_assets.py +++ b/scripts/http_host/http_host_lib/download_assets.py @@ -21,7 +21,9 @@ def download_fonts(assets_dir: Path): return ofm_dir = fonts_dir / 'ofm' - shutil.rmtree(ofm_dir, ignore_errors=True) + ofm_dir_bak = fonts_dir / 'ofm.bak' + shutil.rmtree(ofm_dir_bak, ignore_errors=True) + ofm_dir.rename(ofm_dir_bak) subprocess.run( ['tar', '-xzf', local_file, '-C', fonts_dir], @@ -43,7 +45,9 @@ def download_styles(assets_dir: Path): return ofm_dir = styles_dir / 'ofm' - shutil.rmtree(ofm_dir, ignore_errors=True) + ofm_dir_bak = styles_dir / 'ofm.bak' + shutil.rmtree(ofm_dir_bak, ignore_errors=True) + ofm_dir.rename(ofm_dir_bak) subprocess.run( ['tar', '-xzf', local_file, '-C', styles_dir], diff --git a/scripts/http_host/http_host_lib/download_tileset.py b/scripts/http_host/http_host_lib/download_tileset.py index 8f153ed..d8831c1 100644 --- a/scripts/http_host/http_host_lib/download_tileset.py +++ b/scripts/http_host/http_host_lib/download_tileset.py @@ -5,7 +5,7 @@ from pathlib import Path import click -from http_host_lib.utils import download_file_aria2 +from http_host_lib.utils import download_file_aria2, get_remote_file_size def download_and_extract_tileset(area: str, version: str, runs_dir: Path) -> bool: @@ -26,6 +26,17 @@ def download_and_extract_tileset(area: str, version: str, runs_dir: Path) -> boo temp_dir.mkdir(parents=True) url = f'https://{area}.openfreemap.com/{version}/tiles.btrfs.gz' + + # check disk space + disk_free = shutil.disk_usage(temp_dir).free + file_size = get_remote_file_size(url) + if not file_size: + raise ValueError('Cannot get remote file size') + + needed_space = file_size * 3 + if disk_free < needed_space: + raise ValueError(f'Not enough disk space. Needed: {needed_space}, free space: {disk_free}') + target_file = temp_dir / 'tiles.btrfs.gz' download_file_aria2(url, target_file)