Route services UI (#4302 frontend)#5462
Merged
norman-abramovitz merged 4 commits intoJun 17, 2026
Merged
Conversation
…oudfoundry#4302) Backend-only Jetstream handlers over capi v3.222.1's ServiceRouteBindings and ServiceCredentialBindings clients. Registered in addNativeRoutes but not yet consumed by the frontend — they give the eventual route-service and service-keys UI a stable contract to wire to. Service route bindings (GH#4302), /pp/v1/cf/service_route_bindings: POST (create), DELETE/:guid, GET (list, SI/route filters), GET/:guid/parameters. Service keys (GH#4301), /pp/v1/cf/service_keys — service_credential_bindings pinned to type=key: POST (create, forces type=key), DELETE/:keyGuid, GET (list, type=key), GET/:keyGuid/details (credentials), GET/:keyGuid/parameters. Async create/delete follow the existing RunFastPath / writeWithJob contract (200 fast-path / 202 handoff / graceful bare-202 fallback when stratosjobs is unwired) — identical to native_service_bindings.go, so no consumer changes are needed when the UI lands. Tests: 11 capture-server unit tests covering sync, async fast-path resolve, list filter forwarding, details + parameters. Full cloudfoundry plugin suite green; go vet + gofmt clean. Refs cloudfoundry#4301, cloudfoundry#4302 (frontend wiring tracked separately).
…/rebind Per-route Route Service page (Route Service row action on the cf-routes tab -> /services/route-service/:cnsi/:routeGuid): - bind stepper: pick a managed service instance in the route's space -> POST /cf/service_route_bindings via writeWithJob. - Unbind + Rebind operations (rebind = unbind + bind; route-service bindings are immutable except metadata). - ServiceCatalogDataService.routeServiceBinding() for the route's 0-or-1 binding; reuses serviceInstancesInSpace() for the picker. Frontend for cloudfoundry#4302 (backend handlers in cloudfoundry#5460). Bind/unbind need a route-service broker to exercise; the shell is live-verified. Refs cloudfoundry#4302
…ices-ui # Conflicts: # src/frontend/packages/cloud-foundry/src/features/services/services.routes.ts # src/frontend/packages/cloud-foundry/src/services/endpoint-data/service-catalog-data.service.ts
norman-abramovitz
approved these changes
Jun 17, 2026
norman-abramovitz
left a comment
Contributor
There was a problem hiding this comment.
LGTM - actual testing will done after building a service route broker
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Frontend for route services (#4302), completing the feature on top of the native
handlers in #5460. Stacked on #5460 (includes that backend commit until #5460
merges, after which the diff reduces to the frontend only).
What this adds
A per-route Route Service page at /services/route-service/:cnsi/:routeGuid,
reached via a new "Route Service" row action on the cf-routes tab. A route binds
to 0-or-1 service instance (route services).
POST /cf/service_route_bindings via the writeWithJob async-job contract.
since route-service bindings are immutable except metadata).
reuses serviceInstancesInSpace() for the picker and the bound-instance name.
Verification
eslint + production build clean. The page shell is live-verified (row action →
navigation → page → stepper → breadcrumb → empty-picker state, 0 console errors).
The actual bind/unbind + bound-state view could NOT be exercised — the test CF
has no route-service broker (an offering with requires: ["route_forwarding"]);
binding a non-route-service offering returns cf.v3.10009 as expected.
Closes #4302