Conversation
There was a problem hiding this comment.
Pull request overview
Integrates periodic runtime status reporting so vMCP can publish operational status (phase/conditions/backends) via a pluggable reporter (Kubernetes status updates or CLI logging).
Changes:
- Added
health.Monitor.BuildStatus()to convert health state intovmcp.Status(phase, conditions, discovered backends). - Introduced a background status reporting loop in the server that reports every 30s (and once on startup).
- Updated the CLI to create the status reporter via
vmcpstatus.NewReporter()(auto-detect K8s vs CLI).
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| pkg/vmcp/server/status_reporting.go | Adds periodic status reporting goroutine and a helper to build/report status. |
| pkg/vmcp/server/server.go | Starts periodic status reporting during server startup when a reporter is configured. |
| pkg/vmcp/health/monitor.go | Adds BuildStatus() plus helpers to generate conditions and backend messages. |
| pkg/vmcp/health/status_builder_test.go | Adds unit tests for conditions/message formatting and phase logic. |
| cmd/vmcp/app/commands.go | Switches to reporter factory for environment-based reporter selection. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #3457 +/- ##
==========================================
+ Coverage 64.91% 64.95% +0.03%
==========================================
Files 393 396 +3
Lines 38404 38577 +173
==========================================
+ Hits 24930 25057 +127
- Misses 11528 11575 +47
+ Partials 1946 1945 -1 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 10 out of 10 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Wire up periodic status reporting to enable vMCP runtime to report
operational status to the control plane (Kubernetes API or CLI logging).
Changes:
- Add BuildStatus() method to health.Monitor that converts health state
to vmcp.Status format with phase determination, backend details, and
Kubernetes-style conditions
- Create periodicStatusReporting() in server package that runs in
background goroutine, pulling health data every 30 seconds and
sending to configured reporter
- Integrate status reporting lifecycle into server.Start() and Stop()
with proper shutdown handling
- Update commands.go to use factory pattern (vmcpstatus.NewReporter)
instead of hardcoded LoggingReporter, enabling auto-detection of
K8s vs CLI mode via environment variables
- Add comprehensive tests for status building logic (phase determination,
condition generation, message formatting)
Phase determination logic:
- Ready: All backends healthy (or no backends yet - cold start)
- Degraded: Some backends healthy, some degraded/unhealthy
- Failed: No healthy backends
- Pending: Waiting for backends to be discovered
The implementation respects the separation between health monitoring
(data gathering) and status reporting (persistence), with K8sReporter
handling Kubernetes-specific fields like ObservedGeneration.
Related-to: #3149
There was a problem hiding this comment.
Large PR Detected
This PR exceeds 1000 lines of changes and requires justification before it can be reviewed.
How to unblock this PR:
Add a section to your PR description with the following format:
## Large PR Justification
[Explain why this PR must be large, such as:]
- Generated code that cannot be split
- Large refactoring that must be atomic
- Multiple related changes that would break if separated
- Migration or data transformationAlternative:
Consider splitting this PR into smaller, focused changes (< 1000 lines each) for easier review and reduced risk.
See our Contributing Guidelines for more details.
This review will be automatically dismissed once you add the justification section.
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 11 out of 11 changed files in this pull request and generated 4 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Large PR justification has been provided. Thank you!
|
✅ Large PR justification has been provided. The size review has been dismissed and this PR can now proceed with normal review. |
jhrozek
left a comment
There was a problem hiding this comment.
a small suggestion, but looks good!
jerm-dro
left a comment
There was a problem hiding this comment.
All comments non-blocking, feel free to merge.
|
ok implementing in follow ups |
Wire up periodic status reporting to enable vMCP runtime to report operational status to the control plane (Kubernetes API or CLI logging).
Changes:
Phase determination logic:
The implementation respects the separation between health monitoring (data gathering) and status reporting (persistence), with K8sReporter handling Kubernetes-specific fields like ObservedGeneration.
Related-to: #3149
Large PR Justification
This is an atomic PR, covering the integration of status into vmcp. It includes complete testing.
It cannot be split as it's an isolated functionality.