Rename Java packages from net.siegeln.cameleer3 to net.siegeln.cameleer, update all references in workflows, Docker configs, docs, and bootstrap. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2.1 KiB
Fleet Health at a Glance (#44)
Context
The vendor tenant list at /vendor/tenants shows basic tenant info (name, slug, tier, status, server state, license expiry) but lacks live usage data. The vendor needs to see agent and environment counts per tenant to understand fleet utilization without clicking into each tenant.
Design
Backend
Extend VendorTenantSummary record in VendorTenantController.java with three fields:
int agentCount, int environmentCount, int agentLimit
In the list endpoint mapping: for each ACTIVE tenant with a server endpoint, call serverApiClient.getAgentCount(endpoint) and serverApiClient.getEnvironmentCount(endpoint). Agent limit comes from the tenant's license limits.agents field (-1 for unlimited). Use CompletableFuture to parallelize the N HTTP calls.
Tenants that are PROVISIONING/SUSPENDED/DELETED get zeroes — skip the HTTP calls.
Frontend
Add two columns to the DataTable in VendorTenantsPage.tsx:
| Column | Key | Display |
|---|---|---|
| Agents | agentCount |
"3 / 10" or "0 / ∞" (uses agentCount + agentLimit) |
| Envs | environmentCount |
"1" |
Place them after the Server column, before License.
Update VendorTenantSummary type in ui/src/types/api.ts to include agentCount: number, environmentCount: number, agentLimit: number.
Existing infrastructure reused
ServerApiClient.getAgentCount()andgetEnvironmentCount()— already implemented for tenant dashboardLicenseService.getActiveLicense()— already used in the list endpoint for license expiry- 30-second refetch interval on
useVendorTenants()— already in place
No changes to
- ServerStatusBadge column — kept as-is
- License column — kept as-is
- Detail page — already has its own health data
Files to modify
| File | Change |
|---|---|
VendorTenantController.java |
Extend summary record + parallel health fetch in list endpoint |
VendorTenantsPage.tsx |
Add Agents and Envs columns |
ui/src/types/api.ts |
Add fields to VendorTenantSummary type |