From: Bin Yang Date: Thu, 1 Nov 2018 12:38:54 +0000 (+0000) Subject: Refactor the docs X-Git-Tag: 1.2.1~5 X-Git-Url: https://gerrit.onap.org/r/gitweb?p=multicloud%2Fframework.git;a=commitdiff_plain;h=c8d753e474dfbe61ac85fe5c9dc974c9b10080fa Refactor the docs Dedicated sections for APIs, User guides, and specs Change-Id: Icf57b4b14d775507b40b65681be2aba9a8e2e62f Issue-ID: MULTICLOUD-309 Signed-off-by: Bin Yang --- diff --git a/docs/MultiCloud-API-Specification-V1.rst b/docs/MultiCloud-APIv0-Specification.rst similarity index 99% rename from docs/MultiCloud-API-Specification-V1.rst rename to docs/MultiCloud-APIv0-Specification.rst index 8283077..b89a51e 100644 --- a/docs/MultiCloud-API-Specification-V1.rst +++ b/docs/MultiCloud-APIv0-Specification.rst @@ -3,7 +3,7 @@ International License. ================================ -MultiCloud API Specification V1 +MultiCloud API v0 Specification ================================ API Catalog diff --git a/docs/MultiCloud-APIv1-Specification.rst b/docs/MultiCloud-APIv1-Specification.rst index edecd4a..b68fbe0 100644 --- a/docs/MultiCloud-APIv1-Specification.rst +++ b/docs/MultiCloud-APIv1-Specification.rst @@ -3,7 +3,7 @@ International License. ================================ -MultiCloud APIv1 Specification +MultiCloud API v1 Specification ================================ The is the specification for MultiCloud API version v1. diff --git a/docs/MultiCloud-HPA-Deployment-Guide.rst b/docs/MultiCloud-HPA-Deployment-Guide.rst deleted file mode 100644 index 0e815cc..0000000 --- a/docs/MultiCloud-HPA-Deployment-Guide.rst +++ /dev/null @@ -1,211 +0,0 @@ -.. - This work is licensed under a Creative Commons Attribution 4.0 - International License. - -==================================== -ONAP MultiCloud HPA Deployment Guide -==================================== - -The guide for MultiCloud HPA Deployment. - -Architecture & Policies & Mappings -================================== - -Please refer to the link for more architecture details: - -https://wiki.onap.org/pages/viewpage.action?pageId=20874679 - -Please refer to the link for more Policies&Mappings details: - -https://wiki.onap.org/display/DW/HPA+Policies+and+Mappings - -Prerequisites -============= -configure openstack with proper flavors (with name prefixed by "onap." to carry HPA information to ONAP), example flavor: - -.. code-block:: console - - nova flavor-create onap.hpa.medium 110 4096 0 6 - #cpu pining - nova flavor-key onap.hpa.medium set hw:cpu_policy=dedicated - nova flavor-key onap.hpa.medium set hw:cpu_thread_policy=prefer - #cpu topology - nova flavor-key onap.hpa.medium set hw:cpu_sockets=2 - nova flavor-key onap.hpa.medium set hw:cpu_cores=4 - nova flavor-key onap.hpa.medium set hw:cpu_threads=8 - #hugepage - nova flavor-key onap.hpa.medium set hw:mem_page_size=large - #numa - nova flavor-key onap.hpa.medium set hw:numa_nodes=2 - nova flavor-key onap.hpa.medium set hw:numa_cpus.0=0,1 hw:numa_cpus.1=2,3,4,5 hw:numa_mem.0=2048 hw:numa_mem.1=2048 - -collect following information for on-boarding this Cloud instance to ONAP: - -.. code-block:: console - - your openstack project name - your openstack user - your openstack password - your openstack keystone endpoint - your openstack Region ID: e.g. RegionOne - your openstack owner name/ID (any string without underscore character '_'), e.g. CloudOwner - -Note: along with the Region ID, the owner name/ID comprises unique ID of a cloud region within ONAP - -With Heat based ONAP: - -.. code-block:: console - - export ONAP_AAI_IP= - export ONAP_AAI_PORT=8443 - export ONAP_MSB_IP= - export ONAP_MSB_PORT=80 - -With OOM based ONAP: - -.. code-block:: console - - export ONAP_AAI_IP= - export ONAP_AAI_PORT=30233 - export ONAP_MSB_IP= - export ONAP_MSB_PORT=30280 - -The geographic location of the cloud region -=========================================== -make sure there is complex object to represent the geographic location of the cloud region -in case you need create a complex object "clli1": - -.. code-block:: console - - curl -X PUT \ - https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/complexes/complex/clli1 \ - -H 'Accept: application/json' \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 2b272126-aa65-41e6-aa5d-46bc70b9eb4f' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' \ - -d '{ - "physical-location-id": "clli1", - "data-center-code": "example-data-center-code-val-5556", - "complex-name": "clli1", - "identity-url": "example-identity-url-val-56898", - "physical-location-type": "example-physical-location-type-val-7608", - "street1": "example-street1-val-34205", - "street2": "example-street2-val-99210", - "city": "Beijing", - "state": "example-state-val-59487", - "postal-code": "100000", - "country": "example-country-val-94173", - "region": "example-region-val-13893", - "latitude": "39.9042", - "longitude": "106.4074", - "elevation": "example-elevation-val-30253", - "lata": "example-lata-val-46073" - }' - -Register a cloud region -======================= -register a cloud region to represent the VIM with the specific tenant - -note: please update the parameters enclosed with "<>" - -.. code-block:: console - - curl -X PUT \ - https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne \ - -H 'Accept: application/json' \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' \ - -d '{ - "cloud-owner": "CloudOwner", - "cloud-region-id": "RegionOne", - "cloud-type": "openstack", - "owner-defined-type": "t1", - "cloud-region-version": "titanium_cloud", - "complex-name": "clli1", - "cloud-zone": "CloudZone", - "sriov-automation": false, - "identity-url": "WillBeUpdatedByMultiCloud", - "esr-system-info-list": { - "esr-system-info": [ - { - "esr-system-info-id": "", - "service-url": "http://", - "user-name": "", - "password": "", - "system-type": "VIM", - "ssl-insecure": true, - "cloud-domain": "Default", - "default-tenant": "", - "system-status": "active" - } - ] - } - }' - -associate the cloud region with the location object: - -.. code-block:: console - - curl -X PUT \ - https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/relationship-list/relationship \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 7407d60c-8ce7-45de-ada3-4a7a9e88ebd4' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' \ - -d '{ - "related-to": "complex", - "related-link": "/aai/v13/cloud-infrastructure/complexes/complex/clli1", - "relationship-data": [ - { - "relationship-key": "complex.physical-location-id", - "relationship-value": "clli1" - } - ] - }' - - -Trigger the MultiCloud registration -=================================== - -.. code-block:: console - - curl -X POST \ - 'http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud-titanium_cloud/v0/CloudOwner_RegionOne/registry' \ - -H 'Accept: application/json' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023' - - -Verify -====== -verify if the cloud region was registered properly (with HPA information populated) - -.. code-block:: console - - curl -X GET \ - 'https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne?depth=all' \ - -H 'Accept: application/json' \ - -H 'Authorization: Basic QUFJOkFBSQ==' \ - -H 'Cache-Control: no-cache' \ - -H 'Content-Type: application/json' \ - -H 'Postman-Token: 2899359f-871b-4e61-a307-ecf8b3144e3f' \ - -H 'Real-Time: true' \ - -H 'X-FromAppId: jimmy-postman' \ - -H 'X-TransactionId: 9999' - -Note: The response of querying a cloud region above should return with a comprehensive cloud region object, you should find out the "hpa-capabilities" under certain flavor object with name prefixed by "onap." - - diff --git a/docs/images/mc-windriver/esr-vim-register.png b/docs/images/mc-windriver/esr-vim-register.png new file mode 100644 index 0000000..571f56d Binary files /dev/null and b/docs/images/mc-windriver/esr-vim-register.png differ diff --git a/docs/index.rst b/docs/index.rst index b326ecf..8e2196f 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -4,21 +4,43 @@ .. _index-multicloud: -MultiCloud Documentation Repository +MultiCloud API +----------------------------------- +.. toctree:: + :maxdepth: 2 + + MultiCloud-APIv0-Specification + MultiCloud-APIv1-Specification + + +MultiCloud Release Notes ----------------------------------- .. toctree:: :maxdepth: 2 Release Notes + + +MultiCloud Deployment +----------------------------------- +.. toctree:: + :maxdepth: 2 + MultiCloud-Deployment-Guide - MultiCloud-Test-Guide - MultiCloud-API-Specification-V1 - Multicloud-Fake_Cloud-Guide - MultiCloud-Heat-Deployment-Guide MultiCloud-Administrator-Guide + MultiCloud-Heat-Deployment-Guide + +MultiCloud Plugins User Guides +----------------------------------------------- +.. toctree:: + :maxdepth: 2 + + multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud + Multicloud-Fake_Cloud-Guide + MultiCloud-Test-Guide -MultiCloud Specification Documentation +MultiCloud Specifications -------------------------------------- .. toctree:: :maxdepth: 1 @@ -31,3 +53,7 @@ MultiCloud Specification Documentation specs/multicloud-container-plugin specs/MultiCloud-HPA-Discovery-design specs/parallelism_improvement + specs/multicloud_infra_workload + specs/multicloud-cloud-region-id + specs/multicloud-heat-aai-bridge + specs/multicloud-multi-region diff --git a/docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..0480146 --- /dev/null +++ b/docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst @@ -0,0 +1,68 @@ +.. + This work is licensed under a Creative Commons Attribution 4.0 + International License. + +Tutorial: Enable ONAP HPA Orchestation to Wind River Titanium Cloud +``````````````````````````````````````````````````````````````````` + + +To fulfil the functional requirement of HPA enablement, MultiCloud plugin for +Wind River Titanium Cloud expects the administrator to provision the Titanium +Cloud instance conforming to certain conventions. + +This tutorial demonstrates how to enable ONAP HPA orchestration to Wind River Titanium Cloud. + +Architecture & Policies & Mappings +---------------------------------- + +Please refer to the link for more architecture details: + +.. + https://wiki.onap.org/pages/viewpage.action?pageId=20874679 + +Please refer to the link for more Policies&Mappings details: + +.. + https://wiki.onap.org/display/DW/HPA+Policies+and+Mappings + +Provision Flavors +----------------- + +configure openstack with proper flavors (with name prefixed by "onap." to carry HPA information to ONAP), example flavor: + +.. code-block:: console + + nova flavor-create onap.hpa.medium 110 4096 0 6 + #cpu pining + nova flavor-key onap.hpa.medium set hw:cpu_policy=dedicated + nova flavor-key onap.hpa.medium set hw:cpu_thread_policy=prefer + #cpu topology + nova flavor-key onap.hpa.medium set hw:cpu_sockets=2 + nova flavor-key onap.hpa.medium set hw:cpu_cores=4 + nova flavor-key onap.hpa.medium set hw:cpu_threads=8 + #hugepage + nova flavor-key onap.hpa.medium set hw:mem_page_size=large + #numa + nova flavor-key onap.hpa.medium set hw:numa_nodes=2 + nova flavor-key onap.hpa.medium set hw:numa_cpus.0=0,1 hw:numa_cpus.1=2,3,4,5 hw:numa_mem.0=2048 hw:numa_mem.1=2048 + +Access configuration of Titanium Cloud Instance +----------------------------------------------- + +collect following information for on-boarding this Cloud instance to ONAP: + +.. code-block:: console + + your openstack project name + your openstack user + your openstack password + your openstack keystone endpoint + your openstack Region ID: e.g. RegionOne + + +On-board the Titanium Cloud instance +------------------------------------ + +Now you can onboard this Titanium Cloud instance, make sure the multicloud registration process is triggered. + +See :ref:`Tutorial: Onboard instance of Wind River Titanium Cloud ` diff --git a/docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..52926bb --- /dev/null +++ b/docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst @@ -0,0 +1,289 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 +.. International License. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2017-2018 Wind River Systems, Inc. + +Tutorial: Onboard instance of Wind River Titanium Cloud +``````````````````````````````````````````````````````` + +Prerequisites +------------- + +Collect ONAP Access Info +^^^^^^^^^^^^^^^^^^^^^^^^ + +With Heat based ONAP: +..................... + +.. code-block:: console + + export ONAP_AAI_IP= + export ONAP_AAI_PORT=8443 + export ONAP_MSB_IP= + export ONAP_MSB_PORT=80 + +With OOM based ONAP: +.................... + +.. code-block:: console + + export ONAP_AAI_IP= + export ONAP_AAI_PORT=30233 + export ONAP_MSB_IP= + export ONAP_MSB_PORT=30280 + +Determine the ID of the cloud region: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + + cloud region is ONAP's representation of the on-boarded VIM/Cloud instance (Titanium Cloud instance in this case). + The ID of a cloud region is specified by ONAP user while on-boarding the VIM/Cloud instance, this ID will be + internal to ONAP only, comprised by the composite keys of "cloud-owner" and "cloud-region-id". + +.. code-block:: console + + export CLOUD_OWNER="CloudOwner" + export CLOUD_REGION_ID="RegionOne" + + +Notes: +...... + + 1, It is suggested to populate "cloud-owner" to be "CloudOwner". + The restriction is that underscore "_" can not be used. + + 2, There is restriction from ONAP Amsterdam Release that the + "cloud-region-id" must be the same as OpenStack Region ID in case that + the cloud region represent an OpenStack Instance. + From Casablanca Release, the restriction of "cloud-region-id" has been + removed by MultiCloud plugin for Wind River Titanium Cloud. It is not + mandatory to be populate the "cloud-region-id" with OpenStack Region ID. + + +The geographic location of the cloud region +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +make sure there is complex object to represent the geographic location of the cloud region +in case you need create a complex object "clli1": + +.. code-block:: console + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/complexes/complex/clli1 \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 2b272126-aa65-41e6-aa5d-46bc70b9eb4f' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "physical-location-id": "clli1", + "data-center-code": "example-data-center-code-val-5556", + "complex-name": "clli1", + "identity-url": "example-identity-url-val-56898", + "physical-location-type": "example-physical-location-type-val-7608", + "street1": "example-street1-val-34205", + "street2": "example-street2-val-99210", + "city": "Beijing", + "state": "example-state-val-59487", + "postal-code": "100000", + "country": "example-country-val-94173", + "region": "example-region-val-13893", + "latitude": "39.9042", + "longitude": "106.4074", + "elevation": "example-elevation-val-30253", + "lata": "example-lata-val-46073" + }' + + + + +On-board Wind River Titanium Cloud Instance +------------------------------------------- + +You can on-board the instance of Wind River Titanium Cloud with either way as below + + +With curl commands +^^^^^^^^^^^^^^^^^^ + +Step 1: Create a cloud region to represent the instance +....................................................... + +.. code-block:: console + + ### on-board a single OpenStack region + ### you can specify the Openstack Region ID by extra inputs: {"openstack-region-id":"RegionOne"} + + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID} \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "cloud-owner": "<${CLOUD_OWNER}>", + "cloud-region-id": "<${CLOUD_REGION_ID}>", + "cloud-type": "openstack", + "owner-defined-type": "t1", + "cloud-region-version": "titanium_cloud", + "complex-name": "clli1", + "cloud-zone": "CloudZone", + "sriov-automation": false, + "identity-url": "WillBeUpdatedByMultiCloud", + "cloud-extra-info":"{\"openstack-region-id\":\"RegionOne\"}" + "esr-system-info-list": { + "esr-system-info": [ + { + "esr-system-info-id": "", + "service-url": "http://", + "user-name": "", + "password": "", + "system-type": "VIM", + "ssl-insecure": true, + "cloud-domain": "Default", + "default-tenant": "", + "system-status": "active" + } + ] + } + }' + + + +.. code-block:: console + + ### on-board multiple OpenStack regions with a single request by indicating {"multi-region-discovery":true} + ### you can specify the Openstack Region ID by extra inputs: {"openstack-region-id":"RegionOne"} + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID} \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "cloud-owner": "<${CLOUD_OWNER}>", + "cloud-region-id": "<${CLOUD_REGION_ID}>", + "cloud-type": "openstack", + "owner-defined-type": "t1", + "cloud-region-version": "titanium_cloud", + "complex-name": "clli1", + "cloud-zone": "CloudZone", + "sriov-automation": false, + "identity-url": "WillBeUpdatedByMultiCloud", + "cloud-extra-info":"{\"multi-region-discovery\":true, \"openstack-region-id\":\"RegionOne\"}" + "esr-system-info-list": { + "esr-system-info": [ + { + "esr-system-info-id": "", + "service-url": "http://", + "user-name": "", + "password": "", + "system-type": "VIM", + "ssl-insecure": true, + "cloud-domain": "Default", + "default-tenant": "", + "system-status": "active" + } + ] + } + }' + + +Step 2: associate the cloud region with the location object +........................................................... + + +This association between the cloud region and location is required for OOF homing/placement of VNF + +.. code-block:: console + + curl -X PUT \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID}/relationship-list/relationship \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 7407d60c-8ce7-45de-ada3-4a7a9e88ebd4' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' \ + -d '{ + "related-to": "complex", + "related-link": "/aai/v13/cloud-infrastructure/complexes/complex/clli1", + "relationship-data": [ + { + "relationship-key": "complex.physical-location-id", + "relationship-value": "clli1" + } + ] + }' + + + +Step 3: Trigger the MultiCloud Plugin registration process +.......................................................... + + +Make sure trigger MultiCloud plugin to discover and register Infrastructure +resources, including HPA + +.. code-block:: console + + curl -X POST \ + http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud/v0/${CLOUD_OWNER}_${CLOUD_REGION_ID}/registry \ + -H 'Accept: application/json' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023' + + +With ESR GUI Portal +^^^^^^^^^^^^^^^^^^^ +ESR will conduct all steps mentioned above with a single click. + +The url of the ESR GUI Portal is: + +.. + http://$ONAP_MSB_IP:$ONAP_MSB_PORT/iui/aai-esr-gui/extsys/vim/vimView.html + +.. image:: ../images/mc-windriver/esr-vim-register.png + :alt: ESR VIM Registrer GUI Portal + :width: 500 + :height: 700 + :align: center + + +Verification +------------ + +You may want to verify if the cloud region was registered properly (with HPA information populated) +to represent the instance of Wind River Titanium Cloud, you can do it with the curl command as below + +.. code-block:: console + + curl -X GET \ + https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID}?depth=all \ + -H 'Accept: application/json' \ + -H 'Authorization: Basic QUFJOkFBSQ==' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 2899359f-871b-4e61-a307-ecf8b3144e3f' \ + -H 'Real-Time: true' \ + -H 'X-FromAppId: jimmy-postman' \ + -H 'X-TransactionId: 9999' + + +Note: +^^^^^ +The response of querying a cloud region above should return with a comprehensive cloud region object, you should find out the "hpa-capabilities" under certain flavor object with name prefixed by "onap." + diff --git a/docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..2d17692 --- /dev/null +++ b/docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst @@ -0,0 +1,139 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 +.. International License. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2017-2018 Wind River Systems, Inc. + +Tutorial: VESagent configuration and Testing +```````````````````````````````````````````` + +VESagent is a FCAPS relaying service offered by MultiCloud Plugin for Wind +River Titanium Cloud. It allows user to monitor specified VM status and report +VES collector with onset or abate fault event "Fault_MultiCloud_VMFailure" + +VESagent provisoning APIs +------------------------- + +### assume OOM deployment as below endpoints: + +* OOM k8s Node IP, e.g. 10.12.5.184 +* OOM k8s Node port for multicloud-titaniumcloud POD: 30294 +* On-boarded cloud region with {cloud-owner}/{cloud-region-id} : CloudOwner/pod01 +* VES collector endpoint: 10.12.6.79:8081 + + + +.. code-block:: console + + #!/bin/bash + export MC_EP_IP=10.12.5.184 + export MC_EP_PORT=30294 + + export MC_EPv0=http://$OPENO_IP:$MC_EP_PORT/api/multicloud-titaniumcloud/v0/CloudOwner_pod01 + export MC_EPv1=http://$OPENO_IP:$MC_EP_PORT/api/multicloud-titaniumcloud/v1/CloudOwner/pod01 + + + +1. Setup VESagent backlogs +^^^^^^^^^^^^^^^^^^^^^^^^^^ + +** Option 1: monitor all VMs of a tenant** + +.. code-block:: console + + curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config": \ + {"backlogs":[ {"domain":"fault","type":"vm","tenant":"VIM"}],\ + "poll_interval_default":10,"ves_subscription":\ + {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}'\ + -X POST $MC_EPv0/vesagent + +** Option 2: monitor specified VMs** + +.. code-block:: console + + ### zdfw1lb01dns01, zdfw1lb01dns02 + curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config":\ + {"backlogs":[ {"source":"zdfw1lb01dns01", "domain":"fault","type":"vm","tenant":"VIM"},\ + {"source":"zdfw1lb01dns02", "domain":"fault","type":"vm","tenant":"VIM"}], + "poll_interval_default":10,"ves_subscription":\ + {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}' \ + -X POST $MC_EPv0/vesagent + +2. Dump the VESagent backlogs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + curl -v -s -H "Content-Type: application/json" -X GET $MC_EPv0/vesagent + +3. Delete the VESagent backlogs +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + curl -v -s -H "Content-Type: application/json" -X DELETE $MC_EPv0/vesagent + + +VESagent exercises +------------------ + +Step 1: Monitor the DMaaP events +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Subscribe to and keep polling DMaaP Topic: "unauthenticated.SEC_FAULT_OUTPUT" with curl command + +.. code-block:: console + + curl -X GET \ + 'http://$DMAAP_IP:3904/events/unauthenticated.SEC_FAULT_OUTPUT/EVENT-LISTENER-POSTMAN/304?timeout=6000&limit=10&filter=' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 4e2e3589-d742-48c7-8d48-d1b3577df259' \ + -H 'X-FromAppId: 121' \ + -H 'X-TransactionId: 9999' + + +Step 2: Setup VESagent backlog +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +.. code-block:: console + + ### zdfw1lb01dns01, zdfw1lb01dns02 + curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config":\ + {"backlogs":[ {"source":"zdfw1lb01dns01", "domain":"fault","type":"vm","tenant":"VIM"}],\ + "poll_interval_default":10,"ves_subscription":\ + {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}' \ + -X POST $MC_EPv0/vesagent + +Step 3: Simulate the Faults +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Manually stop the monitored VMs,e.g. VM with name 'zdfw1lb01dns01', + +Step 4: Observe DMaaP event: "Fault_MultiCloud_VMFailure" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Poll the subscribed DMaaP topic "unauthenticated.SEC_FAULT_OUTPUT" with curl command, +you should be able to observe the following VES fault event generated from DMaaP: + +.. code-block:: console + + [ + + "{\"event\":{\"commonEventHeader\":{\"startEpochMicrosec\":1537233558255872,\"sourceId\":\"8e606aa7-39c8-4df7-b2f4-1f6785b9f682\",\"eventId\":\"a236f561-f0fa-48a3-96cd-3a61ccfdf421\",\"reportingEntityId\":\"CloudOwner_pod01\",\"internalHeaderFields\":{\"collectorTimeStamp\":\"Tue, 09 18 2018 01:19:19 GMT\"},\"eventType\":\"\",\"priority\":\"High\",\"version\":3,\"reportingEntityName\":\"CloudOwner_pod01\",\"sequence\":0,\"domain\":\"fault\",\"lastEpochMicrosec\":1537233558255872,\"eventName\":\"Fault_MultiCloud_VMFailure\",\"sourceName\":\"zdfw1lb01dns01\"},\"faultFields\":{\"eventSeverity\":\"CRITICAL\",\"alarmCondition\":\"Guest_Os_Failure\",\"faultFieldsVersion\":2,\"specificProblem\":\"Fault_MultiCloud_VMFailure\",\"alarmInterfaceA\":\"aaaa\",\"alarmAdditionalInformation\":[{\"name\":\"objectType\",\"value\":\"VIM\"},{\"name\":\"eventTime\",\"value\":\"2018-09-18 01:19:18.255937\"}],\"eventSourceType\":\"virtualMachine\",\"vfStatus\":\"Active\"}}}", + + ] + + +Step 5: Simulate the Recovery +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Manually restart the stopped VM 'zdfw1lb01dns01' + + +Step 6: Observe DMaaP event: "Fault_MultiCloud_VMFailureCleared" +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: console + + [ + "{\"event\":{\"commonEventHeader\":{\"startEpochMicrosec\":1537233558255872,\"sourceId\":\"8e606aa7-39c8-4df7-b2f4-1f6785b9f682\",\"eventId\":\"a236f561-f0fa-48a3-96cd-3a61ccfdf421\",\"reportingEntityId\":\"CloudOwner_pod01\",\"internalHeaderFields\":{\"collectorTimeStamp\":\"Tue, 09 18 2018 01:19:31 GMT\"},\"eventType\":\"\",\"priority\":\"Normal\",\"version\":3,\"reportingEntityName\":\"CloudOwner_pod01\",\"sequence\":1,\"domain\":\"fault\",\"lastEpochMicrosec\":1537233570150714,\"eventName\":\"Fault_MultiCloud_VMFailureCleared\",\"sourceName\":\"zdfw1lb01dns01\"},\"faultFields\":{\"eventSeverity\":\"NORMAL\",\"alarmCondition\":\"Vm_Restart\",\"faultFieldsVersion\":2,\"specificProblem\":\"Fault_MultiCloud_VMFailure\",\"alarmInterfaceA\":\"aaaa\",\"alarmAdditionalInformation\":[{\"name\":\"objectType\",\"value\":\"VIM\"},{\"name\":\"eventTime\",\"value\":\"2018-09-18 01:19:30.150736\"}],\"eventSourceType\":\"virtualMachine\",\"vfStatus\":\"Active\"}}}" + + ] diff --git a/docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst b/docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst new file mode 100644 index 0000000..8e3b851 --- /dev/null +++ b/docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst @@ -0,0 +1,152 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 +.. International License. http://creativecommons.org/licenses/by/4.0 +.. Copyright (c) 2017-2018 Wind River Systems, Inc. + +=============================================== +MultiCloud Plugin for Wind River Titanium Cloud +=============================================== + +The following guides are provided to describe tasks that a user of +ONAP may need to perform when operating ONAP to orchestrate VNF onto +an instance of Wind River Titanium Cloud + + +Supported Features +`````````````````` + +**Proxy endpoints for OpenStack services** + + MultiCloud plugin for Wind River Titanium Cloud supports the proxy of OpenStack services + The catalog of proxied services is exactly the catalog of OpenStack services + +**VFC specific Northbound API** + + MultiCloud plugin for Wind River Titanium Cloud supports VFC with the legacy APIs + which was inherited from OPEN-O MultiVIM project. + +**Support enhanced SO/OOF workflow** + + MultiCloud plugin for Wind River Titanium Cloud supports infra_workload APIs from Casablanca Release. + + These APIs enhances the workflow of Heat based VNF orchestration by: + offloading Heat template/parameter updating from SO to MultiCloud plugins + + Enabling the "Centralized Representation of Cloud Regions" + + Automate the heatbridge action by updating the AAI with deployed Heat stack resources + +**Support OOF** + + MultiCloud plugin for Wind River Titanium Cloud supports capacity check from Beijing Release. + +**Conform to Consistent ID of a Cloud Region** + + Northbound API v1 supports the composite keys {cloud-owner}/{cloud-region-id} as + the ID of a cloud region + +**Decoupling between cloud-region-id and OpenStack Region ID** + + {cloud-region-id} should be populated by users while on-boarding a cloud region, + With ONAP A and B release, it must be the same as the "OpenStack Region ID" of the + represented OpenStack instance. From ONAP C release, this restriction has been removed. + + The backward compatibility is maintained so that user can still populate the {cloud-reigon-id} by + "OpenStack Region ID". + + Users could also specify the "OpenStack Region ID" while onboarding a cloud region + out of multi-region instances. + + Note: There are still restrictions to populate {cloud-owner} and {cloud-region-id}, please + refer to section "On-board a Cloud Region" + +**Support on-boarding of Multi-Region instances** + + Multiple OpenStack instances federated with the "multi-region" feature + can be on-boarded into ONAP with a single click. ONAP user needs to + register only the primary region into ONAP, and the multicloud plugin for Wind River + + Titanium Cloud will discover and on-board all other secondary regions automatically. + + This feature supports Titanium Cloud feature "Distributed Cloud" to on-board all subclouds with a single click. + + This feature can be controlled by user with configuration options while on-boarding a cloud region + +**HPA discovery** + + MultiCloud plugin for Wind River Titanium Cloud supports discover and + registration into AAI with regarding to following HPA capability: + CPU Pinning, HugePage, ... + +**Cloud Region decommission** + + MultiCloud plugin for Wind River Titanium Cloud support the decommission of a cloud region with a single API requests. + This API is not yet integrated with ESR GUI portal. + +**VESagent** + + MultiCloud plugin for Wind River Titanium Cloud supports VESagent + which can be configured to monitor the VM status and assert or abate + fault event to VES collector for close loop control over + infrastructure resources. + +**LOGGING** + MultiCloud plugin for Wind River Titanium Cloud supports centralized logging with OOM deployed ONAP + + +Supported Use Cases +``````````````````` + +**vFW/vDNS** + + The vFW/vDNS are the VNFs modeled with HEAT templates + MultiCloud plugin for Wind River Titanium Cloud has been tested with vFW/vDNS use cases from Amsterdam Release. + +**vCPE** + + **vCPE without HPA orchestration** + vCPE is the VNF modeled with HEAT templates, basic Use case from Amsterdam Release + does not include any HPA orchestration. + + **vCPE with HPA orchestration** + From Beijing Release,a variation of vCPE use case include HPA orchestration + + MultiCloud plugin for Wind River Titanium Cloud has been tested with both cases. + +**vVoLTE** + + MultiCloud plugin for Wind River Titanium Cloud has been tested with vVoLTE use case. + + +Known Issues: +`````````````````` + +1, MULTICLOUD-359 : The image uploading API from VFC specific NBI does not work with large image file. + + + +.. include:: Tutorial-Onboard-WindRiver-TitaniumCloud.rst + + +Tutorial: Cloud Region Decommission: +```````````````````````````````````` + +ESR GUI Portal cannot decommission a cloud region which has been updated by +MultiCloud Plugin for Wind River Titanium Cloud, and it does not request MultiCloud +to help on that yet. So it is required to issue a rest API request to MultiCloud with +a single curl commands: + + +.. code-block:: console + + curl -X DELETE \ + 'http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud-titaniumcloud/v0/CloudOwner_RegionOne' \ + -H 'Accept: application/json' \ + -H 'Cache-Control: no-cache' \ + -H 'Content-Type: application/json' \ + -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023' + + +.. include:: Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst + + +.. include:: Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst