feat(runtime): track node lifecycle and QUIC link state

This commit is contained in:
justme committed 2026-10-10 14:16:57 +08:00
1 parent 238046d959
commit 97ab3cc740
37 files changed
+864 -35

No files matched your search

+170 -2
View File
@@ -4821,6 +4821,76 @@
"x-moshiro-capability": "fleet.write"
}
},
"/api/admin/links/{probe_id}/{agent_id}/retry": {
"post": {
"tags": [
"admin-links"
],
"summary": "Enable and immediately retry the Probe-to-Agent connection",
"operationId": "links_retry",
"parameters": [
{
"name": "probe_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "agent_id",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LinkRetryDto"
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
},
"403": {
"description": "Forbidden",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
},
"404": {
"description": "Not Found",
"content": {
"application/problem+json": {
"schema": {
"$ref": "#/components/schemas/ProblemDto"
}
}
}
}
},
"x-moshiro-capability": "fleet.write"
}
},
"/healthz": {
"get": {
"tags": [
@@ -5185,6 +5255,7 @@
"rejected",
"heartbeat",
"endpoint_changes",
"runtime_status",
"created_at",
"last_seen_at"
],
@@ -5325,6 +5396,9 @@
],
"format": "int32"
},
"runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"created_at": {
"format": "date-time"
},
@@ -7007,7 +7081,9 @@
"agent_name",
"linked",
"override",
"connected"
"connected",
"probe_runtime_status",
"agent_runtime_status"
],
"type": "object",
"properties": {
@@ -7034,6 +7110,46 @@
},
"connected": {
"type": "boolean"
},
"probe_runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"agent_runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"connection_state": {
"type": "string",
"default": "connecting"
},
"connection_reason": {
"type": [
"null",
"string"
]
},
"last_error": {
"type": [
"null",
"string"
]
},
"retry_attempt": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int32",
"default": 0
},
"retry_in_ms": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "int64"
}
}
},
@@ -7055,6 +7171,21 @@
}
}
},
"LinkRetryDto": {
"required": [
"queued",
"link"
],
"type": "object",
"properties": {
"queued": {
"type": "boolean"
},
"link": {
"$ref": "#/components/schemas/LinkDto"
}
}
},
"LocalLimitsDto": {
"required": [
"max_total_mbps",
@@ -7475,6 +7606,17 @@
}
}
},
"NodeRuntimeStatus": {
"enum": [
"initializing",
"running",
"probe_paused",
"maintenance",
"stopping",
"offline",
"updating"
]
},
"NodeUpdateDto": {
"required": [
"state",
@@ -8449,7 +8591,8 @@
"revoked_at",
"revoked",
"online",
"connections"
"connections",
"runtime_status"
],
"type": "object",
"properties": {
@@ -8477,6 +8620,9 @@
"$ref": "#/components/schemas/ProbeConnectionDto"
}
},
"runtime_status": {
"$ref": "#/components/schemas/NodeRuntimeStatus"
},
"ipv6": {
"oneOf": [
{
@@ -8760,6 +8906,28 @@
},
"at": {
"format": "date-time"
},
"state": {
"type": "string",
"default": "connecting"
},
"retry_attempt": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"integer",
"string"
],
"format": "int32",
"default": 0
},
"retry_in_ms": {
"pattern": "^-?(?:0|[1-9]\\d*)$",
"type": [
"null",
"integer",
"string"
],
"format": "int64"
}
}
},