...
Step 1.1. Create VoLTE service with Huawei VNFs and set nf_type parameter to huaweivnfmdriver. Put a screenshot here
Step 1.2 Register a dummy Huawei VNFM from ESR (this is needed by VFC even though we don't use any VNFM in automated testing as we will mock huaweivnfmdriver). Attach a picture here
Step 1.3 Register CloudOwner_RegionOne from ESR. Make sure the ESR VIM entry has esr-system-info-list. If AAI record doesn't have esr-system-info-list for the VIM, update the record.
Step 2. Install MockServer docker in Robot VM
...
Step 9. Open /service//vfc/nfvo/lcm/lcm/pub/config/config.py in vfc_nslcm container and change AAI_BASE_URL = "http://10.0.14.1:80/aai/v11"
Step 10. Update file basemodel.py in vfc_catalog container with the version from master branch
/service/vfc/nfvo/catalog/catalog/pub/utils/toscaparser/basemodel.py (See R1 Known Issues issue 1)
...
Code Block |
---|
root@3511e71899bc:/service/vfc/nfvo/catalog/catalog/pub/config# diff config.py config.py.orig 52,54c52,54 < SDC_BASE_URL = "http://10.0.14.1:80/api" < SDC_USER = "aai" < SDC_PASSWD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U" --- > SDC_BASE_URL = "https://127.0.0.1:8443/api" > SDC_USER = "SDC" > SDC_PASSWD = "SDC" |
Step 11-1. Restart MockServer container and reset it
Code Block |
---|
ubuntu@onap-robot:~/mockserverclient$ sudo docker restart mockserver
ubuntu@onap-robot:~/mockserverclient$ curl -v -X PUT "http://localhost:1080/reset"
|
Step 11-2. Validate Change msb -ip and sdnc - ip and port in /etc/mso/config.d/topology.properties are correct oam ips to correct ip and port in SO container testlab_mso_1. Everytime testlab_mso_1 (TODO: if this is correct, remove this step)
Step 12. Configure MockServer to simulate SDN controller and VNFM driver
...
title | Mock server script to simulate SDN controllers and huawei VNFM driver |
---|---|
linenumbers | true |
collapse | true |
...
container restarts, this file needs to be corrected like this.
Code Block |
---|
root@mso:/etc/mso/config.d# diff topology.properties topology.properties.orig
19,22c19,22
< msb-ip=10.0.14.1
< msb-port=80
< sdnc-ip=10.0.7.1
< sdnc-port=8282
---
> msb-ip=127.0.0.1
> msb-port=8080
> sdnc-ip=172.30.3.38
> sdnc-port=8282
|
Step 12. Configure MockServer to simulate SDN controller and VNFM driver
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "statusCodemethod": 200"POST", "headerspath": {"/controller/v2/tokens" }, "content-typehttpResponse": ["application/json"] { }, "bodystatusCode": 200, "headers": { "content-type": ["application/json"] }, "body": { "not": false, "type": "JSON", "json": "{\"errcode\":\"0\",\"errmsg\":\"get token successfully.\",\"data\":{\"expiredDate\":\"2018-11-10 10:03:33\",\"token_id\":\"7F06BFDDAC33A989:77DAD6058B1BB81EF1A557745E4D9C78399B31C4DB509704ED8A7DF05A362A59\"}}" } } }' curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "POST", "path": "/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/vpn-services" }, "httpResponse": { "statusCode": 201 }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "PUT", "path": "/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/huawei-ac-net-l3vpn-svc-vfi:vrf-attributes" }, "httpResponse": { "statusCode": 204 }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "POST", "path": "/restconf/data/huawei-ac-net-l3vpn-svc:l3vpn-svc-cfg/sites" }, "httpResponse": { "statusCode": 201 }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' # ZTE DCI curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "POST", "path": "/v2.0/l3-dci-connects" }, "httpResponse": { "statusCode": 201 }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' # huaweivnfmdriver curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "POST", "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/vnfs" }, "httpResponse": { "statusCode": 200, "headers": { "content-type": ["application/json"] }, "body": { "not": false, "type": "JSON", "json": "{\"vnfInstanceId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9_post\"}" } }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' # huaweivnfmdriver curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "GET", "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post", "queryStringParameters": { "responseId": ["0"] } }, "httpResponse": { "statusCode": 200, "headers": { "content-type": ["application/json"] }, "body": { "not": false, "type": "JSON", "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"50\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"0\"}}" } }, "times" : { "remainingTimes" : 20, "unlimited" : false }, "timeToLive" : { "unlimited" : true } }' # huaweivnfmdriver curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "GET", "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post", "queryStringParameters": { "responseId": ["0"] } }, "httpResponse": { "statusCode": 200, "headers": { "content-type": ["application/json"] }, "body": { "not": false, "type": "JSON", "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"100\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"0\"}}" } }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "GET", "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post", "queryStringParameters": { "responseId": ["50"] } }, "httpResponse": { "statusCode": 200, "headers": { "content-type": ["application/json"] }, "body": { "not": false, "type": "JSON", "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"100\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"50\"}}" } }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' curl -v -X PUT "http://localhost:1080/expectation" -d '{ "httpRequest": { "method": "GET", "path": "/api/huaweivnfmdriver/v1/a0400010-11d7-4875-b4ae-5f42ed5d3a85/jobs/fa3dca847b054f4eb9d3bc8bb9e5eec9_post", "queryStringParameters": { "responseId": ["2"] } }, "httpResponse": { "statusCode": 200, "headers": { "content-type": ["application/json"] }, "body": { "not": false, "type": "JSON", "json": "{\"jobId\":\"fa3dca847b054f4eb9d3bc8bb9e5eec9\",\"responsedescriptor\":{\"progress\":\"100\",\"status\":\"processing\",\"errorCode\":null,\"responseId\":\"2\"}}" } }, "times" : { "remainingTimes" : 2, "unlimited" : true }, "timeToLive" : { "unlimited" : true } }' |
...
Step 13. Distribute VoLTE service from SDCStep 14. Onboard VNFs, EPC_NS, IMS_NS, EPC Service, IMS Service in order from . After distribution, use distribution monitor to make AAI, SO, SDNC all received the VoLTE service model distribution. If SDNC did not receive the model, restart sdnc_ueblistener_container from SDNC VM.
Step 14. Onboard VNFs, EPC_NS, IMS_NS, EPC Service, IMS Service in order from UUI (why EPC_NS before EPC Service)?
...
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
curl -v -X POST "http://10.0.14.1:80/api/nslcm/v1/ns/a0400010-11d7-4875-b4ae-5f42ed5d3a85/vnfs/fa3dca847b054f4eb9d3bc8bb9e5eec9/Notify" -d '{ "status": "Building", "vnfInstanceId": "fa3dca847b054f4eb9d3bc8bb9e5eec9", "operation": "Instantiate", "affectedVnfc": [] }' sleep 1 curl -v -X POST "http://10.0.14.1:80/api/nslcm/v1/ns/a0400010-11d7-4875-b4ae-5f42ed5d3a85/vnfs/fa3dca847b054f4eb9d3bc8bb9e5eec9/Notify" -d '{ "status":"Building","vnfInstanceId":"fa3dca847b054f4eb9d3bc8bb9e5eec9","operation":"Instantiate","affectedVnfc":[{"vnfcInstanceId":"5376027132be4ba184ad55257a031a60","changeType":"added","vimid":"core-dc_RegionOne","vmid":"5376027132be4ba184ad55257a031a60","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_OMU_1","vduid":"5376027132be4ba184ad55257a031a60"},{"vnfcInstanceId":"a40772541d5d405a85cce0013cf2afbd","changeType":"added","vimid":"core-dc_RegionOne","vmid":"a40772541d5d405a85cce0013cf2afbd","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_OMU_0","vduid":"a40772541d5d405a85cce0013cf2afbd"},{"vnfcInstanceId":"9b5080d645684ba0b16a8eb38d12d136","changeType":"added","vimid":"core-dc_RegionOne","vmid":"9b5080d645684ba0b16a8eb38d12d136","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SPU_C_0067","vduid":"9b5080d645684ba0b16a8eb38d12d136"},{"vnfcInstanceId":"c91a54f15e654fde97895efe21b1b032","changeType":"added","vimid":"core-dc_RegionOne","vmid":"c91a54f15e654fde97895efe21b1b032","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SPU_C_0066","vduid":"c91a54f15e654fde97895efe21b1b032"},{"vnfcInstanceId":"c800312379d04243a64d361142fe366d","changeType":"added","vimid":"core-dc_RegionOne","vmid":"c800312379d04243a64d361142fe366d","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_IPU_A_0065","vduid":"c800312379d04243a64d361142fe366d"},{"vnfcInstanceId":"e52ee6658768476084c7a97af26e39cf","changeType":"added","vimid":"core-dc_RegionOne","vmid":"e52ee6658768476084c7a97af26e39cf","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_IPU_A_0064","vduid":"e52ee6658768476084c7a97af26e39cf"},{"vnfcInstanceId":"30adc3ab8698479c9acd9e532c9f0d5a","changeType":"added","vimid":"core-dc_RegionOne","vmid":"30adc3ab8698479c9acd9e532c9f0d5a","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0068","vduid":"30adc3ab8698479c9acd9e532c9f0d5a"},{"vnfcInstanceId":"5622630bfe3f41a2bac4f69e4baec0a3","changeType":"added","vimid":"core-dc_RegionOne","vmid":"5622630bfe3f41a2bac4f69e4baec0a3","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0069","vduid":"5622630bfe3f41a2bac4f69e4baec0a3"},{"vnfcInstanceId":"a82f9c5a22e748139bd0569e52048cb9","changeType":"added","vimid":"core-dc_RegionOne","vmid":"a82f9c5a22e748139bd0569e52048cb9","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0070","vduid":"a82f9c5a22e748139bd0569e52048cb9"}] }' sleep 1 curl -v -X POST "http://10.0.14.1:80/api/nslcm/v1/ns/a0400010-11d7-4875-b4ae-5f42ed5d3a85/vnfs/fa3dca847b054f4eb9d3bc8bb9e5eec9/Notify" -d '{ "status":"Active","vnfInstanceId":"fa3dca847b054f4eb9d3bc8bb9e5eec9","operation":"Instantiate","affectedVnfc":[{"vnfcInstanceId":"5376027132be4ba184ad55257a031a60","changeType":"added","vimid":"core-dc_RegionOne","vmid":"5376027132be4ba184ad55257a031a60","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_OMU_1","vduid":"5376027132be4ba184ad55257a031a60"},{"vnfcInstanceId":"a40772541d5d405a85cce0013cf2afbd","changeType":"added","vimid":"core-dc_RegionOne","vmid":"a40772541d5d405a85cce0013cf2afbd","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_OMU_0","vduid":"a40772541d5d405a85cce0013cf2afbd"},{"vnfcInstanceId":"9b5080d645684ba0b16a8eb38d12d136","changeType":"added","vimid":"core-dc_RegionOne","vmid":"9b5080d645684ba0b16a8eb38d12d136","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SPU_C_0067","vduid":"9b5080d645684ba0b16a8eb38d12d136"},{"vnfcInstanceId":"c91a54f15e654fde97895efe21b1b032","changeType":"added","vimid":"core-dc_RegionOne","vmid":"c91a54f15e654fde97895efe21b1b032","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SPU_C_0066","vduid":"c91a54f15e654fde97895efe21b1b032"},{"vnfcInstanceId":"c800312379d04243a64d361142fe366d","changeType":"added","vimid":"core-dc_RegionOne","vmid":"c800312379d04243a64d361142fe366d","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_IPU_A_0065","vduid":"c800312379d04243a64d361142fe366d"},{"vnfcInstanceId":"e52ee6658768476084c7a97af26e39cf","changeType":"added","vimid":"core-dc_RegionOne","vmid":"e52ee6658768476084c7a97af26e39cf","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_IPU_A_0064","vduid":"e52ee6658768476084c7a97af26e39cf"},{"vnfcInstanceId":"30adc3ab8698479c9acd9e532c9f0d5a","changeType":"added","vimid":"core-dc_RegionOne","vmid":"30adc3ab8698479c9acd9e532c9f0d5a","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0068","vduid":"30adc3ab8698479c9acd9e532c9f0d5a"},{"vnfcInstanceId":"5622630bfe3f41a2bac4f69e4baec0a3","changeType":"added","vimid":"core-dc_RegionOne","vmid":"5622630bfe3f41a2bac4f69e4baec0a3","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0069","vduid":"5622630bfe3f41a2bac4f69e4baec0a3"},{"vnfcInstanceId":"8a6c8c808f6549be824375c33639a7bb","changeType":"added","vimid":"core-dc_RegionOne","vmid":"8a6c8c808f6549be824375c33639a7bb","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0071","vduid":"8a6c8c808f6549be824375c33639a7bb"},{"vnfcInstanceId":"a82f9c5a22e748139bd0569e52048cb9","changeType":"added","vimid":"core-dc_RegionOne","vmid":"a82f9c5a22e748139bd0569e52048cb9","vmname":"vnfab40e6ba-df1f-458c-94c5-a45_SDU_A_0070","vduid":"a82f9c5a22e748139bd0569e52048cb9"}] }' |
Step 17. Verify the requests received by MockServer. e.g.:
Code Block |
---|
ubuntu@onap-robot:~/mockserverclient$ curl -X PUT "http://localhost:1080/retrieve?type=REQUESTS&format=JSON"
|
or a particular request by url, e.g.:
Code Block |
---|
ubuntu@onap-robot:~/mockserverclient$ curl -X PUT "http://localhost:1080/retrieve?type=REQUESTS&format=JSON" -d '{
"path": "/controller/v2/tokens"
}'
|
Step 18. Verify service instance and network entries are created in A&AI
Step 19. Record resource usage of major containers with docker stats command
Code Block |
---|
ubuntu@onap-so:~$ sudo docker stats testlab_mso_1 testlab_mariadb_1 --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}" --no-stream
NAME CPU % MEM USAGE / LIMIT
testlab_mso_1 65.26% 3.21GiB / 7.796GiB
testlab_mariadb_1 100.44% 3.323GiB / 7.796GiB |