Overview
SON-Handler application acts upon reception of two types of events (Measurement and Fault events) and Neighbor list change notification from SDNR.
Fault events are sent whenever collisions/confusions found by the Ran-simulator due to pci changes and at the same time SDNR notification is also sent whenever there is change in pci value.Measurement events are periodically sent from Ran-simulator which gives the KPI information.
SON-Handler processes the events and calls OOF for global optimization. Then it determines the actions based on OOF response and writes to unauthenticated.DCAE_CL_OUTPUT for policy to take necessary actions.
Blueprint/model/image
Βlueprint component file can be found in
Blueprint inputs file can be found in
Docker image metadata for component can be found in
Deployment Prerequisite/dependencies
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
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'
ConfigDB set-up:
The steps to set up configDB can be found in the attachment below.
Deployment Steps
- Copy sonhms-blueprint and inputs file to /blueprints directory in DCAE bootstrap POD
- Log-in to the DCAE bootstrap POD's main container
validate and deploy component
Deploy componentcfy install -b sonhms -d sonhms -i <inputsFilePath> <blueprintFilePath>
undeploy
Undeploy componentcfy uninstall sonhms
delete blueprint
Delete blueprintcfy blueprints delete sonhms
Validation
The status of service can be checked after the deployment using command "kubectl get pods --namespace onap |grep son"
ubuntu@k8s-dcae-1:~$ kubectl get pods --namespace onap | grep son dep-s37e79facdf9b4820a933852d56127cd9-dcae-sonhms-59897b86qmv5p 1/1 Running 0 5h
Logs can be checked for dmaap connectivity
05:50:40.444 [pool-1-thread-2] INFO c.a.n.c.c.impl.CambriaConsumerImpl - UEB GET /events/PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO/sonhms-cg/sonhms-cid 05:50:40.445 [pool-1-thread-2] INFO c.att.nsa.apiClient.http.HttpClient - GET http://message-router:3904/events/PCI-NOTIF-TOPIC-NGHBR-LIST-CHANGE-INFO/sonhms-cg/sonhms-cid (anonymous) 05:50:40.448 [pool-2-thread-2] INFO c.a.n.c.c.impl.CambriaConsumerImpl - UEB GET /events/unauthenticated.SEC_FAULT_OUTPUT/sonhms-cg/sonhms-cid 05:50:40.448 [pool-2-thread-2] INFO c.att.nsa.apiClient.http.HttpClient - GET http://message-router:3904/events/unauthenticated.SEC_FAULT_OUTPUT/sonhms-cg/sonhms-cid (anonymous) 05:50:40.450 [pool-3-thread-2] INFO c.a.n.c.c.impl.CambriaConsumerImpl - UEB GET /events/unauthenticated.SEC_MEASUREMENT_OUTPUT/sonhms-cg/sonhms-cid 05:50:40.450 [pool-3-thread-2] INFO c.att.nsa.apiClient.http.HttpClient - GET http://message-router:3904/events/unauthenticated.SEC_MEASUREMENT_OUTPUT/sonhms-cg/sonhms-cid (anonymous) 05:50:50.622 [pool-1-thread-2] INFO c.att.nsa.apiClient.http.HttpClient ---> HTTP/1.1 200 OK 05:50:50.622 [pool-3-thread-2] INFO c.att.nsa.apiClient.http.HttpClient ---> HTTP/1.1 200 OK 05:50:50.622 [pool-2-thread-2] INFO c.att.nsa.apiClient.http.HttpClient ---> HTTP/1.1 200 OK