--- /dev/null
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+
+SON-Handler MS
+==============
+
+.. Add or remove sections below as appropriate for the platform component.
+
+
+**SON-Handler MS** is introduced in ONAP for implementing the pre-processing and co-ordination actions of various RAN SON use cases.
+As of now PCI optimization and ANR updates are handled in Dublin release.
+OOF, SON Handler MS, DCAE, VES Collector, Policy, DMaaP and SDNR are involved in this use case implementation.
+
+.. image:: flowdiagram.jpg
+
+SON-Handler MS overview and functions
+-------------------------------------
+
+.. toctree::
+ :maxdepth: 1
+
+ son_handler_ms
+
+SON-Handler MS Installation Steps, Configurations, Troubleshooting Tips and Logging
+-----------------------------------------------------------------------------------
+
+.. toctree::
+ :maxdepth: 1
+
+ son_handler_ms_addl
--- /dev/null
+**** SON Handler ****
+
+** Instalation Steps **
+
+SON handler microservice can be deployed using cloudify blueprint using bootstrap container of an existing DCAE deployment
+
+Deployment Prerequisites:
+=========================
+
+ *SON-Handler service requires DMAAP and Policy components to be functional.
+
+ *SON-hadler service requires the following dmaap topics to be present in the running DMAAP instance :
+
+ 1.PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO
+
+ 2.unauthenticated.SEC_FAULT_OUTPUT
+
+ 3.unauthenticated.SEC_MEASUREMENT_OUTPUT
+
+ 4.DCAE_CL_RSP
+
+ *Policy model required for SON-handler service should be created and pushed to policy component.Steps for creating and pushing the policy model:
+ 1.Login to PDP container and execute
+ kubectl exec -ti --namespace onap policy-pdp-0 bash
+ 2.Create policy model
+ curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{
+ "policyName": "com.PCIMS_CONFIG_POLICY",
+ "configBody": "{ \"PCI_NEIGHBOR_CHANGE_CLUSTER_TIMEOUT_IN_SECS\":60, \"PCI_MODCONFIG_POLICY_NAME\":\"ControlLoop-vPCI-fb41f388-a5f2-11e8-98d0-529269fb1459\", \"PCI_OPTMIZATION_ALGO_CATEGORY_IN_OOF\":\"OOF-PCI-OPTIMIZATION\", \"PCI_SDNR_TARGET_NAME\":\"SDNR\" }",
+ "policyType": "Config",
+ "attributes" : { "matching" : { "key1" : "value1" } },
+ "policyConfigType": "Base",
+ "onapName": "DCAE",
+ "configName": "PCIMS_CONFIG_POLICY",
+ "configBodyType": "JSON"
+}' 'https://pdp:8081/pdp/api/createPolicy'
+
+ 3.Push policy model
+ curl -k -v --silent -X PUT --header 'Content-Type: application/json' --header 'Accept: text/plain' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{
+ "policyName": "com.PCIMS_CONFIG_POLICY",
+ "policyType": "Base"
+}' 'https://pdp:8081/pdp/api/pushPolicy'
+
+ 4.Verify config policy is present
+
+ curl -k -v --silent -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'ClientAuth: cHl0aG9uOnRlc3Q=' --header 'Authorization: Basic dGVzdHBkcDphbHBoYTEyMw==' --header 'Environment: TEST' -d '{ "configName": "PCIMS_CONFIG_POLICY", "policyName": "com.Config_PCIMS_CONFIG_POLICY1*", "requestID":"e65cc45a-9efb-11e8-98d0-529269ffa459" }' 'https://pdp:8081/pdp/api/getConfig'
+
+Deployment steps:
+=================
+* Login to the bootstrap container
+ kubectl exec -ti --namespace onap <bootstrap pod name> bash
+* Copy the blueprints and inputs file to the bootstrap container. The blueprint and a sample input file can be found under dpo/blueprints directory of son-hanler project. (https://gerrit.onap.org/r/dcaegen2/services/son-handler)
+* Deploy the microservice into the cloudify using the following command
+ cfy install -d sonhms -b sonhms -i <inputs file path> <blueprint file path>
+* Deployment status of the microservice can be found from kubernetes pods status (MS will be deployed as a k8s pod in the kubernetes environment under the same namespace as the DCAE environment).
+ kubectl get pods --namespace onap
+* To uninstall the microservice
+ cfy uninstall sonhms
+* To delete the blueprint from the cloudify instance
+ cfy blueprints delete sonhms
+
+
+** Application Configurations **
+
+Streams_subscribes Dmaap topics that the MS will consume messages
+
+Streams_publishes Dmaap topics that the MS will publish messages
+
+postgres.host Host where the postgres database is running
+
+postgres.port Host where the postgres database is running
+
+postgres.username Postgres username
+
+postgres.password Postgres password
+
+sonhandler.pollingInterval Polling Interval for consuming dmaap messages
+
+sonhandler.pollingTimeout Polling timeout for consuming dmaap messages
+
+sonhandler.numSolutions Number for solutions for OOF optimization
+
+sonhandler.minCollision Minimum collision criteria to trigger OOF
+
+sonhandler.minConfusion Minimum confusion criteria to trigger OOF
+
+sonhandler.maximumClusters Maximum number of clusters MS can process
+
+sonhandler.badThreshold Bad threshold for Handover success rate
+
+sonhandler.poorThreshold Poor threshold for Handover success rate
+
+sonhandler.namespace Namespace where MS is going to be deployed
+
+sonhandler.sourceId Source ID of the Microservice (Required for Sending request to OOF)
+
+sonhandler.dmaap.server Location of message routers
+
+sonhandler.bufferTime Buffer time for MS to wait for more notifications when the optimization criteria is not met
+
+sonhandler.cg Consumer group for the MS to consume message from dmaap
+
+sonhandler.cid Consumer ID for the MS to consume message from dmaap
+
+sonhandler.configDbService Location of the config DB (protocol, host & port)
+
+sonhandler.oof.service Location of OOF (protocol, host & port)
+
+sonhandler.optimizers Optimizer to trigger in OOF
+
+
--- /dev/null
+.. This work is licensed under a Creative Commons Attribution 4.0\r
+ International License. http://creativecommons.org/licenses/by/4.0\r
+ \r
+.. _docs_SON_Handler_MS:\r
+\r
+Architecture\r
+------------\r
+The architecture below depicts the SON-Handler MS as a part of DCAE. Only the relevant interactions and components are shown.\r
+\r
+.. image:: ./dcae_new.jpg\r
+\r
+The internal architecture of SON-Handler MS is shown below.\r
+\r
+.. image:: ./son_handler.jpg\r
+\r
+Description\r
+~~~~~~~~~~~\r
+The SON-Handler MS has a REST interface towards OOF as well as DMaaP interface towards Policy, VES-Collector and SDN-R. It has a database and core logic.\r
+\r
+Core logic\r
+~~~~~~~~~~\r
+The core logic is implemented as 3 threads - main thread, child thread(s) for handling neighbor-list updates and collision/confusion alarms from the RAN (via SDN-R), and a separate child for handling handover measurements (PM) inputs from the RAN (via VES-Collector). The Main Thread is responsible for spawning and terminating the Child Threads. The core logic is responsible for:\r
+(a) Performing all the pre-processing that is required before triggering OOF for PCI as well as PCI/ANR joint-optimization\r
+(b) Autonomously taking actions for ANR updates\r
+(c) Preparing the message contents required by SDN-R to re-configure the RAN nodes with PCI/ANR updates\r
+\r
+The logic may not be 100% fool-proof (i.e., cover all possible scenarios and boundary-counditions as in real field deployments), as well as the most efficient one. An attempt has been made to balance the usefulness for a PoC versus the complexity of handling all possible scenarios. It is intended to provide a good base for the community/users to enhance it further as required.\r
+\r
+The details of the state machines of all the threads in the core logic are available in https://wiki.onap.org/pages/viewpage.action?pageId=56131985.\r
+\r
+Database\r
+~~~~~~~~\r
+This is a PostgreSQL DB, and is intended to persist information such as the following:\r
+- PCI-Handler MS Config information (e.g., thresholds, timer values, OOF algorithm name, etc.)\r
+- Pre-processing results and other related information (e.g., neighbor list)\r
+- Buffered notifications (i.e., notifications not yet processed at all)\r
+- State information\r
+- Association between PNF-name and CellId\r
+- PM/FM data\r
+- Etc.\r
+\r
+DMaaP Client\r
+~~~~~~~~~~~~\r
+This is responsible for registering with the DMaaP client for the DMaaP notifications from SDN-R and VES-Collector, and to Policy.\r
+\r
+Deployment aspects\r
+------------------\r
+The SON-Handler MS will be deployed on DCAE using the mechanism described in "Option 3 - On-Demand deployment through DCAE-Controller cli" at https://wiki.onap.org/display/DW/Dublin+Deployment+Strategy.\r
+\r
+Known Issues and Resolutions\r
+----------------------------\r
+The scope and scenarios addressed are documented in the SON use case page for Dublin - https://wiki.onap.org/display/DW/OOF-PCI+Use+Case+-+Dublin+Release+-+ONAP+based+SON+for+PCI+and+ANR.
\ No newline at end of file