diff --git a/init-server.py b/init-server.py index 475f19a..ddbfbb2 100755 --- a/init-server.py +++ b/init-server.py @@ -131,6 +131,7 @@ def upload_certificates(c): def debug_tmp(c): upload_https_host_files(c) + put(c, SCRIPTS_DIR / 'http_host' / 'cron.d' / 'ofm_http_host', '/etc/cron.d/') @click.command() diff --git a/scripts/http_host/cron.d/ofm_http_host b/scripts/http_host/cron.d/ofm_http_host index 442734a..dcda3db 100644 --- a/scripts/http_host/cron.d/ofm_http_host +++ b/scripts/http_host/cron.d/ofm_http_host @@ -1,5 +1,5 @@ -PYTHON=/data/ofm/venv/bin/python -BIN=/data/ofm/http_host/bin +# every minute sync, locking so that only one process can run at a time +* * * * * ofm /usr/bin/flock -n /tmp/hostmanager.lockfile -c \ + 'sudo /data/ofm/venv/bin/python -u /data/ofm/http_host/bin/host_manager.py sync >> /data/ofm/http_host/logs/host_manager_sync.log 2>&1' + -# every minute sync -* * * * * ofm sudo $PYTHON -u $BIN/host_manager.py sync >> /data/ofm/http_host/logs/host_manager_sync.log 2>&1 diff --git a/scripts/http_host/http_host_lib/download_tileset.py b/scripts/http_host/http_host_lib/download_tileset.py index 917c605..a7b2d59 100644 --- a/scripts/http_host/http_host_lib/download_tileset.py +++ b/scripts/http_host/http_host_lib/download_tileset.py @@ -22,9 +22,7 @@ def download_and_extract_tileset(area: str, version: str, runs_dir: Path) -> boo return False temp_dir = runs_dir / '_tmp' - if temp_dir.exists(): - sys.exit(f'{temp_dir} dir exists, avoiding parallel run') - + shutil.rmtree(temp_dir, ignore_errors=True) temp_dir.mkdir(parents=True) url = f'https://{area}.openfreemap.com/{version}/tiles.btrfs.gz' diff --git a/scripts/http_host/http_host_lib/nginx.py b/scripts/http_host/http_host_lib/nginx.py index ef16b10..7b1d151 100644 --- a/scripts/http_host/http_host_lib/nginx.py +++ b/scripts/http_host/http_host_lib/nginx.py @@ -27,7 +27,8 @@ def write_nginx_config(): f'curl -I https://tiles.openfreemap.org/{area}/{version}/14/8529/5975.pbf' ) - location_str += create_deployed_location(area, version, subdir) + for area in ['monaco', 'planet']: + location_str += create_latest_location(area) nginx_template = nginx_template.replace('___LOCATION_BLOCKS___', location_str) @@ -41,7 +42,7 @@ def write_nginx_config(): print(curl_text) -def create_version_location(area: str, version: str, subdir: Path): +def create_version_location(area: str, version: str, subdir: Path) -> str: run_dir = DEFAULT_RUNS_DIR / area / version if not run_dir.is_dir(): print(f" {run_dir} doesn't exists, skipping") @@ -91,5 +92,13 @@ def create_version_location(area: str, version: str, subdir: Path): """ -def create_deployed_location(area: str, version: str, subdir: Path): - pass +def create_latest_location(area: str) -> str: + local_version_file = Path(f'/data/ofm/config/deployed_tiles_{area}.txt') + + if not local_version_file.exists(): + return '' + + with open(local_version_file) as fp: + version_str = fp.read().strip() + + print(version_str) diff --git a/ssh_lib/pkg_base.py b/ssh_lib/pkg_base.py index a59e447..3414f64 100644 --- a/ssh_lib/pkg_base.py +++ b/ssh_lib/pkg_base.py @@ -18,6 +18,7 @@ def pkg_base(c): 'unzip', 'wget', 'psmisc', + 'util-linux' # 'btrfs-progs', #