Add HPA deployment guide 09/54809/1
authorYun Huang <yun.huang@windriver.com>
Thu, 14 Jun 2018 13:43:04 +0000 (21:43 +0800)
committerYun Huang <yun.huang@windriver.com>
Thu, 14 Jun 2018 13:44:15 +0000 (21:44 +0800)
Change-Id: I896eac7b7c715326fbd1f86af1dd0e1ad1cf4d8c
Issue-ID: MULTICLOUD-248
Signed-off-by: Yun Huang <yun.huang@windriver.com>
docs/MultiCloud-HPA-Deployment-Guide.rst [new file with mode: 0644]

diff --git a/docs/MultiCloud-HPA-Deployment-Guide.rst b/docs/MultiCloud-HPA-Deployment-Guide.rst
new file mode 100644 (file)
index 0000000..8f618bb
--- /dev/null
@@ -0,0 +1,211 @@
+..
+ 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."
+
+