Architecture Updates
OpenStack Pike plugin
New plugin to adapt OpenStack Pike to ONAPOpenStack plugin, Titanium Cloud plugin, VIO plugin
integration with SO with new API: Infrastructure Workload LCMK8S plugin
New plugin, to adapt k8s cluster to ONAP
PoC, Not be part of Casablanca ReleaseAzure plugin
New plugin, to adapt azure cloud to ONAP
PoC, Not be part of Casablanca Release
S3P
- Secured communication:
Leverage MSB and OOM with ISTIO - RBAC
Leverage MSB and OOM with ISTIO - Logging
Onappylog for python 3
...
- Align to the ONAP functional requirement
Consistent ID of a cloud region
Replace the {vimid} with {cloud-owner}/{cloud-region-id}
Design spec: https://gerrit.onap.org/r/#/c/56671 - Existing API v0:
http(s)://{service IP}:{service port}/api/multicloud/v0/{vimid}/ - Proposed API v1:
http(s)://{service IP}:{service port}/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/ - Impacts:
All multicloud components
Each components to expose API v1, while continue to maintain the API v0
Azure plugin and k8s plugin might go with API v0 for now, since they will not be part of Casablanca Release.
SO/VFC/OOF/APPC have the choice to continue with API v0, or change to API v1
VM action APIs for VFC
...
- MultiCloud has been exposing a set of APIs to VFC
...
- Abstract from OpenStack API which was defined during OPEN-O community
...
- Backward compatibility to keep maintain this API set
...
- VF-C continues to use this set of API in Casablanca Release
...
- VF-C requests to extend this API set to support VM action for healing use case
...
- Start server
...
- Stop server
...
- Restart server
...
- API spec:
...
...
- For API v0: msb.onap.org:80/api/multicloud/v0/{vimid}/{tenantid}/servers/{serverid}/action
...
- For API v1: msb.onap.org:80/api/multicloud/v1/{cloud-owner}/{cloud-region-id}/{tenantid}/servers/{serverid}/action
Infrastructure Workload LCM API for SO
...
- The integration of SO/MultiCloud can be provisioned manually for ONAP Amsterdam and Beijing Release
...
- Leveraging the MultiCloud proxy of heat stack APIs.
...
- The integration of SO/MultiCloud serves multiple purposes:
...
- Centralized representation of cloud regions
...
- :The ID of a cloud region will be specified by either VID or OOF
...
- , SO will not need to access the representation of a cloud region since it offload it to MultiCloud
...
- Offloading the updating the Infrastructure workload template (HEAT) parameters:
...
- SO consults both SDNC and OOF for the proper heat parameters specific to a VF module to be instantiated
...
- SO have to update the heat template before issue the API call to OpenStack without integration of
...
- MultiCloud
...
- With Integration SO could offload it to MultiCloud which should be more appropriate for decompose the workload template and updating with new parameters.
...
- Cloud Agnostic Intent realization
...
- ONAP users specify the Cloud Agnostic Intent policy
...
- OOF match the policy to the specifc cloud regions, return the “Cloud Agnostic Intent” to SO, SO will pass it to MultiCloud
...
- MultiCloud will realize the Cloud Agnostic Intent
...
- Workflow
...
...
- API description
...
- API spec:
...
...
- API for workload instantiation:
- API for workload instantiation:
...
- POST http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload
- POST http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload
...
- Request body:
- Request body:
...
- { "generic-vnf-id":"<generic-vnf-id>", "vf-module-id":"<vf-module-id>", "oof_directives":{}, "sdnc_directives":{}, "template_type":"<heat/tosca/etc.>", "template_data":{} }
- { "generic-vnf-id":"<generic-vnf-id>", "vf-module-id":"<vf-module-id>", "oof_directives":{}, "sdnc_directives":{}, "template_type":"<heat/tosca/etc.>", "template_data":{} }
...
- Response Code:
- Response Code:
...
- Success 201 - Created Resource was created and is ready to use.
- Success 201 - Created Resource was created and is ready to use.
...
- Error
- Error
...
- 400 - Bad Request Some content in the request was invalid.
...
- 401 - Unauthorized User must authenticate before making a request.
...
- 409 - Conflict This operation conflicted with another operation on this resource.
...
- Response body:
- Response body:
...
- {
...
- “workload_id”,”<stack id for openstack heat stack>”
...
- }
...
- API for workload query:
- API for workload query:
...
- GET http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload/{workload_id}
...
- Request body:
...
- N/A
...
- Response Code:
- Response Code:
...
- Success
- Success
...
- 200 - Success Resource is avalable.
...
- Error
- Error
...
- 400 - Bad Request Some content in the request was invalid.
...
- 401 - Unauthorized User must authenticate before making a request.
...
- 404 - Not found
...
- 500 - Internal error
...
- Response body:
...
- {
...
- “workload_status":“<stack status>“
...
- }
...
- API for workload termination:
- API for workload termination:
...
- DELETE http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload/{workload_id}
...
- Request body:
...
- N/A
...
- Response Code:
- Response Code:
...
- Success
- •204 - No content The server has fulfilled the request by deleting the resource.
- Success
...
- Error
- Error
...
- 400 - Bad Request Some content in the request was invalid.
...
- 401 - Unauthorized User must authenticate before making a request.
...
- 404 - Not found
...
- 500 - Internal error
...
- Response body:
- Response body:
...
- N/A
...
- Notes
...
- “generic-vnf-id”/”vf-module-id” is used to update AAI with infrastructure’s workload resource and associate them with AAI generic vnf/VF module objects
...
- “oof_directive” is the output of OOF which can be consumed by either VFC or MultiCloud for updating the parameters of the heat template (e.g. the updating of flavor id to realize the HPA requirements)
...
- “sdnc_directives“ is the output of SDNC which is also to update the parameters of heat templates
...
- This updating of heat template parameters is done by SO right now, it can be offloaded to MultiCloud by passing SDNC parameters to MultiCloud
...
- “template_type” is to enable the expanding of this API to support other cloud specific artifacts, e.g. helm chart (or k8s specific tosca template) for k8s plugin, arm template (or azure specific tosca template) for azure plugin, etc.
...
...
- “template_data” varies along with “template_type”
...
- It follows the OpenStack heat API while the {“template_type” : “heat”}
...
- It is to be discussed how to define the schema of template_data for other template_type.
...
- Example for HEAT based template
- POST http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload
{ "generic-vnf-id":"<generic-vnf-id>",
- POST http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload
...
- "vf-module-id":"<vf-module-id>",
...
- "oof_directives":{"directives":[{ "id":"<ID of VNFC>", "type": "vnfc", "directives":[ { "type":"flavor_directive", "attributes":[ {"attribute_name":"flavor", "attribute_value":"f.medium.hpa1"}]}]}]}, "sdnc_directives":{},
...
- "template_type":"heat", "template_data":{
...
- "files":{ }, "disable_rollback":true, "parameters":{ "flavor":"m1.heat" }, "stack_name":"teststack", "template":{ "heat_template_version":"2013-05-23", "description":"Simple template to test heat commands",
...
- "parameters": { "flavor":{ "default":"m1.tiny", "type":"string"}},
...
- "resources":{"hello_world":{ "type":"OS::Nova::Server", "properties":{
...
- "key_name":"heat_key", "flavor":{"get_param":"flavor" },
...
- "image":"40be8d1a-3eb9-40de-8abd-43237517384f",
...
- "user_data":"#!/bin/bash -xv\necho \"hello world\" > /root/hello-world.txt\n“} } } }, "timeout_mins":60 }
...
- }}
...
Cost evaluation API for OOF
...