Skip to content

Route services UI (#4302 frontend)#5462

Merged
norman-abramovitz merged 4 commits into
cloudfoundry:developfrom
nabramovitz:feature/route-services-ui
Jun 17, 2026
Merged

Route services UI (#4302 frontend)#5462
norman-abramovitz merged 4 commits into
cloudfoundry:developfrom
nabramovitz:feature/route-services-ui

Conversation

@nabramovitz

Copy link
Copy Markdown
Contributor

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).

  • Bind (stepper): pick a managed service instance in the route's space →
    POST /cf/service_route_bindings via the writeWithJob async-job contract.
  • Operations (edit after the fact): Unbind, and Rebind (= unbind + bind,
    since route-service bindings are immutable except metadata).
  • ServiceCatalogDataService.routeServiceBinding() resolves the route's binding;
    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

…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 norman-abramovitz left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM - actual testing will done after building a service route broker

@norman-abramovitz
norman-abramovitz merged commit 6066f30 into cloudfoundry:develop Jun 17, 2026
12 checks passed
@nabramovitz
nabramovitz deleted the feature/route-services-ui branch June 17, 2026 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

V3 API: Support binding route to service instance

2 participants