Refactor the docs 27/71627/8
authorBin Yang <bin.yang@windriver.com>
Thu, 1 Nov 2018 12:38:54 +0000 (12:38 +0000)
committerBin Yang <bin.yang@windriver.com>
Sat, 3 Nov 2018 03:01:42 +0000 (03:01 +0000)
Dedicated sections for APIs, User guides, and specs

Change-Id: Icf57b4b14d775507b40b65681be2aba9a8e2e62f
Issue-ID: MULTICLOUD-309
Signed-off-by: Bin Yang <bin.yang@windriver.com>
docs/MultiCloud-APIv0-Specification.rst [moved from docs/MultiCloud-API-Specification-V1.rst with 99% similarity]
docs/MultiCloud-APIv1-Specification.rst
docs/MultiCloud-HPA-Deployment-Guide.rst [deleted file]
docs/images/mc-windriver/esr-vim-register.png [new file with mode: 0644]
docs/index.rst
docs/multicloud-plugin-windriver/Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst [new file with mode: 0644]
docs/multicloud-plugin-windriver/Tutorial-Onboard-WindRiver-TitaniumCloud.rst [new file with mode: 0644]
docs/multicloud-plugin-windriver/Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst [new file with mode: 0644]
docs/multicloud-plugin-windriver/UserGuide-MultiCloud-WindRiver-TitaniumCloud.rst [new file with mode: 0644]

similarity index 99%
rename from docs/MultiCloud-API-Specification-V1.rst
rename to docs/MultiCloud-APIv0-Specification.rst
index 8283077..b89a51e 100644 (file)
@@ -3,7 +3,7 @@
  International License.
 
 ================================
-MultiCloud API Specification V1
+MultiCloud API v0 Specification
 ================================
 
 API Catalog
