feat: add BIRD status endpoint and integrate birdc checks into job processing. Enhance UI to display BIRD runtime status and job metadata, improving user feedback on BIRD operations.
CI / changes (push) Successful in 6s
CI / openapi (push) Has been skipped
CI / go (push) Successful in 25s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 1m7s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 1m5s
CI / docker-bird (push) Has been skipped
CI / bird2 (push) Successful in 16s
CI / docker-go (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Successful in 1m0s
CI / docker-go (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Successful in 1m25s
CI / docker-go (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Successful in 1m30s
CI / docker-go (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Successful in 1m30s
CI / docker-go (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Successful in 1m27s
CI / docker-go (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Successful in 1m13s
CI / docker-go (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Successful in 1m32s
CI / docker-go (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Successful in 1m23s

This commit is contained in:
Denozordec
2026-04-06 00:25:43 +07:00
parent e1aaa18377
commit 94a4c6acd4
8 changed files with 324 additions and 8 deletions
+36
View File
@@ -0,0 +1,36 @@
package birdfmt
import (
"strings"
)
// ProtocolsSummary is a lightweight parse of `birdc show protocols all` (BIRD 2).
type ProtocolsSummary struct {
BGPSessionsTotal int
BGPEstablished int
RawLineCount int
}
// SummarizeProtocolsOutput extracts BGP session heuristics from birdc output.
func SummarizeProtocolsOutput(output string) ProtocolsSummary {
var s ProtocolsSummary
lines := strings.Split(output, "\n")
s.RawLineCount = len(lines)
for _, line := range lines {
line = strings.TrimSpace(line)
if line == "" {
continue
}
low := strings.ToLower(line)
if strings.HasPrefix(low, "name") || strings.HasPrefix(low, "table") {
continue
}
if strings.Contains(low, "bgp") {
s.BGPSessionsTotal++
if strings.Contains(low, "established") {
s.BGPEstablished++
}
}
}
return s
}