diff options
-rw-r--r-- | docs/MultiCloud-APIv0-Specification.rst (renamed from docs/MultiCloud-API-Specification-V1.rst) | 2 | ||||
-rw-r--r-- | docs/MultiCloud-APIv1-Specification.rst | 2 | ||||
-rw-r--r-- | docs/MultiCloud-HPA-Deployment-Guide.rst | 211 | ||||
-rw-r--r-- | docs/images/mc-windriver/esr-vim-register.png | bin | 0 -> 20158 bytes | |||
-rw-r--r-- | docs/index.rst | 38 | ||||
-rw-r--r-- | docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst | 68 | ||||
-rw-r--r-- | docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst | 289 | ||||
-rw-r--r-- | docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst | 139 | ||||
-rw-r--r-- | docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst | 152 |
9 files changed, 682 insertions, 219 deletions
diff --git a/docs/MultiCloud-API-Specification-V1.rst b/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=<floating IP of VM with name "onap-aai-inst1"> - export ONAP_AAI_PORT=8443 - export ONAP_MSB_IP=<floating IP of VM with name "onap-multi-service"> - export ONAP_MSB_PORT=80 - -With OOM based ONAP: - -.. code-block:: console - - export ONAP_AAI_IP=<floating IP of VM with name "k8s_1"> - export ONAP_AAI_PORT=30233 - export ONAP_MSB_IP=<floating IP of VM with name "k8s_1"> - 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": "<random UUID, e.g. 5c85ce1f-aa78-4ebf-8d6f-4b62773e9bde>", - "service-url": "http://<your openstack keystone endpoint, e.g. http://10.12.25.2:5000/v3>", - "user-name": "<your openstack user>", - "password": "<your openstack password>", - "system-type": "VIM", - "ssl-insecure": true, - "cloud-domain": "Default", - "default-tenant": "<your openstack project name>", - "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 Binary files differnew file mode 100644 index 0000000..571f56d --- /dev/null +++ b/docs/images/mc-windriver/esr-vim-register.png 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 <multicloud>` 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=<floating IP of VM with name "onap-aai-inst1">
+ export ONAP_AAI_PORT=8443
+ export ONAP_MSB_IP=<floating IP of VM with name "onap-multi-service">
+ export ONAP_MSB_PORT=80
+
+With OOM based ONAP:
+....................
+
+.. code-block:: console
+
+ export ONAP_AAI_IP=<floating IP of VM with name "k8s_1">
+ export ONAP_AAI_PORT=30233
+ export ONAP_MSB_IP=<floating IP of VM with name "k8s_1">
+ 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": "<random UUID, e.g. 5c85ce1f-aa78-4ebf-8d6f-4b62773e9bde>",
+ "service-url": "http://<your openstack keystone endpoint, e.g. http://10.12.25.2:5000/v3>",
+ "user-name": "<your openstack user>",
+ "password": "<your openstack password>",
+ "system-type": "VIM",
+ "ssl-insecure": true,
+ "cloud-domain": "Default",
+ "default-tenant": "<your openstack project name>",
+ "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": "<random UUID, e.g. 5c85ce1f-aa78-4ebf-8d6f-4b62773e9bde>",
+ "service-url": "http://<your openstack keystone endpoint, e.g. http://10.12.25.2:5000/v3>",
+ "user-name": "<your openstack user>",
+ "password": "<your openstack password>",
+ "system-type": "VIM",
+ "ssl-insecure": true,
+ "cloud-domain": "Default",
+ "default-tenant": "<your openstack project name>",
+ "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
|