32c7336bf6
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4.1 KiB
4.1 KiB
name, kind, lang, domain, purity, version, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path, params, output
| name | kind | lang | domain | purity | version | signature | description | tags | uses_functions | uses_types | returns | returns_optional | error_type | imports | tested | tests | test_file_path | file_path | params | output | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| refresh_local_hub | pipeline | py | pipelines | impure | 1.0.0 | def refresh_local_hub(manifest_path: str | None = None, reload: bool = True) -> dict | Orquesta el refresco del sistema local_hub: descubre los servicios locales, regenera el fragmento de Caddyfile y la config de Glance, recarga Caddy (admin API) y reinicia la user-unit glance. Compone discover_local_services + render_caddyfile + render_glance_config. Lo corre el dag_engine a diario y tambien el usuario a mano. |
|
|
false | error_go_core |
|
true |
|
python/functions/pipelines/refresh_local_hub_test.py | python/functions/pipelines/refresh_local_hub.py |
|
dict {total, up, down, caddy_path, glance_path, reloaded, caddy_reload_rc, glance_restart_rc, services:[{name,subdomain,port,up}, ...]} |
Ejemplo
./fn run refresh_local_hub
Sin recargar servicios (solo regenera las configs):
$HOME/fn_registry/python/.venv/bin/python3 \
python/functions/pipelines/refresh_local_hub.py --no-reload
Desde Python:
from pipelines.refresh_local_hub import refresh_local_hub
r = refresh_local_hub(reload=True)
print(r)
# {"total": 8, "up": 6, "down": 2, "caddy_path": "/etc/caddy/conf.d/local_hub.caddy",
# "glance_path": ".../apps/local_hub/glance/glance.yml", "reloaded": True,
# "caddy_reload_rc": 0, "glance_restart_rc": 0, "services": [...]}
Cuando usarla
Cuando cambien los servicios locales expuestos como subdominios *.localhost (alta/baja de un servicio en el manifiesto, o un service nuevo del registry con bloque service:) y quieras que Caddy y el dashboard Glance reflejen el estado actual. Es el paso function: que el dag_engine corre a diario para mantener el local_hub sincronizado, y el comando que lanzas a mano tras editar apps/local_hub/local_services.yaml.
Gotchas
- Impura: escribe en
/etc/caddy/conf.d/local_hub.caddyvia ACL, no via sudo. El usuario debe tener permiso de escritura ahi (ACL ya configurada en este PC). Sin la ACL, elopen(..., "w")lanzaPermissionError. - Recarga Caddy por su admin API (
caddy reloadhabla conlocalhost:2019), no reinicia el servicio: requiere que Caddy este corriendo con la admin API activa. Si Caddy no esta levantado,caddy_reload_rcqueda en un valor != 0 (o -1 si el binario falla) pero el pipeline NO lanza. - Reinicia la user-unit
glance(systemctl --user restart glance), no la system-unit: requiere que la user-unitglanceeste instalada y el bus de usuario disponible. Si falta,glance_restart_rcrefleja el fallo sin abortar. - Valida el YAML de Glance antes de escribir: si
render_glance_configprodujera YAML invalido, el pipeline lanzaRuntimeErrorcon mensaje claro y no escribe el archivo (fail-fast). - Raiz dinamica: la raiz del registry se deriva de
FN_REGISTRY_ROOTo del path del modulo; nunca se hardcodea ningun/home/<user>. reload=Falseno toca ningun servicio: util para previsualizar las configs generadas sin recargar Caddy ni reiniciar Glance (lo que hace el test).
Capability growth log
(sin entradas — v1.0.0 inicial)