feat: stabilize multi-region runtime sync and worker orchestration
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user