38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
from fastapi import APIRouter, Depends
|
|
from sqlmodel import Session
|
|
|
|
from ..connectors.gitea_actions import GiteaActionsConnector
|
|
from ..db.session import get_session
|
|
from ..services.gitea_project_auto_registration import GiteaProjectAutoRegistration
|
|
from ..services.runner_fleet import RunnerFleetService
|
|
|
|
router = APIRouter(prefix="/api/gitea/actions", tags=["gitea-actions"])
|
|
|
|
|
|
@router.get("/status")
|
|
def gitea_actions_status():
|
|
"""Return bounded runner and queue state without exposing the admin credential."""
|
|
|
|
return GiteaActionsConnector().snapshot()
|
|
|
|
|
|
@router.get("/fleet")
|
|
def gitea_actions_fleet():
|
|
"""Return the joined, secret-free CI runner fleet projection."""
|
|
|
|
return RunnerFleetService().snapshot()
|
|
|
|
|
|
@router.get("/projects")
|
|
def gitea_project_catalog(session: Session = Depends(get_session)):
|
|
"""Return the persisted owned-project registration catalog."""
|
|
|
|
return GiteaProjectAutoRegistration.catalog(session)
|
|
|
|
|
|
@router.post("/projects/reconcile")
|
|
def reconcile_gitea_project_catalog(session: Session = Depends(get_session)):
|
|
"""Refresh all owned Gitea projects and safely activate proven deploy targets."""
|
|
|
|
return GiteaProjectAutoRegistration().sync(session, force=True)
|