-
Notifications
You must be signed in to change notification settings - Fork 6
Description
Detailed Description
Binding operation in cloud foundry supports synchronous and asynchronous execution of the operation. Today Stratos UI does not support asynchronous mode and this requirement is about enhancing the UI to support asynchronous mode.
Context
Using asynchronous has many advantages which is why some of our service brokers use it not only for create/delete but also bind/unbind.
The cf cli supports asynchronous bindings already:
- cf bind-service will kickoff the binding operation and detach if operation is async
- Status can be retrieved with cf service see below
cf service my-service
Showing info of service my-service in org my-org / space my-space as myself
name: some-name
guid: 80e0ebf9-462a-4434-83a7-4456c608350b
type: managed
broker: some-broker
offering: some-offering
plan: some-plan
tags:
....
Showing status of last operation:
status: update succeeded
message:
started: 2023-10-30T13:37:41Z
updated: 2023-10-30T13:37:41Z
Showing bound apps:
name binding name status message
my-app create succeeded
...
Binding in stratos
In Version 4.8.1 stratos supports binding of a service via UI as part of the service creation wizard. If the wizard is called out of the context of an application (In app detail view select "services", then press +) and if service, service plan selected match an existing service instance in the same space of the app the user can choose between create and bind. The binding action shall in case of asynchronous binding mode initiate the asynchronous binding and finish the dialogue. The progress of the provisioning of the asynchronous binding can be tracked from the "services" of the application or the overall services list.
In addition the user should get the option to bind the service from the context menu out of the service instance list (today only operations "edit", "unbind", "delete" are offered). If the create service wizard is reused it needs to jump right into step 4 "Service Instance", option "Bind to an existing service instance" shall be preselected, service name shall be filled with service name. If the user wants to provide additional binding parameters he needs to jump back and forth.
WARNING: Navigation with prev, next in the service creation wizard will reset settings of step 2 "service plan". This seems to be a bug.
Possible Implementation
Suggested behaviour of the UI
- Binding operation will work also for services that have set their binding operation to async mode
- Binding is accessible from
-- app details page>services>+ (create service instance wizard will start and offer bind if suitable service instance exists)
-- service list context menu>bind (new feature, should jump into wizard step 4 with values preselected) - In case of async binding the action will only be triggered and the wizard finishes
- To track progress and result of the binding: The service item gets an additional attribute "Last binding" which shows status and the truncated message if applicable for the last operation on a binding associated with that service.
- It will display binding with the most recent change timestamp preferring items in state "in progress" over "failed" or "done". Displaying a complete table as in cli is desirable but considered to be complicated for a first iteration.
- Text needs to be truncated as the message can be pretty long
Mock screen see here