Skip to content

Support asynchronous binding operationsΒ #26

@damzog

Description

@damzog

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions