set version

This commit is contained in:
Zsolt Ero
2024-09-01 15:45:35 +02:00
parent add716cb58
commit 5738d542f8
3 changed files with 49 additions and 13 deletions

View File

@@ -1,4 +1,7 @@
import json
import subprocess
from pathlib import Path from pathlib import Path
from pprint import pprint
class Configuration: class Configuration:
@@ -14,8 +17,19 @@ class Configuration:
runs_dir = tile_gen_dir / 'runs' runs_dir = tile_gen_dir / 'runs'
ofm_config_dir = Path('/data/ofm/config') if Path('/data/ofm').exists():
ofm_config_dir = Path('/data/ofm/config')
else:
repo_root = Path(__file__).parent.parent.parent.parent
ofm_config_dir = repo_root / 'config'
ofm_config = json.loads((ofm_config_dir / 'config.json').read_text())
pprint(ofm_config)
rclone_config = ofm_config_dir / 'rclone.conf' rclone_config = ofm_config_dir / 'rclone.conf'
rclone_bin = subprocess.run(['which', 'rclone'], capture_output=True, text=True).stdout.strip()
config = Configuration() config = Configuration()

View File

@@ -1,27 +1,26 @@
import subprocess import subprocess
from http_host_lib.config import config from tile_gen_lib.config import config
from tile_gen_lib.shared import check_host_version, get_versions_for_area
from tile_gen_lib.shared import get_versions_for_area
def check_all_hosts(area, version):
pass
def check_and_set_version(area, version): def check_and_set_version(area, version):
if version == 'latest': if version == 'latest':
versions = get_versions_for_area(area) versions = get_versions_for_area(area)
version = versions[-1] version = versions[-1]
print(f'Latest version on bucket: {area} {version}')
if not check_all_hosts(area, version): if not check_all_hosts(area, version):
return return
set_version(area, version)
def set_version(area, version): def set_version(area, version):
print(f'setting version: {area} {version}')
subprocess.run( subprocess.run(
[ [
'rclone', config.rclone_bin,
'rcat', 'rcat',
f'remote:ofm-assets/deployed_versions/{area}.txt', f'remote:ofm-assets/deployed_versions/{area}.txt',
], ],
@@ -29,3 +28,19 @@ def set_version(area, version):
check=True, check=True,
input=version.strip().encode(), input=version.strip().encode(),
) )
def check_all_hosts(area, version) -> bool:
oc = config.ofm_config
domain = oc['domain_ledns'] or oc['domain_le']
print(f'Using domain: {domain}')
try:
for host_ip in oc['http_host_list']:
print(f'Checking {area} {version} on host {host_ip}')
check_host_version(domain, host_ip, area, version)
return True
except Exception:
print('Error, version not available')
return False

View File

@@ -15,14 +15,18 @@ def get_versions_for_area(area: str) -> list:
def check_host_version(domain, host_ip, area, version): def check_host_version(domain, host_ip, area, version):
# check versioned TileJSON
url = f'https://{domain}/{area}/{version}'
tilejson_str = pycurl_get(url, domain, host_ip)
tilejson = json.loads(tilejson_str)
tiles_url = tilejson['tiles'][0]
version_in_tilejson = tiles_url.split('/')[4]
assert version_in_tilejson == version
# check actual vector tile # check actual vector tile
url = f'https://{domain}/{area}/{version}/14/8529/5975.pbf' url = f'https://{domain}/{area}/{version}/14/8529/5975.pbf'
assert pycurl_status(url, domain, host_ip) == 200 assert pycurl_status(url, domain, host_ip) == 200
# check style
url = f'https://{domain}/styles/bright'
assert pycurl_status(url, domain, host_ip) == 200
def check_host_latest(domain, host_ip, area, version): def check_host_latest(domain, host_ip, area, version):
# check TileJSON first # check TileJSON first
@@ -42,6 +46,9 @@ def check_host_latest(domain, host_ip, area, version):
assert pycurl_status(url, domain, host_ip) == 200 assert pycurl_status(url, domain, host_ip) == 200
# pycurl
def pycurl_status(url, domain, host_ip): def pycurl_status(url, domain, host_ip):
""" """
Uses pycurl to make a HTTPS HEAD request using custom resolving, Uses pycurl to make a HTTPS HEAD request using custom resolving,