feat: stabilize multi-region runtime sync and worker orchestration

This commit is contained in:
root
2026-04-27 15:48:12 +08:00
parent 7cbde2aa78
commit 215a364891
137 changed files with 31931 additions and 1943 deletions

View File

@@ -4180,6 +4180,8 @@ def get_ops_activity_stream(
status: str = "",
execution_mode: str = "",
query: str = "",
runtime_status: dict | None = None,
managed_nodes_payload: dict | None = None,
) -> dict:
safe_limit = min(max(int(limit or _OPS_ACTIVITY_FETCH_LIMIT), 1), 100)
safe_scan_limit = min(max(int(scan_limit or (safe_limit * 4)), safe_limit), 400)
@@ -4187,12 +4189,18 @@ def get_ops_activity_stream(
normalized_status = str(status or "").strip()
normalized_execution_mode = str(execution_mode or "").strip()
normalized_query = str(query or "").strip()
runtime_status = get_runtime_status()
execution_scene = _build_ops_execution_scene(runtime_status.get("detect") or {})
managed_nodes_payload = list_managed_nodes_with_agent_state()
resolved_runtime_status = dict(runtime_status or {})
if not resolved_runtime_status:
resolved_runtime_status = get_runtime_status()
execution_scene = _build_ops_execution_scene(resolved_runtime_status.get("detect") or {})
resolved_managed_nodes_payload = dict(managed_nodes_payload or {})
if not resolved_managed_nodes_payload:
resolved_managed_nodes_payload = list_managed_nodes_with_agent_state(
participation_payload=resolved_runtime_status.get("detect") or {}
)
managed_node_map = {
str(item.get("node_code") or "").strip(): dict(item or {})
for item in list(managed_nodes_payload.get("nodes") or [])
for item in list(resolved_managed_nodes_payload.get("nodes") or [])
if str(item.get("node_code") or "").strip()
}
@@ -4219,7 +4227,10 @@ def get_ops_activity_stream(
rollouts = list_release_rollouts(limit=safe_scan_limit)
rollout_items = [_build_rollout_activity(rollout) for rollout in rollouts if int(rollout.get("id") or 0) > 0]
runbook = get_ops_runbook()
runbook = get_ops_runbook(
runtime_status=resolved_runtime_status,
managed_nodes_payload=resolved_managed_nodes_payload,
)
runbook_items = [
_build_runbook_sequence_activity(sequence)
for sequence in list(runbook.get("control_sequences") or [])
@@ -8099,7 +8110,11 @@ def get_ops_overview() -> dict:
managed_nodes = list(managed_nodes_payload.get("nodes") or [])
managed_nodes_summary = managed_nodes_payload.get("summary") or {}
inspection_overview = get_ops_inspection_overview(managed_nodes=managed_nodes)
activity_stream = get_ops_activity_stream(limit=8)
activity_stream = get_ops_activity_stream(
limit=8,
runtime_status=runtime,
managed_nodes_payload=managed_nodes_payload,
)
release_summary = get_release_summary()
preferred_release = _preferred_release_for_ops()
release_launchpad = get_release_launchpad()
@@ -11555,17 +11570,30 @@ def get_ops_blueprint() -> dict:
}
def get_ops_runbook() -> dict:
runtime = get_runtime_status()
def get_ops_runbook(
*,
runtime_status: dict | None = None,
managed_nodes_payload: dict | None = None,
release_launchpad: dict | None = None,
) -> dict:
runtime = dict(runtime_status or {})
if not runtime:
runtime = get_runtime_status()
readiness = runtime.get("readiness") or {}
worker_runtime = runtime.get("worker") or {}
sync_agent_runtime = runtime.get("sync_agent") or {}
managed_nodes_payload = list_managed_nodes_with_agent_state(participation_payload=runtime.get("detect") or {})
release_launchpad = get_release_launchpad()
resolved_managed_nodes_payload = dict(managed_nodes_payload or {})
if not resolved_managed_nodes_payload:
resolved_managed_nodes_payload = list_managed_nodes_with_agent_state(
participation_payload=runtime.get("detect") or {}
)
resolved_release_launchpad = dict(release_launchpad or {})
if not resolved_release_launchpad:
resolved_release_launchpad = get_release_launchpad()
control_sequences = _attach_ops_runbook_sequence_resolutions(
_build_ops_runbook_control_sequences(
managed_nodes_payload=managed_nodes_payload,
release_launchpad=release_launchpad,
managed_nodes_payload=resolved_managed_nodes_payload,
release_launchpad=resolved_release_launchpad,
),
requested_by="api/runbook",
)
@@ -11606,6 +11634,6 @@ def get_ops_runbook() -> dict:
"status": str(readiness.get("status") or ""),
"summary": str(readiness.get("summary") or ""),
},
"release_launchpad": release_launchpad,
"release_launchpad": resolved_release_launchpad,
"control_sequences": control_sequences,
}