...
- Clone the repo from : git clone https://gerrit.onap.org/r/integration/simulators/ran-simulator
Import the latest SDNC certificate into ransim
Download the SDNC cacerts from browser.
Import the cacert file into the directory ran-simulator/ransim/docker/config/ransim/ and name it as 'jssecacerts'.(Sample step to import shown below)
keytool -import -noprompt -trustcacerts -alias SDNC -file <certsfile> -keystore /ransim/docker/config/ransim/jssecacerts -storepass changeit
- Go to the ran-simulator/ransim directory and build the project : JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -P docker
(Note: make sure you have setup up your maven config as described here.) - From docker folder, run the following after building the images locally : docker-compose up
- Access the GUI using the following url in the web browser: http://localhost:8081/ransimui/index.html
- Click ‘Start’ button to start the simulation and choose the "sample.json" file and click Configure. Wait till you see success message either in the logs or in the UI. (Might take 5-10 minutes to load data)To access the logs:
docker exec –ti ransim bash
policy@ransim:/tmp/ransim-install$ tail -f /opt/app/policy/servers/ransim/logs/ransim-rest.log - Refresh the page to see the cells.
- Setup honeycomb (Refer HONEYCOMB section). Click ‘Netconf Details’ to see the running netconf servers.
- Right click on cell Chn0005 (scroll to the very top right on the cell map to find it) and click Show Neighbors to view the neighboring cells.
- To trigger collision/confusion , right click on Chn0005 and click Modify Neighbors option. Add ‘,Chn0012,Chn0116,Chn0071’ as neighbours and submit. Refresh page.
Check netconf server ncserver1 logs to see FM notification. - To generate PM data: Click ‘Start’ button under PM data with the below values:
Bad HO metrics leading to neighbor blacklist
bad : Chn0009
poor : Chn0005
...
Follow the steps below to setup the honeycomb environment:
- Clone the repo from : git clone https://github.com/onap-oof-pci-poc/ran-sim
- Go to the ran-sim/hcsim-content/enodebsim directory and build the project : JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ mvn clean install -Dcheckstyle.skip
...
- (Note: the project comes with it's own maven settings in ran-sim/
...
- hcsim-
...
- content/
...
- m2_settings.xml, that are required on top of the standard ONAP settings to build this.
- Go to the ran-sim/Netconf-Agents/hc_50000 directory ,
(if changes to enodebsim-impl are made run below command to place the jar)
cp -r ~/ran-sim/hcsim-content/enodebsim/enodebsim-impl/target/enodebsim-impl-1.0.0-SNAPSHOT.jar lib/org/onap/ransim/enodebsim-impl/1.0.0-SNAPSHOT/
- Execute the following command from the same directory : docker build -t netconf:latest .
- Bring up the docker container : docker run -d --name ncserver1 -e "enodebsimIp=10.31.4.45" -e "enodebsimPort=50001" -e "ransimCtrlrIp=10.31.4.45" -e "ransimCtrlrPort=8081" -e "vesEventListenerUrl=https://10.31.4.51:30417/eventListener/v7" -p 50001:50001 -t netconf:latest
- Bring up any number of netconf servers by changing the container name and port config in the above command.
Troubleshooting Common Errors:
...
- Clone the repo from : https://gerrit.onap.org/r/admin/repos/cps
- Build the project – When building the project run from the root cps folder : mvn clean install
- From docker-compose folder, run the following after building the images locally : VERSION=latest DB_USERNAME=cps DB_PASSWORD=cps docker-compose up -d
- Create the dataspace, schemaset, anchor and datanode using the following CPS APIs.
Kindly check this page for more details on CPS APIs Create Dataspace : R9 TBDMT Enhancements
CPS-TBDMT :
Follow the steps below to setup the CPS-TBDMT environment:
- Clone the repo from : cps/cps-tbdmt · Gerrit Code Review (onap.org)
Build the project – mvn clean install
Change the docker image name to avoid docker login issues : docker tag nexus3.onap.org:10003/onap/cps-tbdmt:latest cps-tbdmt:latest
From the docker-compose folder, edit the application.yml file
cpsCoreConfiguration url – change to VM's IP and the created dataspace's name
schemaToAnchor mapping – provide the created schemaset and anchor name
- From the docker-compose folder, run the following to bring up the containers : docker-compose up -d
POLICY :
There following control policies that are being used in the usecase. They have to be created and pushed into the policy.
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
Log in to policy-pdp container.
Execute the following commands:
Create and push Modify Config policy.
curl --location --user cpsuser:cpsr0cks! -H "Accept: application/json" -H "Content-Type: application/json" --request POST 'http://localhost:8883/cps/api/v1/dataspaces?dataspace-name=sondataspace'
Create Schemaset :
curl --location --user cpsuser:cpsr0cks! --request POST 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/schema-sets' --form 'file=@"ran-network.zip"' --form 'schema-set-name="ran-network-schemaset"'
curl --location --user cpsuser:cpsr0cks! --request POST 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/schema-sets' --form 'file=@"cps-ran-updated.zip"' --form 'schema-set-name="cps-ran-schemaset"'
Create Anchor :
curl --location --user cpsuser:cpsr0cks! --request POST 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/anchors?schema-set-name=ran-network-schemaset&anchor-name=ran-network-anchor'
curl --location --user cpsuser:cpsr0cks! --request POST 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/anchors?schema-set-name=cps-ran-schemaset&anchor-name=ran-cps-anchor'
Get all created anchors :
curl --location --user cpsuser:cpsr0cks! --request GET 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/anchors'
Create Datanode :
curl --location --user cpsuser:cpsr0cks! --request POST 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/anchors/ran-network-anchor/nodes' --header 'Content-Type: application/json' -d @ran-network.json
curl --location --user cpsuser:cpsr0cks! --request POST 'http://localhost:8883/cps/api/v1/dataspaces/sondataspace/anchors/ran-cps-anchor/nodes' --header 'Content-Type: application/json' -d @updated-csit-ran-data.json
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
CPS-TBDMT :
Follow the steps below to setup the CPS-TBDMT environment:
- Clone the repo from : cps/cps-tbdmt · Gerrit Code Review (onap.org)
Build the project – mvn clean install
Change the docker image name to avoid docker login issues : docker tag nexus3.onap.org:10003/onap/cps-tbdmt:latest cps-tbdmt:latest
From the docker-compose folder, edit the application.yml file
cpsCoreConfiguration url – change to VM's IP and the created dataspace's name (sondataspace)
schemaToAnchor mapping – provide the created schemaset and anchor name ( ran-network-schemaset : ran-network-anchor , cps-ran-schemaset : cps-ran-anchor )
- From the docker-compose folder, run the following to bring up the containers : docker-compose up -d
- Once the docker container is up, execute the following TBDMT-APIs
get-cell API :
curl --location --request POST 'http://localhost:8080/templates' --header 'Content-Type: application/json' --data-raw '{
"templateId": "get-cell",
"model": "cps-ran-schemaset",
"requestType": "get",
"xpathTemplate": "/cps-ran-schema/Regions[@regionId='\''{{regionId}}'\'']/cps-region-cell-mapping",
"includeDescendants": true
}' -i
To verify the created template :
curl --location --request POST 'http://localhost:8080/execute/cps-ran-schemaset/get-cell' --header 'Content-Type: application/json' --data-raw '{
"inputParameters": {
"regionId":"netw2000"
}
}' -i
get-nbr-list API :
curl --location --request POST 'http://localhost:8080/templates' --header 'Content-Type: application/json' --data-raw '{
"templateId": "get-nbr-list",
"model": "cps-ran-schemaset",
"requestType": "get",
"xpathTemplate": "/cps-ran-schema/Regions[@regionId='\''{{netw1000}}'\'']/cps-region-cell-mapping/NRCellCU[@idNRCellCU='\''{{cellId}}'\'']",
"includeDescendants": true
}' -i
To verify the created template :
curl --location --request POST 'http://localhost:8080/execute/cps-ran-schemaset/get-nbr-list' --header 'Content-Type: application/json' --data-raw '{
"inputParameters": {
"cellId":"Chn0005"
}
}' -i
get-nbr-list1 API : (OOF)
curl --location --request POST 'http://localhost:8080/templates' --header 'Content-Type: application/json' --data-raw '{
"templateId": "get-nbr-list1",
"model": "cps-ran-schemaset",
"requestType": "get",
"xpathTemplate": "/cps-ran-schema/Regions[@regionId='\''{{regionId}}'\'']/cps-region-cell-mapping/NRCellCU[@idNRCellCU='\''{{idNRCellCU}}'\'']",
"includeDescendants": true
}' -i
To verify the created template :
curl --location --request POST 'http://localhost:8080/execute/cps-ran-schemaset/get-nbr-list1' --header 'Content-Type: application/json' --data-raw '{
"inputParameters": {
"regionId":"netw1000",
"idNRCellCU":"Chn0005"
}
}' -i
get-pci API :
curl --location --request POST 'http://localhost:8080/templates' --header 'Content-Type: application/json' --data-raw '{
"templateId": "get-pci",
"model": "ran-network-schemaset",
"requestType": "get",
"xpathTemplate": "/ran-network/NearRTRIC[@idNearRTRIC='\''{{11}}'\'']/GNBDUFunction[@idGNBDUFunction='\''{{110}}'\'']/NRCellDU[@idNRCellDU='\''{{cellId}}'\'']/attributes",
"includeDescendants": true
}' -i
To verify the created template :
curl --location --request POST 'http://localhost:8080/execute/ran-network-schemaset/get-pci' --header 'Content-Type: application/json' --data-raw '{
"inputParameters": {
"cellId":"Chn0005"
}
}' -i
get-pnf API :
curl --location --request POST 'http://localhost:8080/templates' --header 'Content-Type: application/json' --data-raw '{
"templateId": "get-pnf",
"model": "ran-network-schemaset",
"requestType": "query-cps-path",
"xpathTemplate": "//NRCellCU[@idNRCellCU='\''{{cellId}}'\'']/ancestor::GNBCUCPFunction",
"includeDescendants": true
}' -i
To verify the created template :
curl --location --request POST 'http://localhost:8080/execute/ran-network-schemaset/get-pnf' --header 'Content-Type: application/json' --data-raw '{
"inputParameters": {
"cellId":"Chn0008"
}
}' -i
POLICY :
There following control policies that are being used in the usecase. They have to be created and pushed into the policy.
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
View file | ||||
---|---|---|---|---|
|
Log in to policy-pdp container.
Execute the following commands:
Create and push Modify Config policy.
Modify Config policy |
---|
curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @pci.json curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @pci_push.json |
Create and push Modify Config ANR policy.
Modify Config ANR policy |
---|
curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop.operational.common.Drools/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @son.json curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @son_push.json |
Create and push PCI-controlloop-guard(Controlloop-denial) policy:
PCI-guard |
---|
curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop. |
FirstBlocksSecond/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d |
@pciBson. |
json curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d |
@pciBson_push. |
json |
Create and
...
push ANR-controlloop-guard policy:
ANR-guard |
---|
curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop. |
FirstBlocksSecond/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d |
@sonBpci. |
json curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d |
@sonBpci_push.json |
Create and push PCI-controlloop-guard(Controlloop-denial) policy:
...
PCI-guard
...
curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @pciBson.json
curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @pciBson_push.json
|
SON-HANDLER :
Configure the SON-Handler with the below CPS details and then deploy.
Edit this file oom/kubernetes/dcaegen2-services/components/dcae-son-handler.values.yaml
- cps.username: cpsuser
- cps.password: cpsr0cks!
- sonhandler.clientType: CPS
- cps.service.url: http://<cps-tbdmt-ip>:8080
- cps.get.cell.data.url: execute/cps-ran-schemaset/get-cell-data
- cps.get.nbr.list.url: execute/cps-ran-schemaset/get-nbr-list
- cps.get.pci.url: execute/ran-network-schemaset/get-pci
- cps.get.pnf.url: execute/ran-network-schemaset/get-pnf
DMAAP :
Steps for creating dmaap topics
The following dmaap topics need 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
The topics can be added by logging into the message-router-kafka container and executing the following command:
Create Topic |
---|
curl --header "Content-type: application/json" --request POST --data '{"owner": "","txenabled": false,"topicName": "<topic-name>"}' http://<message-router-ip>:3904/topics/create |
OOF :
Configure the OOF
Create and push ANR-controlloop-guard policy:
...
ANR-guard
...
curl -k --silent --user 'healthcheck:zb!XztG34' -X POST "https://policy-api:6969/policy/api/v1/policytypes/onap.policies.controlloop.guard.coordination.FirstBlocksSecond/versions/1.0.0/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @sonBpci.json
curl --silent -k --user 'healthcheck:zb!XztG34' -X POST "https://policy-pap:6969/policy/pap/v1/pdps/policies" -H "Accept: application/json" -H "Content-Type: application/json" -d @sonBpci_push.json
SON-HANDLER :
Configure the SON-Handler with the below CPS details and then deploy.
Edit this file - oom/kubernetes/dcaegen2-services/components/dcae-son-handler.oof/values.yaml
- configClientType: cpscps.
- username# cps api
cps:
cpsUsername: cpsuser
cps.password cpsPassword: cpsr0cks! - sonhandler.clientType: CPS
- cps.service.url: http://<cps-tbdmt-ip>:8080
- cps.get.cell.data.url: execute/cps-ran-schemaset/get-cell-data
- cps.get.nbr.list.url: execute/cps-ran-schemaset/get-nbr-list
- cps.get.pci.url: execute/ran-network cpsUrl: http://<cps-tbdmt-ip>:8080/execute
cpsCellListUrl: 'cps-ran-schemaset/get-pcicps.get.pnf.url: execute/ran-network-cell'
cpsNbrListUrl: 'cps-ran-schemaset/get-nbr-pnflist1'