...
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 7. Change huaweivnfmdriver MSB service url and point to MockServer. Assume you are running from MutliService VM
...
, update /opt/msb_vm_init.sh to replace huaweivnfmdriver host ip and port with MockServer ip and port, and rerun the script.
Code Block |
---|
Deprecated (can't delete or query huaweivnfmdriver)
>curl -X DELETE http://127.0.0.1/api/microservices/v1/services/huaweivnfmdriver/v1
>curl -X GET http://127.0.0.1/api/microservices/v1/services/huaweivnfmdriver/v1
>curl -X POST -H "Content-Type:application/json" -d '{"serviceName":"huaweivnfmdriver","version":"v1","url":"/api/huaweivnfmdriver/v1","protocol":"REST","lb_policy":"round-robin","nodes":[{"ip":"10.0.10.1","port":"1080"}]}' http://127.0.0.1/api/microservices/v1/services
|
...
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-2. Validate msb-ip and sdnc-ip in /etc/mso/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. Change msb 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": {
"method": "POST",
"path": "/controller/v2/tokens"
},
"httpResponse": {
"statusCode": 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 SDC. 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 |