Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Architecture Updates

  • OpenStack Pike plugin
    New plugin to adapt OpenStack Pike to ONAP

  • OpenStack plugin, Titanium Cloud plugin, VIO plugin
    integration with SO with new API: Infrastructure Workload LCM


  • K8S plugin
    New plugin, to adapt k8s cluster to ONAP
    PoC, Not be part of Casablanca Release


  • Azure 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:

...

  1. Centralized representation of cloud regions

...

  1. :The ID of a cloud region will be specified by either VID or OOF

...

  1. , SO will not need to access the representation of a cloud region since it offload it to MultiCloud

...

  1. Offloading the updating the Infrastructure workload template (HEAT) parameters

      ...

        1. SO consults both SDNC and OOF for the proper heat parameters specific to a VF module to be instantiated

      ...

        1. SO have to update the heat template before issue the API call to OpenStack without integration of

      ...

        1. MultiCloud 

      ...

        1. With Integration SO could offload it to MultiCloud which should be more appropriate for decompose the workload template and updating with new parameters.

      ...

      1. Cloud Agnostic Intent realization

          ...

            1. ONAP users specify the Cloud Agnostic Intent policy

          ...

            1. OOF match the policy to the specifc cloud regions, return the “Cloud Agnostic Intent” to SO, SO will pass it to MultiCloud

          ...

            1. MultiCloud will realize the Cloud Agnostic Intent

          ...

          • Workflow

          ...

          ...


          • API description

              ...

                • API spec:

              ...

              ...

                • API for workload instantiation: 

                  ...

                      • POST http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload

                  ...

                      • 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":{} }

                  ...

                      • Response Code:

                  ...

                      • Success  201 - Created  Resource was created and is ready to use.

                  ...

                      • 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:

                      ...

                          • {

                      ...

                          • “workload_id”,”<stack id for openstack heat stack>”

                      ...

                          • }

                      ...

                        • 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:

                              ...

                                    • Success 

                                  ...

                                          • 200 - Success  Resource is avalable.

                                  ...

                                        • 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: 

                                          ...

                                              • DELETE http://{msb IP}:{msb port}/api/multicloud /v1/{cloud-owner}/{cloud-region-id}/infra_workload/{workload_id}

                                          ...

                                              • Request body:

                                          ...

                                              • N/A

                                          ...

                                              • Response Code:

                                              ...

                                                    • Success 
                                                      • •204 - No content  The server has fulfilled the request by deleting the resource.

                                              ...

                                                    • 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:

                                                      ...

                                                            • 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>",

                                                          ...

                                                            • "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\" &gt; /root/hello-world.txt\n“} } } }, "timeout_mins":60  }

                                                          ...

                                                            • }}

                                                          ...

                                                          Cost evaluation API for OOF

                                                          ...