sync dari sicabe-doc/deploy @ 733df6c
This commit is contained in:
@@ -133,9 +133,15 @@ def external_components(doc: dict) -> set[str]:
|
||||
Komponen ini TIDAK dijalankan cluster (tak masuk `placement`/`plan`); endpoint-nya
|
||||
diarahkan ke alamat itu di SEMUA host (lihat generate.endpoint_lines). Berguna untuk
|
||||
IAM/objek-storage milik pihak lain, termasuk di host/IP yang berbeda satu per komponen.
|
||||
|
||||
Turunan: `minio-init` (pembuat bucket MinIO **LOKAL** via `mc`) IKUT eksternal bila
|
||||
`minio` eksternal — kalau tidak, ia nyasar ke bundle `state` padahal `minio` absen.
|
||||
"""
|
||||
return {n for n, s in (doc.get("components") or {}).items()
|
||||
if (s.get("address") or "").strip()}
|
||||
ext = {n for n, s in (doc.get("components") or {}).items()
|
||||
if (s.get("address") or "").strip()}
|
||||
if "minio" in ext:
|
||||
ext.add("minio-init")
|
||||
return ext
|
||||
|
||||
|
||||
def external_address(doc: dict, service: str) -> str | None:
|
||||
@@ -320,8 +326,9 @@ def validate(doc: dict) -> list[str]:
|
||||
|
||||
# (c) tiap komponen harus bisa ditempatkan
|
||||
placement = resolve(doc)
|
||||
external_all = external_components(doc)
|
||||
for service in (svc for svcs in TIER_SERVICES.values() for svc in svcs):
|
||||
if service not in placement and not external_address(doc, service):
|
||||
if service not in placement and service not in external_all:
|
||||
errors.append(
|
||||
f"komponen '{service}' tidak bisa ditempatkan — tidak ada host bertier "
|
||||
f"'{tier_of(service)}', tidak ada components.{service}.host, "
|
||||
|
||||
Reference in New Issue
Block a user