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