SDNC Component
Credentials
SDNC API URL: HEAT http://sdnc:8282/apidoc/explorer/index.html, OOM: http://cluster_node_ip:30267/apidoc/explorer/index.html
credential: admin/Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U
DGBuilder URL: http://{{sdnc_ip}}:3000/# with dguser/test123
MySQL:
ubuntu@onap-sdnc:~$ sudo docker exec -it sdnc_db_container bash
bash-4.2# mysql -u sdnctl -p sdnctl
Enter password: gamma
Overlay DG: GENERIC-RESOURCE-API(Module), dci-connects-network-topology-operation-activate(RPC)
Underlay DG: GENERIC-RESOURCE-API(Module), network-topology-operation-create
Log file for directed graph:
ubuntu@onap-sdnc:~$ sudo docker exec -it sdnc_controller_container bash
root@d135452786ee:cd /var/log/onap/sdnc
root@d135452786ee:tail -f karaf.log
Log file for ueb_listener:
root@ac761f8e8c33:/# cd /opt/app/ueb-listener/logs/
Disable Replica
root@sb00-rancher:~/oom# kubectl -n onap edit StatefulSet/dev-sdnc-sdnc
spec:
podManagementPolicy: Parallel
replicas: 1
...
- name: SDNC_REPLICAS
value: "1"
Steps to check DG
http://{{cluster_ip}}:30203/# with dguser/test123
DB builder port
root@sb00-nfs:/opt/http_test_server/http_test_server/htdocs# kubectl get svc| grep 3000
appc-dgbuilder NodePort 10.43.133.199 <none> 3000:30228/TCP 19d
cds-ui NodePort 10.43.177.249 <none> 3000:30497/TCP 23d
sdnc-dgbuilder NodePort 10.43.14.68 <none> 3000:30203/TCP 23d
Open menu from GUI top right corner, and choose Import→Clipboard
Copy DG json file from gerrit sdnc/oam/platform-logic/generic-resource-api/src/main/json, e.g. GENERIC-RESOURCE-API_dci-connects-network-topology-operation-activate.json
In the DG graph, click on the left of DGSTART node to see more function on the DG, like validate XML, download XML, etc
You can download XML and search for error message you see in sdnc_controller_container karaf log
DG Tutorial
Tutorial: vCPE Example : Using SLI-API for Prototyping
Tutorial: VoLTE Example: Adding REST Node
There is some update needed for the DG in the above tutorial for Dublin
namespace change
FileRecorder plugin path change
RestapiCallNode path change
Here is the update DG for VoLTE Adding REST Node example
VoLTE Adding Rest Call Node DG
[{"id":"1c91b4f1.e45473","type":"service-logic","name":"VOLTE-API 0.0.2-DEMO","module":"VOLTE-API","version":"0.0.2-DEMO","comments":"","xml":"<service-logic xmlns='http://www.onap.org/sdnc/svclogic' xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xsi:schemaLocation='http://www.openecomp.org/sdnc/svclogic ./svclogic.xsd' module='VOLTE-API' version='0.0.2-DEMO'>","outputs":1,"x":317.1666564941406,"y":106.16667175292969,"z":"30ac5fe5.ab4d2","wires":[["a28ec6bd.3832d8"]]},{"id":"40983a09.90a524","type":"dgstart","name":"DGSTART","outputs":1,"x":111,"y":81,"z":"30ac5fe5.ab4d2","wires":[["1c91b4f1.e45473"]]},{"id":"a28ec6bd.3832d8","type":"method","name":"method volte-wan-activate","xml":"<method rpc='volte-wan-activate' mode='sync'>\n","comments":"","outputs":1,"x":181.16668701171875,"y":170.16665649414062,"z":"30ac5fe5.ab4d2","wires":[["e53e6cd.afc3f1"]]},{"id":"e53e6cd.afc3f1","type":"block","name":"block : atomic","xml":"<block atomic=\"true\">","atomic":"true","outputs":1,"x":389,"y":258,"z":"30ac5fe5.ab4d2","wires":[["cdeda8e3.1218f","9794fca5.9de488","cd5f5503.b9f128","19f372e1.31b345","8ff8c47.cd19b38","edd83200.432db8"]]},{"id":"cdeda8e3.1218f","type":"set","name":"set: order-status = Active","xml":"<set>\n\t<parameter name=\"service-data.oper-status.order-status\" value=\"Active\"/>","comments":"","x":597,"y":603,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"19f372e1.31b345","type":"returnSuccess","name":"return success","xml":"<return status='success'>\n\t<parameter name=\"error-code\" value=\"200\" />\n\t<parameter name='error-message' value=\"`'service-data.dcz-wanip=' + $service-data.dcz-wanip`\"/>","comments":"","x":569,"y":790,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"9794fca5.9de488","type":"set","name":"set: service-data = input","xml":"<set>\n\t<parameter name=\"service-data.\" value=\"volte-wan-activate.\" />","comments":"","x":596.8888854980469,"y":704.388916015625,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"cd5f5503.b9f128","type":"set","name":"Set final indicator to Y","xml":"<set>\n<parameter name=\"ack-final\" value=\"Y\"/>","comments":"","x":591.2063369750977,"y":748.1031608581543,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"8ff8c47.cd19b38","type":"record","name":"record","xml":"<record plugin=\"org.onap.ccsdk.sli.core.sli.recording.FileRecorder\">\n<parameter name=\"file\" value=\"/opt/opendaylight/current/data/log/svclogic.log\"/>\n<parameter name=\"field1\" value=\"__TIMESTAMP__\"/>\n<parameter name=\"field2\" value=\"volte-wan-activate\"/>\n<parameter name=\"field3\" value=\"`$volte-wan-activate.dca-wanip`\"/>\n<parameter name=\"field4\" value=\"`$volte-wan-activate.dcz-wanip`\"/>\n<parameter name=\"field5\" value=\"`$volte-wan-activate.route_target`\"/>\n<parameter name=\"field6\" value=\"`$volte-wan-activate.route_distinguisher`\"/>","comments":"","outputs":1,"x":559,"y":301,"z":"30ac5fe5.ab4d2","wires":[[]]},{"id":"c2486391.d9417","type":"execute","name":"excute REST DC-Connect-Create-A","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n\t<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/l3-dci-connect.json'`\"/>\n\t<!-- \n\t<parameter name=\"restapiUrl\" value=\"`$prop.controller_A_RestApi.url+ '/v2.0/l3-dci-connects'`/>\n\t-->\n\t<parameter name=\"restapiUrl\" value=\"`$prop.controller_A_RestApi.url + '/l3-dci-connect.php'`\" />\n\t<parameter name=\"restapiUser\" value=\"`$prop.controller_A_RestApi.user`\" />\n\t<parameter name=\"restapiPassword\" value=\"`$prop.controller_A_RestApi.password`\"/>\n\t<parameter name=\"format\" value=\"xml\" />\n\t<parameter name=\"httpMethod\" value=\"post\" />\n\t<parameter name=\"responsePrefix\" value=\"restapi-result\" />\n\t\n\t","comments":"","outputs":1,"x":998,"y":727,"z":"30ac5fe5.ab4d2","wires":[[]]},{"id":"852c391a.a7d2b","type":"execute","name":"excute REST DC-Connect-Create-B","xml":"<execute plugin='org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode' method='sendRequest' >\n\t<parameter name=\"templateFileName\" value=\"`$prop.restapi.templateDir + '/l3-dci-connect.json'`\"/>\n\t<!-- \n\t<parameter name=\"restapiUrl\" value=\"`$prop.controller_A_RestApi.url+ '/v2.0/l3-dci-connects'`/>\n\t-->\n\t<parameter name=\"restapiUrl\" value=\"`$prop.controller_A_RestApi.url + '/l3-dci-connect.php'`\" />\n\t<parameter name=\"restapiUser\" value=\"`$prop.controller_B_RestApi.user`\"/>\n\t<parameter name=\"restapiPassword\" value=\"`$prop.controller_B_RestApi.password`\"/>\n\t<parameter name=\"format\" value=\"xml\" />\n\t<parameter name=\"httpMethod\" value=\"post\" />\n\t<parameter name=\"responsePrefix\" value=\"restapi-result\" />\n\t\n\t","comments":"","outputs":1,"x":998,"y":830,"z":"30ac5fe5.ab4d2","wires":[[]]},{"id":"edd83200.432db8","type":"block","name":"block","xml":"<block>\n","atomic":"false","comments":"","outputs":1,"x":560,"y":370,"z":"30ac5fe5.ab4d2","wires":[["f3cc8b33.0516c","6a3b097e.b896d8","a67a46fc.946838","c2486391.d9417","fbd78797.a6d598","852c391a.a7d2b","de93e82.c1dca18"]]},{"id":"f3cc8b33.0516c","type":"set","name":"set A controller data (http emulator)","xml":"<set>\n<parameter name='prop.controller_A_RestApi.url' value='http://10.0.7.1:9000' />\n<!-- 8181 when doing localhost -->\n<parameter name=\"prop.restapi.templateDir\" value=\"/opt/onap/sdnc/data\"/>\n<parameter name=\"prop.controller_A_RestApi.user\" value=\"admin\"/>\n<parameter name=\"prop.controller_A_RestApi.password\" value=\"Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U\"/>\n\n","comments":"","x":994,"y":455,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"6a3b097e.b896d8","type":"set","name":"set WAN data (l3_vni=5001)","xml":"<set>\n<parameter name='device.wan.l3_vni' value='5001' />\n","comments":"","x":976,"y":556,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"a67a46fc.946838","type":"set","name":"set DC A network data","xml":"<set>\n<!-- example uses device. \n real adapter might use device.l3_connection. or something else -->\n<!-- ARRAY parameters could be comma separated lists or leaf lists depending on adaptor -->\n<parameter name='device.evpn_irts' value='1:5000'/>\n<parameter name='device.evpn_erts' value='1:5000'/>\n<parameter name='device.local_subnet' value='\\\"8a41319d-87cf-4cd6-8957-00000000000A\\\"'/>\n<parameter name='device.id' value='CDD702C3-7719-4FE6-A5AD-3A9C9E265309' />\n<parameter name='device.name' value='PODX-routerY' />\n<parameter name='device.description' value='VPC A connect VPC B' />\n<parameter name='device.router_id' value='CBB702C3-6789-1234-A5AD-00000000000A' />\n","comments":"","x":958,"y":675,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"fbd78797.a6d598","type":"set","name":"set DC B network data","xml":"<set>\n<!-- example uses device. \n real adapter might use device.l3_connection. or something else -->\n<!-- ARRAY parameters could be comma separated lists or leaf lists depending on adaptor -->\n<parameter name='device.evpn_irts' value='1:5001'/>\n<parameter name='device.evpn_erts' value='1:5001'/>\n<parameter name='device.local_subnet' value='\\\"8a41319d-87cf-4cd6-8957-00000000000B\\\"'/>\n<parameter name='device.id' value='CDD702C3-7719-4FE6-A5AD-3A9C9E265309' />\n<parameter name='device.name' value='PODW-routerZ' />\n<parameter name='device.description' value='VPC B connect VPC A' />\n<parameter name='device.router_id' value='CBB702C3-6789-1234-A5AD-00000000000B' />\n","comments":"","x":955,"y":782,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"d5a70b78.3a1","type":"comment","name":"Test block to describe logic - template uses \"device.\" for parameters","info":"","comments":"","x":1054,"y":378,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"a5a8ce82.7fa0d","type":"comment","name":"DC Set Nodes should map from Input parameters","info":"","comments":"","x":1043,"y":618,"z":"30ac5fe5.ab4d2","wires":[]},{"id":"de93e82.c1dca18","type":"set","name":"set B controller data (http emulator)","xml":"<set>\n<parameter name='prop.controller_B_RestApi.url' value='http://10.0.7.1:9000' />\n<!-- 8181 when doing localhost -->\n<parameter name=\"prop.restapi.templateDir\" value=\"/opt/onap/sdnc/data\"/>\n<parameter name=\"prop.controller_B_RestApi.user\" value=\"admin\"/>\n<parameter name=\"prop.controller_B_RestApi.password\" value=\"Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U\"/>\n\n","comments":"","x":998,"y":503,"z":"30ac5fe5.ab4d2","wires":[]}]
DB operation
mysql> show tables;
mysql> show columns from SERVICE_MODEL;
mysql> select name, service_uuid, invariant_uuid from SERVICE_MODEL;
+------------------------+--------------------------------------+--------------------------------------+
| name | service_uuid | invariant_uuid |
+------------------------+--------------------------------------+--------------------------------------+
| NULL | 0 | NULL |
| vBNG_0202 | 00e50cbd-ef0f-4b28-821e-f2b583752dd3 | dbf9288d-18ef-4d28-82cb-29373028f367 |
| BK-012317-UUID-Service | 0a92fd9c-baab-4c03-b4e2-827e2cb9bcc7 | 083b57cd-4b76-4924-a64c-610445528063 |
| vEPC | 2c02b479-905f-4b6d-bd03-a2c8a8cdfae4 | 6dd6969c-b75c-4146-8a96-0cb9c0af19a7 |
| VoLTE e2e Service | 96a01eb8-1538-40a6-a9ab-0f6bf8e0d877 | e9b5654e-6627-4590-9a54-a39b4d85955e |
| vIMS | de3dc33a-799a-48fe-aef2-9a7e93631a4c | 970177ab-40d9-4ab7-9a9b-aa2d08c9ca91 |
+------------------------+--------------------------------------+--------------------------------------+
VF Model
mysql> select * from VF_MODEL where nf_role is not null;
+--------------------------------------+------------+--------------------------------------+--------------------------------------+---------+-------------------------+-------------------------------------------------+------------------------+----------------------+--------------------------------------+---------------------+--------------------+-----------------------+-------------------------+----------------+
| customization_uuid | model_yaml | invariant_uuid | uuid | version | name | naming_policy | ecomp_generated_naming | avail_zone_max_count | nf_function | nf_code | nf_type | nf_role | vendor | vendor_version |
+--------------------------------------+------------+--------------------------------------+--------------------------------------+---------+-------------------------+-------------------------------------------------+------------------------+----------------------+--------------------------------------+---------------------+--------------------+-----------------------+-------------------------+----------------+
| 232972fe-4ee2-4056-b23a-73c5052eb791 | null | af94e0b5-454c-4fd8-b62b-ef27632afd22 | 71b87384-8e60-4d0b-9ed0-757245996fc3 | 1.0 | VID-PCRF-05-15-17 | NULL | NULL | 1 | function_2 | code_1 | Type_1 | role_1 | null | null |
| 53ed3b2b-4225-45da-bf21-ebb5abdc9000 | null | 15b244fa-a9e2-4f68-a978-05184d78b911 | 028c08dd-56c6-42e3-ae6d-84f98ca09f37 | 2.0 | 06e7a3b5-f81c-4f99-b33d | SDNC_Policy.Config_MS_ONAP_VFW_NAMING_TIMESTAMP | Y | 1 | ONAP-TRAFFIC-GEN | vpg | TRAFFIC-GEN | vPG | 8f64125f-125a-40b4-b882 | 1.0 |
Set karaf log level
root@dev-appc-appc-0:/opt/opendaylight/current/data/log# /opt/opendaylight/bin/client
Logging in as karaf
________ ________ .__ .__ .__ __
\_____ \ ______ ____ ____ \______ \ _____ ___.__.| | |__| ____ | |___/ |_
/ | \\____ \_/ __ \ / \ | | \\__ \< | || | | |/ ___\| | \ __\
/ | \ |_> > ___/| | \| ` \/ __ \\___ || |_| / /_/ > Y \ |
\_______ / __/ \___ >___| /_______ (____ / ____||____/__\___ /|___| /__|
\/|__| \/ \/ \/ \/\/ /_____/ \/
Hit '<tab>' for a list of available commands
and '[cmd] --help' for help on a specific command.
Hit '<ctrl-d>' or type 'system:shutdown' or 'logout' to shutdown OpenDaylight.
opendaylight-user@root>log
opendaylight-user@root>get
Logger | Level
------------------------------------+------
ROOT | INFO
org.apache.aries.spifly | WARN
org.apache.karaf.jaas.modules.audit | INFO
opendaylight-user@root>set DEBUG org.onap
opendaylight-user@root>
List karaf features
List karaf features
bash-4.4# /opt/opendaylight/bin/client
opendaylight-user@root> feature:list
Name │ Version │ Required │ State │ Repository │ Description
────────────────────────────────────────────────────────────────┼──────────────────┼──────────┼─────────────┼─────────────────────────────────────────────────────────────────┼───────────────────────────────────────────────────
odl-lispflowmapping-mappingservice-shell │ 1.8.1 │ │ Uninstalled │ odl-lispflowmapping-mappingservice-shell │ ODL :: lispflowmapping :: odl-lispflowmapping-map
Preconfiguration for VoLTE SDNC: ONAP VoLTE SDNC Integration Test.docx