Replaces LICENSE (GPLv3 -> AGPLv3) and prepends `SPDX-License-Identifier: AGPL-3.0-or-later` to every source file across decnet/, decnet_web/, tests/, scripts/, and tools/. Rationale: closes the GPLv3 ASP loophole so any party operating a modified DECNET as a network service must offer their modified source. Personal copyright (Samuel Paschuan) + inbound=outbound contributions make a future unilateral relicense infeasible. - LICENSE: full AGPL-3.0 text (gnu.org/licenses/agpl-3.0.txt) - COPYRIGHT: project copyright notice - tools/add_spdx_headers.py: idempotent header injector (shebang- and PEP 263-aware) Touches 1565 source files (.py, .ts, .tsx, .js, .jsx, .css, .sh). No behavior change; comments only.
49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
# SPDX-License-Identifier: AGPL-3.0-or-later
|
|
"""Swarm controller routers.
|
|
|
|
One file per endpoint, aggregated under the ``/swarm`` prefix. Mounted
|
|
onto the swarm-api FastAPI app (``decnet/web/swarm_api.py``), a separate
|
|
process from the main DECNET API so swarm failures cannot cascade into
|
|
log ingestion / dashboard serving.
|
|
"""
|
|
from fastapi import APIRouter
|
|
|
|
from .api_enroll_host import router as enroll_host_router
|
|
from .api_list_hosts import router as list_hosts_router
|
|
from .api_get_host import router as get_host_router
|
|
from .api_decommission_host import router as decommission_host_router
|
|
from .api_deploy_swarm import router as deploy_swarm_router
|
|
from .api_teardown_swarm import router as teardown_swarm_router
|
|
from .api_get_swarm_health import router as get_swarm_health_router
|
|
from .api_check_hosts import router as check_hosts_router
|
|
from .api_heartbeat import router as heartbeat_router
|
|
from .api_list_deckies import router as list_deckies_router
|
|
|
|
swarm_router = APIRouter(
|
|
prefix="/swarm",
|
|
# Error responses that every swarm route can surface. Route-level
|
|
# `responses=` entries still override/extend these for route-specific
|
|
# codes (e.g. 409 on /enroll).
|
|
responses={
|
|
400: {"description": "Malformed request"},
|
|
403: {"description": "Peer cert missing or fingerprint mismatch"},
|
|
404: {"description": "Referenced host does not exist"},
|
|
},
|
|
)
|
|
|
|
# Hosts
|
|
swarm_router.include_router(enroll_host_router)
|
|
swarm_router.include_router(list_hosts_router)
|
|
swarm_router.include_router(get_host_router)
|
|
swarm_router.include_router(decommission_host_router)
|
|
|
|
# Deployments
|
|
swarm_router.include_router(deploy_swarm_router)
|
|
swarm_router.include_router(teardown_swarm_router)
|
|
swarm_router.include_router(list_deckies_router)
|
|
|
|
# Health
|
|
swarm_router.include_router(get_swarm_health_router)
|
|
swarm_router.include_router(check_hosts_router)
|
|
swarm_router.include_router(heartbeat_router)
|