INNER CODE UNIT · Python
_sigv4_key
Altinity/clickhouse-operator · tools/restore_shared_to_replicated.py:150
def _sigv4_key(secret: str, datestamp: str, region: str, service: str) -> bytes:
k_date = _sign(("AWS4" + secret).encode("utf-8"), datestamp)
k_region = hmac.new(k_date, region.encode("utf-8"), hashlib.sha256).digest()
k_service = hmac.new(k_region, service.encode("utf-8"), hashlib.sha256).digest()
return hmac.new(k_service, b"aws4_request", hashlib.sha256).digest()
def ensure_url_scheme(url: str) -> str:
"""urlparse('host:9000') treats 'host' as scheme and leaves netloc empty."""
url = url.strip()
if "://" in url:
return url
hostport = url.split("/", 1)[0]
port = hostport.rsplit(":", 1)[-1] if ":" in hostport else ""
scheme = "http" if port in {"80", "8080", "9000", "9090"} else "https"
return f"{scheme}://{url}"