index edecd4a..b68fbe0 100644 (file)
@@ -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 (file)
index 0e815cc..0000000
+++ /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
new file mode 100644 (file)
index 0000000..571f56d
Binary files /dev/null and b/docs/images/mc-windriver/esr-vim-register.png differ
index b326ecf..8e2196f 100644 (file)
@@ -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 (file)
index 0000000..0480146
--- /dev/null
@@ -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 (file)
index 0000000..52926bb
--- /dev/null
@@ -0,0 +1,289 @@
+.. This work is licensed under a Creative Commons Attribution 4.0\r
+.. International License.  http://creativecommons.org/licenses/by/4.0\r
+.. Copyright (c) 2017-2018 Wind River Systems, Inc.\r
+\r
+Tutorial: Onboard instance of Wind River Titanium Cloud\r
+```````````````````````````````````````````````````````\r
+\r
+Prerequisites\r
+-------------\r
+\r
+Collect ONAP Access Info\r
+^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+With Heat based ONAP:\r
+.....................\r
+\r
+.. code-block:: console\r
+\r
+    export ONAP_AAI_IP=<floating IP of VM with name "onap-aai-inst1">\r
+    export ONAP_AAI_PORT=8443\r
+    export ONAP_MSB_IP=<floating IP of VM with name "onap-multi-service">\r
+    export ONAP_MSB_PORT=80\r
+\r
+With OOM based ONAP:\r
+....................\r
+\r
+.. code-block:: console\r
+\r
+    export ONAP_AAI_IP=<floating IP of VM with name "k8s_1">\r
+    export ONAP_AAI_PORT=30233\r
+    export ONAP_MSB_IP=<floating IP of VM with name "k8s_1">\r
+    export ONAP_MSB_PORT=30280\r
+\r
+Determine the ID of the cloud region:\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+    cloud region is ONAP's representation of the on-boarded VIM/Cloud instance (Titanium Cloud instance in this case).\r
+    The ID of a cloud region is specified by ONAP user while on-boarding the VIM/Cloud instance, this ID will be\r
+    internal to ONAP only, comprised by the composite keys of "cloud-owner" and "cloud-region-id".\r
+\r
+.. code-block:: console\r
+\r
+    export CLOUD_OWNER="CloudOwner"\r
+    export CLOUD_REGION_ID="RegionOne"\r
+\r
+\r
+Notes:\r
+......\r
+\r
+    1, It is suggested to populate "cloud-owner" to be "CloudOwner".\r
+    The restriction is that underscore "_" can not be used.\r
+\r
+    2, There is restriction from ONAP Amsterdam Release that the\r
+    "cloud-region-id" must be the same as OpenStack Region ID in case that\r
+    the cloud region represent an OpenStack Instance.\r
+    From Casablanca Release, the restriction of "cloud-region-id" has been\r
+    removed by MultiCloud plugin for Wind River Titanium Cloud. It is not\r
+    mandatory to be populate the "cloud-region-id" with OpenStack Region ID.\r
+\r
+\r
+The geographic location of the cloud region\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+make sure there is complex object to represent the geographic location of the cloud region\r
+in case you need create a complex object "clli1":\r
+\r
+.. code-block:: console\r
+\r
+    curl -X PUT \\r
+    https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/complexes/complex/clli1 \\r
+    -H 'Accept: application/json' \\r
+    -H 'Authorization: Basic QUFJOkFBSQ==' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 2b272126-aa65-41e6-aa5d-46bc70b9eb4f' \\r
+    -H 'Real-Time: true' \\r
+    -H 'X-FromAppId: jimmy-postman' \\r
+    -H 'X-TransactionId: 9999' \\r
+    -d '{\r
+        "physical-location-id": "clli1",\r
+        "data-center-code": "example-data-center-code-val-5556",\r
+        "complex-name": "clli1",\r
+        "identity-url": "example-identity-url-val-56898",\r
+        "physical-location-type": "example-physical-location-type-val-7608",\r
+        "street1": "example-street1-val-34205",\r
+        "street2": "example-street2-val-99210",\r
+        "city": "Beijing",\r
+        "state": "example-state-val-59487",\r
+        "postal-code": "100000",\r
+        "country": "example-country-val-94173",\r
+        "region": "example-region-val-13893",\r
+        "latitude": "39.9042",\r
+        "longitude": "106.4074",\r
+        "elevation": "example-elevation-val-30253",\r
+        "lata": "example-lata-val-46073"\r
+        }'\r
+\r
+\r
+\r
+\r
+On-board Wind River Titanium Cloud Instance\r
+-------------------------------------------\r
+\r
+You can on-board the instance of Wind River Titanium Cloud with either way as below\r
+\r
+\r
+With curl commands\r
+^^^^^^^^^^^^^^^^^^\r
+\r
+Step 1: Create a cloud region to represent the instance\r
+.......................................................\r
+\r
+.. code-block:: console\r
+\r
+    ### on-board a single OpenStack region\r
+    ### you can specify the Openstack Region ID by extra inputs: {"openstack-region-id":"RegionOne"}\r
+\r
+\r
+    curl -X PUT \\r
+    https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID} \\r
+    -H 'Accept: application/json' \\r
+    -H 'Authorization: Basic QUFJOkFBSQ==' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \\r
+    -H 'Real-Time: true' \\r
+    -H 'X-FromAppId: jimmy-postman' \\r
+    -H 'X-TransactionId: 9999' \\r
+    -d '{\r
+        "cloud-owner": "<${CLOUD_OWNER}>",\r
+        "cloud-region-id": "<${CLOUD_REGION_ID}>",\r
+        "cloud-type": "openstack",\r
+        "owner-defined-type": "t1",\r
+        "cloud-region-version": "titanium_cloud",\r
+        "complex-name": "clli1",\r
+        "cloud-zone": "CloudZone",\r
+        "sriov-automation": false,\r
+        "identity-url": "WillBeUpdatedByMultiCloud",\r
+        "cloud-extra-info":"{\"openstack-region-id\":\"RegionOne\"}"\r
+        "esr-system-info-list": {\r
+            "esr-system-info": [\r
+                {\r
+                "esr-system-info-id": "<random UUID, e.g. 5c85ce1f-aa78-4ebf-8d6f-4b62773e9bde>",\r
+                "service-url": "http://<your openstack keystone endpoint, e.g. http://10.12.25.2:5000/v3>",\r
+                "user-name": "<your openstack user>",\r
+                "password": "<your openstack password>",\r
+                "system-type": "VIM",\r
+                "ssl-insecure": true,\r
+                "cloud-domain": "Default",\r
+                "default-tenant": "<your openstack project name>",\r
+                "system-status": "active"\r
+                }\r
+            ]\r
+          }\r
+        }'\r
+\r
+\r
+\r
+.. code-block:: console\r
+\r
+    ### on-board multiple OpenStack regions with a single request by indicating {"multi-region-discovery":true}\r
+    ### you can specify the Openstack Region ID by extra inputs: {"openstack-region-id":"RegionOne"}\r
+\r
+    curl -X PUT \\r
+    https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID} \\r
+    -H 'Accept: application/json' \\r
+    -H 'Authorization: Basic QUFJOkFBSQ==' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 8b9b95ae-91d6-4436-90fa-69cb4d2db99c' \\r
+    -H 'Real-Time: true' \\r
+    -H 'X-FromAppId: jimmy-postman' \\r
+    -H 'X-TransactionId: 9999' \\r
+    -d '{\r
+        "cloud-owner": "<${CLOUD_OWNER}>",\r
+        "cloud-region-id": "<${CLOUD_REGION_ID}>",\r
+        "cloud-type": "openstack",\r
+        "owner-defined-type": "t1",\r
+        "cloud-region-version": "titanium_cloud",\r
+        "complex-name": "clli1",\r
+        "cloud-zone": "CloudZone",\r
+        "sriov-automation": false,\r
+        "identity-url": "WillBeUpdatedByMultiCloud",\r
+        "cloud-extra-info":"{\"multi-region-discovery\":true, \"openstack-region-id\":\"RegionOne\"}"\r
+        "esr-system-info-list": {\r
+            "esr-system-info": [\r
+                {\r
+                "esr-system-info-id": "<random UUID, e.g. 5c85ce1f-aa78-4ebf-8d6f-4b62773e9bde>",\r
+                "service-url": "http://<your openstack keystone endpoint, e.g. http://10.12.25.2:5000/v3>",\r
+                "user-name": "<your openstack user>",\r
+                "password": "<your openstack password>",\r
+                "system-type": "VIM",\r
+                "ssl-insecure": true,\r
+                "cloud-domain": "Default",\r
+                "default-tenant": "<your openstack project name>",\r
+                "system-status": "active"\r
+                }\r
+            ]\r
+          }\r
+        }'\r
+\r
+\r
+Step 2: associate the cloud region with the location object\r
+...........................................................\r
+\r
+\r
+This association between the cloud region and location is required for OOF homing/placement of VNF\r
+\r
+.. code-block:: console\r
+\r
+    curl -X PUT \\r
+    https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID}/relationship-list/relationship \\r
+    -H 'Authorization: Basic QUFJOkFBSQ==' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 7407d60c-8ce7-45de-ada3-4a7a9e88ebd4' \\r
+    -H 'Real-Time: true' \\r
+    -H 'X-FromAppId: jimmy-postman' \\r
+    -H 'X-TransactionId: 9999' \\r
+    -d '{\r
+        "related-to": "complex",\r
+        "related-link": "/aai/v13/cloud-infrastructure/complexes/complex/clli1",\r
+        "relationship-data": [\r
+            {\r
+            "relationship-key": "complex.physical-location-id",\r
+            "relationship-value": "clli1"\r
+            }\r
+            ]\r
+        }'\r
+\r
+\r
+\r
+Step 3: Trigger the MultiCloud Plugin registration process\r
+..........................................................\r
+\r
+\r
+Make sure trigger MultiCloud plugin to discover and register Infrastructure\r
+resources, including HPA\r
+\r
+.. code-block:: console\r
+\r
+    curl -X POST \\r
+    http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud/v0/${CLOUD_OWNER}_${CLOUD_REGION_ID}/registry \\r
+    -H 'Accept: application/json' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023'\r
+\r
+\r
+With ESR GUI Portal\r
+^^^^^^^^^^^^^^^^^^^\r
+ESR will conduct all steps mentioned above with a single click.\r
+\r
+The url of the ESR GUI Portal is:\r
+\r
+..\r
+ http://$ONAP_MSB_IP:$ONAP_MSB_PORT/iui/aai-esr-gui/extsys/vim/vimView.html\r
+\r
+.. image:: ../images/mc-windriver/esr-vim-register.png\r
+    :alt: ESR VIM Registrer GUI Portal\r
+    :width: 500\r
+    :height: 700\r
+    :align: center\r
+\r
+\r
+Verification\r
+------------\r
+\r
+You may want to verify if the cloud region was registered properly (with HPA information populated)\r
+to represent the instance of Wind River Titanium Cloud, you can do it with the curl command as below\r
+\r
+.. code-block:: console\r
+\r
+    curl -X GET \\r
+    https://$ONAP_AAI_IP:$ONAP_AAI_PORT/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/${CLOUD_OWNER}/${CLOUD_REGION_ID}?depth=all \\r
+    -H 'Accept: application/json' \\r
+    -H 'Authorization: Basic QUFJOkFBSQ==' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 2899359f-871b-4e61-a307-ecf8b3144e3f' \\r
+    -H 'Real-Time: true' \\r
+    -H 'X-FromAppId: jimmy-postman' \\r
+    -H 'X-TransactionId: 9999'\r
+\r
+\r
+Note:\r
+^^^^^\r
+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."\r
+\r
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 (file)
index 0000000..2d17692
--- /dev/null
@@ -0,0 +1,139 @@
+.. This work is licensed under a Creative Commons Attribution 4.0\r
+.. International License.  http://creativecommons.org/licenses/by/4.0\r
+.. Copyright (c) 2017-2018 Wind River Systems, Inc.\r
+\r
+Tutorial: VESagent configuration and Testing\r
+````````````````````````````````````````````\r
+\r
+VESagent is a FCAPS relaying service offered by MultiCloud Plugin for Wind\r
+River Titanium Cloud. It allows user to monitor specified VM status and report\r
+VES collector with onset or abate fault event "Fault_MultiCloud_VMFailure"\r
+\r
+VESagent provisoning APIs\r
+-------------------------\r
+\r
+### assume OOM deployment as below endpoints:\r
+\r
+*   OOM k8s Node IP, e.g. 10.12.5.184\r
+*   OOM k8s Node port for multicloud-titaniumcloud POD: 30294\r
+*   On-boarded cloud region with {cloud-owner}/{cloud-region-id} : CloudOwner/pod01\r
+*   VES collector endpoint: 10.12.6.79:8081\r
+\r
+\r
+\r
+.. code-block:: console\r
+\r
+    #!/bin/bash\r
+    export MC_EP_IP=10.12.5.184\r
+    export MC_EP_PORT=30294\r
+\r
+    export MC_EPv0=http://$OPENO_IP:$MC_EP_PORT/api/multicloud-titaniumcloud/v0/CloudOwner_pod01\r
+    export MC_EPv1=http://$OPENO_IP:$MC_EP_PORT/api/multicloud-titaniumcloud/v1/CloudOwner/pod01\r
+\r
+\r
+\r
+1. Setup VESagent backlogs\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+** Option 1: monitor all VMs of a tenant**\r
+\r
+.. code-block:: console\r
+\r
+    curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config": \\r
+         {"backlogs":[ {"domain":"fault","type":"vm","tenant":"VIM"}],\\r
+         "poll_interval_default":10,"ves_subscription":\\r
+         {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}'\\r
+          -X POST  $MC_EPv0/vesagent\r
+\r
+** Option 2: monitor specified VMs**\r
+\r
+.. code-block:: console\r
+\r
+    ### zdfw1lb01dns01, zdfw1lb01dns02\r
+    curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config":\\r
+         {"backlogs":[ {"source":"zdfw1lb01dns01", "domain":"fault","type":"vm","tenant":"VIM"},\\r
+          {"source":"zdfw1lb01dns02", "domain":"fault","type":"vm","tenant":"VIM"}],\r
+         "poll_interval_default":10,"ves_subscription":\\r
+         {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}' \\r
+         -X POST  $MC_EPv0/vesagent\r
+\r
+2. Dump the VESagent backlogs\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+.. code-block:: console\r
+\r
+    curl -v -s -H "Content-Type: application/json" -X GET  $MC_EPv0/vesagent\r
+\r
+3. Delete the VESagent backlogs\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+.. code-block:: console\r
+\r
+    curl -v -s -H "Content-Type: application/json" -X DELETE  $MC_EPv0/vesagent\r
+\r
+\r
+VESagent exercises\r
+------------------\r
+\r
+Step 1: Monitor the DMaaP events\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+Subscribe to and keep polling DMaaP Topic: "unauthenticated.SEC_FAULT_OUTPUT" with curl command\r
+\r
+.. code-block:: console\r
+\r
+    curl -X GET \\r
+          'http://$DMAAP_IP:3904/events/unauthenticated.SEC_FAULT_OUTPUT/EVENT-LISTENER-POSTMAN/304?timeout=6000&limit=10&filter=' \\r
+          -H 'Cache-Control: no-cache' \\r
+          -H 'Content-Type: application/json' \\r
+          -H 'Postman-Token: 4e2e3589-d742-48c7-8d48-d1b3577df259' \\r
+          -H 'X-FromAppId: 121' \\r
+          -H 'X-TransactionId: 9999'\r
+\r
+\r
+Step 2: Setup VESagent backlog\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+.. code-block:: console\r
+\r
+    ### zdfw1lb01dns01, zdfw1lb01dns02\r
+    curl -v -s -H "Content-Type: application/json" -d '{"vesagent_config":\\r
+         {"backlogs":[ {"source":"zdfw1lb01dns01", "domain":"fault","type":"vm","tenant":"VIM"}],\\r
+         "poll_interval_default":10,"ves_subscription":\\r
+         {"username":"admin","password":"admin","endpoint":"http://10.12.6.79:8081/eventListener/v5"}}}' \\r
+         -X POST  $MC_EPv0/vesagent\r
+\r
+Step 3: Simulate the Faults\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+Manually stop the monitored VMs,e.g. VM with name 'zdfw1lb01dns01',\r
+\r
+Step 4: Observe DMaaP event: "Fault_MultiCloud_VMFailure"\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+Poll the subscribed DMaaP topic "unauthenticated.SEC_FAULT_OUTPUT" with curl command,\r
+you should be able to observe the following VES fault event generated from DMaaP:\r
+\r
+.. code-block:: console\r
+\r
+    [\r
+\r
+        "{\"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\"}}}",\r
+\r
+    ]\r
+\r
+\r
+Step 5: Simulate the Recovery\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+Manually restart the stopped VM 'zdfw1lb01dns01'\r
+\r
+\r
+Step 6: Observe DMaaP event: "Fault_MultiCloud_VMFailureCleared"\r
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r
+\r
+.. code-block:: console\r
+\r
+    [\r
+        "{\"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\"}}}"\r
+\r
+    ]\r
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 (file)
index 0000000..8e3b851
--- /dev/null
@@ -0,0 +1,152 @@
+.. This work is licensed under a Creative Commons Attribution 4.0\r
+.. International License.  http://creativecommons.org/licenses/by/4.0\r
+.. Copyright (c) 2017-2018 Wind River Systems, Inc.\r
+\r
+===============================================\r
+MultiCloud Plugin for Wind River Titanium Cloud\r
+===============================================\r
+\r
+The following guides are provided to describe tasks that a user of\r
+ONAP may need to perform when operating ONAP to orchestrate VNF onto\r
+an instance of Wind River Titanium Cloud\r
+\r
+\r
+Supported Features\r
+``````````````````\r
+\r
+**Proxy endpoints for OpenStack services**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud supports the proxy of OpenStack services\r
+    The catalog of proxied services is exactly the catalog of OpenStack services\r
+\r
+**VFC specific Northbound API**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud supports VFC with the legacy APIs\r
+    which was inherited from OPEN-O MultiVIM project.\r
+\r
+**Support enhanced SO/OOF workflow**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud supports infra_workload APIs from Casablanca Release.\r
+\r
+    These APIs enhances the workflow of Heat based VNF orchestration by:\r
+        offloading Heat template/parameter updating from SO to MultiCloud plugins\r
+\r
+        Enabling the "Centralized Representation of Cloud Regions"\r
+\r
+        Automate the heatbridge action by updating the AAI with deployed Heat stack resources\r
+\r
+**Support OOF**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud supports capacity check from Beijing Release.\r
+\r
+**Conform to Consistent ID of a Cloud Region**\r
+\r
+    Northbound API v1 supports the composite keys {cloud-owner}/{cloud-region-id} as\r
+    the ID of a cloud region\r
+\r
+**Decoupling between cloud-region-id and OpenStack Region ID**\r
+\r
+    {cloud-region-id} should be populated by users while on-boarding a cloud region,\r
+    With ONAP A and B release, it must be the same as the "OpenStack Region ID" of the\r
+    represented OpenStack instance. From ONAP C release, this restriction has been removed.\r
+\r
+    The backward compatibility is maintained so that user can still populate the {cloud-reigon-id} by\r
+    "OpenStack Region ID".\r
+\r
+    Users could also specify the "OpenStack Region ID" while onboarding a cloud region\r
+    out of multi-region instances.\r
+\r
+    Note: There are still restrictions to populate {cloud-owner} and {cloud-region-id}, please\r
+    refer to section "On-board a Cloud Region"\r
+\r
+**Support on-boarding of Multi-Region instances**\r
+\r
+    Multiple OpenStack instances federated with the "multi-region" feature\r
+    can be on-boarded into ONAP with a single click. ONAP user needs to\r
+    register only the primary region into ONAP, and the multicloud plugin for Wind River\r
+\r
+    Titanium Cloud will discover and on-board all other secondary regions automatically.\r
+\r
+    This feature supports Titanium Cloud feature "Distributed Cloud" to on-board all subclouds with a single click.\r
+\r
+    This feature can be controlled by user with configuration options while on-boarding a cloud region\r
+\r
+**HPA discovery**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud supports discover and\r
+    registration into AAI with regarding to following HPA capability:\r
+    CPU Pinning, HugePage, ...\r
+\r
+**Cloud Region decommission**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud support the decommission of a cloud region with a single API requests.\r
+    This API is not yet integrated with ESR GUI portal.\r
+\r
+**VESagent**\r
+\r
+    MultiCloud plugin for Wind River Titanium Cloud supports VESagent\r
+    which can be configured to monitor the VM status and assert or abate\r
+    fault event to VES collector for close loop control over\r
+    infrastructure resources.\r
+\r
+**LOGGING**\r
+    MultiCloud plugin for Wind River Titanium Cloud supports centralized logging with OOM deployed ONAP\r
+\r
+\r
+Supported Use Cases\r
+```````````````````\r
+\r
+**vFW/vDNS**\r
+\r
+   The vFW/vDNS are the VNFs modeled with HEAT templates\r
+   MultiCloud plugin for Wind River Titanium Cloud has been tested with vFW/vDNS use cases from Amsterdam Release.\r
+\r
+**vCPE**\r
+\r
+   **vCPE without HPA orchestration**\r
+      vCPE is the VNF modeled with HEAT templates, basic Use case from Amsterdam Release\r
+      does not include any HPA orchestration.\r
+\r
+   **vCPE with HPA orchestration**\r
+      From Beijing Release,a variation of vCPE use case include HPA orchestration\r
+\r
+   MultiCloud plugin for Wind River Titanium Cloud has been tested with both cases.\r
+\r
+**vVoLTE**\r
+\r
+   MultiCloud plugin for Wind River Titanium Cloud has been tested with vVoLTE use case.\r
+\r
+\r
+Known Issues:\r
+``````````````````\r
+\r
+1, MULTICLOUD-359 : The image uploading API from VFC specific NBI does not work with large image file.\r
+\r
+\r
+\r
+.. include:: Tutorial-Onboard-WindRiver-TitaniumCloud.rst\r
+\r
+\r
+Tutorial: Cloud Region Decommission:\r
+````````````````````````````````````\r
+\r
+ESR GUI Portal cannot decommission a cloud region which has been updated by\r
+MultiCloud Plugin for Wind River Titanium Cloud, and it does not request MultiCloud\r
+to help on that yet. So it is required to issue a rest API request to MultiCloud with\r
+a single curl commands:\r
+\r
+\r
+.. code-block:: console\r
+\r
+    curl -X DELETE \\r
+    'http://$ONAP_MSB_IP:$ONAP_MSB_PORT/api/multicloud-titaniumcloud/v0/CloudOwner_RegionOne' \\r
+    -H 'Accept: application/json' \\r
+    -H 'Cache-Control: no-cache' \\r
+    -H 'Content-Type: application/json' \\r
+    -H 'Postman-Token: 8577e1cc-1038-471d-8b3b-d36fe44ae023'\r
+\r
+\r
+.. include:: Tutorial-HPA-Provision-Discovery-WindRiver-TitaniumCloud.rst\r
+\r
+\r
+.. include:: Tutorial-VESagent-MultiCloud-WindRiver-TitaniumCloud.rst\r