Heatbridge is currently a manual step that is executed after a VNF and its vfModules have been instantiated. What happens is that AAI is updated with details about the workload running in the cloud (e.g. vserver details, interface details, images, flavors).
There is interest in providing for this update to AAI to happen automatically instead of manually.
It is also of interest to provide this functionality generically for other cloud types. Let's call it something like 'AAI Workload Update' instead of 'heatbridge'.
Based on feedback, the proposal is to make a heatbridge microservice which can handle the AAI update (heatbridge).
The following diagram illustrates two cases.
The current gerrits to add Heatbridge to SO ( https://gerrit.onap.org/r/78155 , https://gerrit.onap.org/r/78612 ) once merged, can then be refactored into a heatbridge microservice within SO fairly easily (Steve Smokowski)
For this case, to explore providing Heatbridge-like functionality for non-Openstack cloud regions (e.g. Kubernetes, etc.), the Heatbridge microservice invokes Multicloud with a single API call (vs. a series of queries in the Openstack case) to perform the AAI update and the appropriate Multicloud plugin will query the cloud region and handle the AAI update for the workload.
In later releases, it seems likely that supporting other types of cloud regions will drive some enhancements to the AAI schema to make it less OpenStack biased. Also, it's possible the heatbridge microservice, as illustrated above could migrate to the Multicloud project. These topics will need further discussion beyond the Dublin timeframe.
Whether using the SO OpenStack VNF adapter or the SO Multicloud VNF plugin adapter, the following diagram illustrates the vfModule creation step and the following heatbridge step.
Most of this code is already more or less written - except for creation of a new BPMN workflow step and packaging the heatbridge code as a microservice.
The API between SO and Multicloud is already in place, and the code to query OpenStack and update AAI is already developed. (this gerrit and related gerrit's https://gerrit.onap.org/r/#/c/78155/ )
In the Multicloud path, if a non-OpenStack cloud is invoked by the Heatbridge microservice, then some kind of error or stub reply is made.
More work is required to support non-Openstack clouds since current heatbridge code is for OpenStack. The following diagram (with the vfModule create step removed for simplicity) illustrates:
When using the Multicloud VNF plugin adapter to instantiate more generically on various cloud types, the recommended approach (see Bin Yang 's comments) is to have Multicloud handle the AAI update as the cloud specific plugins have the best knowledge of how to communicate with the cloud plus any unique cloud specific details that may end up in AAI. This is illustrated by the following diagram.
|
The SO OpenStack VNF adapter will not be replaced by the multicloud adapter in the short term, so code has been submitted for review ( https://gerrit.onap.org/r/#/c/78155/ ) to add AAI update (i.e. Heatbridge) into the SO OpenStack VNF Adapter. To align with the proposal above for AAI update when using the Multicloud VNF plugin adapter, the following diagram illustrates the proposal for the OpenStack VNF Adapter.
|
|
Following is a proposal for how the functionality could be done.
In this step, a new SO workflow step makes a call to query the details about a workload. Based on details in SO's cloud site DB, a choice will be made to invoke 2a or 2b
This gerrit ( https://gerrit.onap.org/r/#/c/78155/ ) proposes a code change to perform Openstack specific AAI Workload Update functionality within the SO openstack adapter implementation. In this path, the workload detail query is handled by this code in SO.
Alternatively, for cloud sites that are set up to talk to Multicloud, the workload detail query is sent to Multicloud via an API (see below for more details). Multicloud has plugins for various cloud types, so the appropriate plugin will be selected to perform the query.
The workload detail query result is returned. Regardless of path or cloud type, the detail is returned in a normalized format. Suggest this be in conformance with the AAI schema.
The workload detail results can be passed along the workflow to the next step which performs the update to AAI. (other uses can be supported by separating query from AAI update, such as auditing)
Perform the actual update to AAI. Logic could be supported in the workflow to determine whether this step must be performed and whether failure affects the success of the workload creation or not.
The SO-MC infrastructure GET API (https://onap.readthedocs.io/en/casablanca/submodules/multicloud/framework.git/docs/specs/multicloud_infra_workload.html) needs to be extended to include the workload query details
Here is another variation - taking into account Bin Yang's comments.
Along the 2b-3b sequence, SO invokes via a POST to Multicloud to trigger an AAI Update. SO can invoke a GET along step 6 to query the status of the AAI Update.
Note, in this approach AAI update is either performed via sequence 1,2a,3a,4a using SO Openstack adapter. Or, via sequence 1, 2b, 3b, 4b, 5, 6 using SO Multicloud adapter.
In addition to creating the workload details in AAI, there will need to be corresponding delete and update functions as well.