diff options
-rw-r--r-- | docs/usecases/media/pnf-simulator-demo-cba.zip (renamed from docs/usecases/pnf-simulator-demo-cba.zip) | bin | 31920 -> 31920 bytes | |||
-rw-r--r-- | docs/usecases/media/pnf-simulator.postman_collection.json | 894 | ||||
-rw-r--r-- | docs/usecases/media/save-response-postman.png | bin | 0 -> 154196 bytes | |||
-rw-r--r-- | docs/usecases/pnf-simulator.rst | 283 |
4 files changed, 1169 insertions, 8 deletions
diff --git a/docs/usecases/pnf-simulator-demo-cba.zip b/docs/usecases/media/pnf-simulator-demo-cba.zip Binary files differindex 08ee91b76..08ee91b76 100644 --- a/docs/usecases/pnf-simulator-demo-cba.zip +++ b/docs/usecases/media/pnf-simulator-demo-cba.zip diff --git a/docs/usecases/media/pnf-simulator.postman_collection.json b/docs/usecases/media/pnf-simulator.postman_collection.json new file mode 100644 index 000000000..5a96232d4 --- /dev/null +++ b/docs/usecases/media/pnf-simulator.postman_collection.json @@ -0,0 +1,894 @@ +{ + "info": { + "_postman_id": "295cc7b7-a544-44f5-8045-54effcd41108", + "name": "CDS PNF Simulator Use Case", + "description": "This collection contains all API calls to do the \"PNF Simulator Day-N config-assign and config-deploy use case\" in CDS. ", + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + }, + "item": [ + { + "name": "Bootstrap", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "", + "type": "text", + "value": "", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\"loadModelType\" : true,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : true\r\n}", + "options": { + "raw": {} + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model/bootstrap", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "blueprint-model", + "bootstrap" + ] + } + }, + "response": [ + { + "name": "CDS Bootstrap", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "", + "value": "", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\"loadModelType\" : false,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}", + "options": { + "raw": {} + } + }, + "url": { + "raw": "http://localhost:8081/api/v1/blueprint-model/bootstrap", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8081", + "path": [ + "api", + "v1", + "blueprint-model", + "bootstrap" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "X-ONAP-RequestID", + "value": "b73253b6-d2be-4701-bdb2-31fa66b79a01" + }, + { + "key": "X-ONAP-InvocationID", + "value": "b1a59296-fcf2-4435-b8de-9a2e9b9f4077" + }, + { + "key": "X-ONAP-PartnerName", + "value": "cds-controller" + }, + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Content-Length", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "X-XSS-Protection", + "value": "1 ; mode=block" + }, + { + "key": "Referrer-Policy", + "value": "no-referrer" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Get Blueprints", + "protocolProfileBehavior": { + "disableBodyPruning": true + }, + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + } + ] + }, + "method": "GET", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "", + "value": "", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\"loadModelType\" : true,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}", + "options": { + "raw": {} + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "blueprint-model" + ] + } + }, + "response": [ + { + "name": "CDS Bootstrap", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "", + "value": "", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\"loadModelType\" : false,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}", + "options": { + "raw": {} + } + }, + "url": { + "raw": "http://localhost:8081/api/v1/blueprint-model/bootstrap", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8081", + "path": [ + "api", + "v1", + "blueprint-model", + "bootstrap" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "X-ONAP-RequestID", + "value": "b73253b6-d2be-4701-bdb2-31fa66b79a01" + }, + { + "key": "X-ONAP-InvocationID", + "value": "b1a59296-fcf2-4435-b8de-9a2e9b9f4077" + }, + { + "key": "X-ONAP-PartnerName", + "value": "cds-controller" + }, + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Content-Length", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "X-XSS-Protection", + "value": "1 ; mode=block" + }, + { + "key": "Referrer-Policy", + "value": "no-referrer" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Data Dictionary", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + } + ] + }, + "method": "POST", + "header": [], + "body": { + "mode": "raw", + "raw": "{\n\t\t\"name\": \"netconf-password\",\n\t\t\"tags\": \"netconf-password\",\n\t\t\"data_type\": \"string\",\n\t\t\"description\": \"netconf-password\",\n\t\t\"entry_schema\": \"string\",\n\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"definition\": {\n\t\t\t\"tags\": \"netconf-password\",\n\t\t\t\"name\": \"netconf-password\",\n\t\t\t\"property\": {\n\t\t\t\t\"description\": \"netconf-password string attribute\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\t\"sources\": {\n\t\t\t\t\"input\": {\n\t\t\t\t\t\"type\": \"source-input\",\n\t\t\t\t\t\"properties\": {}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t\"name\": \"netconf-username\",\n\t\t\"tags\": \"netconf-username\",\n\t\t\"data_type\": \"string\",\n\t\t\"description\": \"netconf-username\",\n\t\t\"entry_schema\": \"string\",\n\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"definition\": {\n\t\t\t\"tags\": \"netconf-username\",\n\t\t\t\"name\": \"netconf-username\",\n\t\t\t\"property\": {\n\t\t\t\t\"description\": \"netconf-username string attribute\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\t\"sources\": {\n\t\t\t\t\"input\": {\n\t\t\t\t\t\"type\": \"source-input\",\n\t\t\t\t\t\"properties\": {}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t\"name\": \"netconf-server-port\",\n\t\t\"tags\": \"netconf-server-port\",\n\t\t\"data_type\": \"string\",\n\t\t\"description\": \"netconf-server-port\",\n\t\t\"entry_schema\": \"string\",\n\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"definition\": {\n\t\t\t\"tags\": \"netconf-server-port\",\n\t\t\t\"name\": \"netconf-server-port\",\n\t\t\t\"property\": {\n\t\t\t\t\"description\": \"netconf-server-port string attribute\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\t\"sources\": {\n\t\t\t\t\"input\": {\n\t\t\t\t\t\"type\": \"source-input\",\n\t\t\t\t\t\"properties\": {}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{\n\t\t\"name\": \"pnf-id\",\n\t\t\"tags\": \"pnf-id\",\n\t\t\"data_type\": \"string\",\n\t\t\"description\": \"pnf-id\",\n\t\t\"entry_schema\": \"string\",\n\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"definition\": {\n\t\t\t\"tags\": \"pnf-id\",\n\t\t\t\"name\": \"pnf-id\",\n\t\t\t\"property\": {\n\t\t\t\t\"description\": \"pnf-id string attribute\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\t\"sources\": {\n\t\t\t\t\"input\": {\n\t\t\t\t\t\"type\": \"source-input\",\n\t\t\t\t\t\"properties\": {}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\t{\n\n\t\t\"name\": \"pnf-ipv4-address\",\n\t\t\"tags\": \"pnf-ipv4-address\",\n\t\t\"data_type\": \"string\",\n\t\t\"description\": \"pnf-ipv4-address\",\n\t\t\"entry_schema\": \"string\",\n\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"definition\": {\n\t\t\t\"tags\": \"pnf-ipv4-address\",\n\t\t\t\"name\": \"pnf-ipv4-address\",\n\t\t\t\"property\": {\n\t\t\t\t\"description\": \"pnf-ipv4-address string attribute\",\n\t\t\t\t\"type\": \"string\"\n\t\t\t},\n\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\t\"sources\": {\n\t\t\t\t\"input\": {\n\t\t\t\t\t\"type\": \"source-input\",\n\t\t\t\t\t\"properties\": {}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t},\n\t{\n\t\t\"name\": \"stream-count\",\n\t\t\"tags\": \"stream-count\",\n\t\t\"data_type\": \"string\",\n\t\t\"description\": \"stream-count\",\n\t\t\"entry_schema\": \"string\",\n\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"updatedBy\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\"definition\": {\n\t\t\t\"tags\": \"stream-count\",\n\t\t\t\"name\": \"stream-count\",\n\t\t\t\"property\": {\n\t\t\t\t\"description\": \"stream-count string attribute\",\n\t\t\t\t\"type\": \"integer\"\n\t\t\t},\n\t\t\t\"updated-by\": \"Aarna service <vmuthukrishnan@aarnanetworks.com>\",\n\t\t\t\"sources\": {\n\t\t\t\t\"input\": {\n\t\t\t\t\t\"type\": \"source-default\",\n\t\t\t\t\t\"properties\": {}\n\t\t\t\t},\n\t\t\t\t\"default\": {\n\n\t\t\t\t\t\"type\": \"source-default\",\n\n\t\t\t\t\t\"properties\": {}\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}", + "options": { + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/dictionary", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "dictionary" + ] + } + }, + "response": [] + }, + { + "name": "Enrich Blueprint", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "showPassword", + "value": false, + "type": "boolean" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Accept", + "value": "application/json", + "type": "text", + "disabled": true + }, + { + "key": "Accept-Encoding", + "value": "gzip,deflate", + "type": "text", + "disabled": true + }, + { + "key": "Referer", + "value": "http://84.39.39.116:30497/blueprint", + "type": "text", + "disabled": true + }, + { + "key": "Origin", + "value": "http://84.39.39.116:30497", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "/home/jakob/CDS_Use_Cases/PNF-DEMO-ENRICHED_WORKING/pnf-demo.zip" + } + ], + "options": { + "formdata": {} + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model/enrich", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "blueprint-model", + "enrich" + ] + } + }, + "response": [] + }, + { + "name": "Save Blueprint", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "", + "type": "text", + "value": "", + "disabled": true + } + ], + "body": { + "mode": "formdata", + "formdata": [ + { + "key": "file", + "type": "file", + "src": "/home/jakob/CDS_Use_Cases/PNF-DEMO-ENRICHED_WORKING/pnf-demo.zip" + } + ], + "options": { + "raw": {} + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/blueprint-model", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "blueprint-model" + ] + } + }, + "response": [ + { + "name": "CDS Bootstrap", + "originalRequest": { + "method": "POST", + "header": [ + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "", + "value": "", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\r\n\"loadModelType\" : false,\r\n\"loadResourceDictionary\" : true,\r\n\"loadCBA\" : false\r\n}", + "options": { + "raw": {} + } + }, + "url": { + "raw": "http://localhost:8081/api/v1/blueprint-model/bootstrap", + "protocol": "http", + "host": [ + "localhost" + ], + "port": "8081", + "path": [ + "api", + "v1", + "blueprint-model", + "bootstrap" + ] + } + }, + "status": "OK", + "code": 200, + "_postman_previewlanguage": "json", + "header": [ + { + "key": "X-ONAP-RequestID", + "value": "b73253b6-d2be-4701-bdb2-31fa66b79a01" + }, + { + "key": "X-ONAP-InvocationID", + "value": "b1a59296-fcf2-4435-b8de-9a2e9b9f4077" + }, + { + "key": "X-ONAP-PartnerName", + "value": "cds-controller" + }, + { + "key": "Vary", + "value": "Origin" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Method" + }, + { + "key": "Vary", + "value": "Access-Control-Request-Headers" + }, + { + "key": "Content-Type", + "value": "application/json" + }, + { + "key": "Content-Length", + "value": "0" + }, + { + "key": "Cache-Control", + "value": "no-cache, no-store, max-age=0, must-revalidate" + }, + { + "key": "Pragma", + "value": "no-cache" + }, + { + "key": "Expires", + "value": "0" + }, + { + "key": "X-Content-Type-Options", + "value": "nosniff" + }, + { + "key": "X-Frame-Options", + "value": "DENY" + }, + { + "key": "X-XSS-Protection", + "value": "1 ; mode=block" + }, + { + "key": "Referrer-Policy", + "value": "no-referrer" + } + ], + "cookie": [], + "body": "" + } + ] + }, + { + "name": "Create Config Assign Day-1", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "showPassword", + "value": false, + "type": "boolean" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Accept", + "value": "application/json", + "type": "text", + "disabled": true + }, + { + "key": "Accept-Encoding", + "value": "gzip,deflate", + "type": "text", + "disabled": true + }, + { + "key": "Referer", + "value": "http://84.39.39.116:30497/blueprint", + "type": "text", + "disabled": true + }, + { + "key": "Origin", + "value": "http://84.39.39.116:30497", + "type": "text", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"actionIdentifiers\": {\n \"mode\": \"sync\",\n \"blueprintName\": \"pnf_netconf\",\n \"blueprintVersion\": \"1.0.0\",\n \"actionName\": \"config-assign\"\n },\n \"payload\": {\n \"config-assign-request\": {\n \"template-prefix\": [\n \"pnf\", \"netconfrpc\"\n ],\n \"resolution-key\": \"day-1\",\n \"config-assign-properties\": {\n \"pnf-id\": \"abcd\",\n \"pnf-ipv4-address\": \"172.17.0.2\",\n \"netconf-password\": \"netconf\",\n \"netconf-username\": \"netconf\",\n \"netconf-server-port\": \"830\",\n \"stream-count\": 5\n }\n }\n },\n \"commonHeader\": {\n \"subRequestId\": \"143748f9-3cd5-4910-81c9-a4601ff2ea58\",\n \"requestId\": \"e5eb1f1e-3386-435d-b290-d49d8af8db4c\",\n \"originatorId\": \"SDNC_DG\"\n }\n}", + "options": { + "formdata": {}, + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/execution-service/process", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "execution-service", + "process" + ] + } + }, + "response": [] + }, + { + "name": "Create Config Assign Day-2", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "showPassword", + "value": false, + "type": "boolean" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json", + "disabled": true + }, + { + "key": "Accept-Encoding", + "type": "text", + "value": "gzip,deflate", + "disabled": true + }, + { + "key": "Referer", + "type": "text", + "value": "http://84.39.39.116:30497/blueprint", + "disabled": true + }, + { + "key": "Origin", + "type": "text", + "value": "http://84.39.39.116:30497", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\n \"actionIdentifiers\": {\n \"mode\": \"sync\",\n \"blueprintName\": \"pnf_netconf\",\n \"blueprintVersion\": \"1.0.0\",\n \"actionName\": \"config-assign\"\n },\n \"payload\": {\n \"config-assign-request\": {\n \"template-prefix\": [\n \"pnf\", \"netconfrpc\"\n ],\n \"resolution-key\": \"day-2\",\n \"config-assign-properties\": {\n \"pnf-id\": \"abcd\",\n \"pnf-ipv4-address\": \"172.17.0.2\",\n \"netconf-password\": \"netconf\",\n \"netconf-username\": \"netconf\",\n \"netconf-server-port\": \"830\",\n \"stream-count\": 10\n }\n }\n },\n \"commonHeader\": {\n \"subRequestId\": \"143748f9-3cd5-4910-81c9-a4601ff2ea58\",\n \"requestId\": \"e5eb1f1e-3386-435d-b290-d49d8af8db4c\",\n \"originatorId\": \"SDNC_DG\"\n }\n}", + "options": { + "formdata": {}, + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/execution-service/process", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "execution-service", + "process" + ] + } + }, + "response": [] + }, + { + "name": "Config Assign Day-1 Deploy", + "request": { + "auth": { + "type": "basic", + "basic": [ + { + "key": "username", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "password", + "value": "ccsdkapps", + "type": "string" + }, + { + "key": "showPassword", + "value": false, + "type": "boolean" + } + ] + }, + "method": "POST", + "header": [ + { + "key": "Accept", + "type": "text", + "value": "application/json", + "disabled": true + }, + { + "key": "Accept-Encoding", + "type": "text", + "value": "gzip,deflate", + "disabled": true + }, + { + "key": "Referer", + "type": "text", + "value": "http://84.39.39.116:30497/blueprint", + "disabled": true + }, + { + "key": "Origin", + "type": "text", + "value": "http://84.39.39.116:30497", + "disabled": true + } + ], + "body": { + "mode": "raw", + "raw": "{\n\t\"actionIdentifiers\": {\n\t\t\"mode\": \"sync\",\n\t\t\"blueprintName\": \"pnf_netconf\",\n\t\t\"blueprintVersion\": \"1.0.0\",\n\t\t\"actionName\": \"config-deploy\"\n\t},\n\t\"payload\": {\n\t\t\"config-deploy-request\": {\n\t\t\t\"resolution-key\": \"day-1\",\n\t\t\t\"config-deploy-properties\": {\n\t\t\t\t\"pnf-id\": \"abcd\",\n\t\t\t\t\"pnf-ipv4-address\": \"172.17.0.2\",\n\t\t\t\t\"netconf-password\": \"netconf\",\n\t\t\t\t\"netconf-username\": \"netconf\"\n\t\t\t}\n\t\t}\n\t}\n\n\t,\n\t\"commonHeader\": {\n\t\t\"subRequestId\": \"143748f9-3cd5-4910-81c9-a4601ff2ea58\",\n\t\t\"requestId\": \"e5eb1f1e-3386-435d-b290-d49d8af8db4c\",\n\t\t\"originatorId\": \"SDNC_DG\"\n\t}\n}\n", + "options": { + "formdata": {}, + "raw": { + "language": "json" + } + } + }, + "url": { + "raw": "http://{{host}}:{{port}}/api/v1/execution-service/process", + "protocol": "http", + "host": [ + "{{host}}" + ], + "port": "{{port}}", + "path": [ + "api", + "v1", + "execution-service", + "process" + ] + } + }, + "response": [] + } + ], + "event": [ + { + "listen": "prerequest", + "script": { + "id": "1d6b0502-1031-4cec-adec-6a02e2505fb2", + "type": "text/javascript", + "exec": [ + "" + ] + } + }, + { + "listen": "test", + "script": { + "id": "a97568b2-3520-450b-89c0-c344945c40e4", + "type": "text/javascript", + "exec": [ + "" + ] + } + } + ], + "variable": [ + { + "id": "b4068467-4b9c-4e1d-a812-50d4c75c1fbb", + "key": "host", + "value": "localhost" + }, + { + "id": "141a1d5f-c9f3-4833-bef8-79ff851eebc3", + "key": "port", + "value": "8081" + } + ], + "protocolProfileBehavior": {} +}
\ No newline at end of file diff --git a/docs/usecases/media/save-response-postman.png b/docs/usecases/media/save-response-postman.png Binary files differnew file mode 100644 index 000000000..d46c0fe21 --- /dev/null +++ b/docs/usecases/media/save-response-postman.png diff --git a/docs/usecases/pnf-simulator.rst b/docs/usecases/pnf-simulator.rst index 064cba32b..a1c84416a 100644 --- a/docs/usecases/pnf-simulator.rst +++ b/docs/usecases/pnf-simulator.rst @@ -136,7 +136,7 @@ here but they are not tested by the author of this guide. You can check all installed modules with ``sysrepoctl -l``. `sample-plugin` module should appear with ``I`` flag. Execute the following the commands to initialise the Yang model with one pg-stream record. - We will be using CDS to perform the day-1 configuration and day-2 configuration changes. + We will be using CDS to perform the day-1 and day-2 configuration changes. .. code-block:: sh @@ -337,7 +337,7 @@ Config-assign and config-deploy in CDS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ In the following steps the CBA is published in CDS, config-assignment is done and the config is deployed to to the -Netconf server through CDS in the last step. We will use this CBA: :download:`zip <pnf-simulator-demo-cba.zip>`. +Netconf server through CDS in the last step. We will use this CBA: :download:`zip <media/pnf-simulator-demo-cba.zip>`. If you want to use scripts instead of Postman the CBA also contains all necessary scripts. .. tabs:: @@ -345,7 +345,7 @@ If you want to use scripts instead of Postman the CBA also contains all necessar .. tab:: Scripts **There will be different scripts depending on your CDS installation. For running it in an IDE always use scripts with** - **-ide.sh prefix. For running in kubernetes use the scripts with -k8s.sh ending. For IDE scripts host will be localhost** + **-ide.sh prefix. For running in kubernetes use the scripts with k8s.sh ending. For IDE scripts host will be localhost** **and port will be 8081. For K8s host ip adress gets automatically detected, port is 8000.** **Set up CDS:** @@ -361,7 +361,7 @@ If you want to use scripts instead of Postman the CBA also contains all necessar # bash -x ./bootstrap-cds-k8s.sh Call ``bash -x ./get-cds-blueprint-models-ide.sh`` / ``bash -x ./get-cds-blueprint-models-k8s.sh`` to get all blueprint models in the CDS database. - You will see a default model "artifactName": "vFW-CDS" which was loaded by calling bootstrap. + You will see a default model ``"artifactName": "vFW-CDS"`` which was loaded by calling bootstrap. Push the PNF CDS blueprint model data dictionary to CDS by calling ``bash -x ./dd-microk8s-ide.sh ./dd.json`` / ``bash -x ./dd-microk8s-k8s.sh ./dd.json``. @@ -416,9 +416,9 @@ If you want to use scripts instead of Postman the CBA also contains all necessar Move to the main folder of the CBA with ``cd ..`` and archive all folders with ``zip -r pnf-demo.zip *``. .. warning:: - The provided CBA is already enriched, the following steps anyhow will enrich the CBA again to show the full workflow. + The provided CBA is already enriched, the following step anyhow will enrich the CBA again to show the full workflow. For Frankfurt release this causes an issue when the configuration is deployed later on. This happens because some parameters - get deleted when enrichment is done a second time. Skip the next steps until Deploy/Save Blueprint if you use + get deleted when enrichment is done a second time. Skip the next step until Deploy/Save Blueprint if you use Frankfurt release and use the CBA as it is. In future this step should fixed and executed based on an unenriched CBA. Enrich the blueprint through calling the following script. Take care to provide the zip file you downloader earlier. @@ -448,7 +448,7 @@ If you want to use scripts instead of Postman the CBA also contains all necessar The assumption is that we are using the same host to run PNF NETCONF simulator as well as CDS. You will need the IP Adress of the Netconf server container which can be found out with - ``docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_id_or_name``. In the + ``docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' netopeer2``. In the following examples we will use 172.17.0.2. Day-1 configuration: @@ -569,7 +569,7 @@ If you want to use scripts instead of Postman the CBA also contains all necessar </rpc> .. note:: - Till this point CDS did not interact with the PNF simulator or device. We just created the day-1 and day-2 + Until this step CDS did not interact with the PNF simulator or device. We just created the day-1 and day-2 configurations and stored in CDS database **Config-Deploy:** @@ -630,3 +630,270 @@ If you want to use scripts instead of Postman the CBA also contains all necessar but this is not targeted in this guide. .. tab:: Postman + + Download the Postman collection :download:`json <media/pnf-simulator.postman_collection.json>` and import it into + your Postman application. Set the collection variables `ip adress` and `port` depending on your CDS installation. + This can be done by right clicking the collection, click `edit` and then go to variables. + Localhost with port 8081 is default. + + **Set up CDS:** + + First run `Bootstrap` request which will call Bootstrap API of CDS. This loads the CDS default model artifacts into CDS DB. + You should get HTTP status 200 for the below command. + + You can execute `Get Blueprints` to get all blueprint models in the CDS database. You will see a default + model "artifactName": "vFW-CDS" in the response body which was loaded by calling bootstrap. + + Push the PNF CDS blueprint model data dictionary to CDS with `Data Dictionary` request. Request body contains the + data from ``dd.json`` of the CBA. This will call the data dictionary endpoint of CDS. + + Check CDS database for PNF data dictionaries by entering the DB in a terminal. You should see 6 rows as shown below. + Replace the container id with your running mariadb container id. + + CDS running in an IDE: + + .. code-block:: sh + + sudo docker exec -it mariadb_container_id mysql -uroot -psdnctl + > USE sdnctl; + > select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>'; + + +---------------------+-----------+ + | name | data_type | + +---------------------+-----------+ + | netconf-password | string | + | netconf-server-port | string | + | netconf-username | string | + | pnf-id | string | + | pnf-ipv4-address | string | + | stream-count | integer | + +---------------------+-----------+ + + CDS running in K8s: + + Go to ``/Scripts`` directory of your CBA and open in terminal. + + .. code-block:: sh + + ./connect-cds-mariadb-k8s.sh + + select name, data_type from RESOURCE_DICTIONARY where updated_by='Aarna service <vmuthukrishnan@aarnanetworks.com>'; + + +---------------------+-----------+ + | name | data_type | + +---------------------+-----------+ + | netconf-password | string | + | netconf-server-port | string | + | netconf-username | string | + | pnf-id | string | + | pnf-ipv4-address | string | + | stream-count | integer | + +---------------------+-----------+ + + quit + + exit + + **Enrichment:** + + .. warning:: + The provided CBA is already enriched, the following steps anyhow will enrich the CBA again to show the full workflow. + For Frankfurt release this causes an issue when the configuration is deployed later on. This happens because some parameters + get deleted when enrichment is done a second time. Skip the next steps until Deploy/Save Blueprint if you use + Frankfurt release and use the CBA as it is. In future this step should fixed and executed based on an unenriched CBA. + + Enrich the blueprint through executing the `Enrich Blueprint` request. Take care to provide the CBA file which you + downloaded earlier in the request body. After the request got executed save the response body, this will be the + enriched CBA file. + + |saveResponseImage| + + + **Deploy/Save the Blueprint into CDS database** + + Run `Save Blueprint` request to save/deploy the Blueprint into the CDS database. Provide the enriched file which + you saved in the last step in the request body. + + Now you should see the new model "artifactName": "pnf_netconf" by calling `Get Blueprints` request. + + **Config-Assign** + + The assumption is that we are using the same host to run PNF NETCONF simulator as well as CDS. You will need the + IP Adress of the Netconf server container which can be found out in terminal with + ``docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' netopeer2``. In the + postman collection we use 172.17.0.2 by default. + + For creating the day-n config we are using the template file ``day-n-pnf-config.template`` in the CBA. ``CONFIG_NAME``, + ``PNF_IP_ADDRESS`` and ``STREAM_COUNT`` are replaced with specific values. + + Day-1 configuration: + + Execute the request `Create Config Assign Day-1`. Replace the values in the reqest body if needed. + + You can verify the day-1 NETCONF RPC payload looking into CDS DB. You should see the NETCONF RPC with 5 + streams (fw_udp_1 TO fw_udp_5). Connect to the DB like mentioned above an run following statement. + + .. code-block:: sh + + MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-1' AND artifact_name='netconfrpc'; + + <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"> + <edit-config> + <target> + <running/> + </target> + <config> + <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin"> + <pg-streams> + <pg-stream> + <id>fw_udp_1</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_2</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_3</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_4</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_5</id> + <is-enabled>true</is-enabled> + </pg-stream> + </pg-streams> + </sample-plugin> + </config> + </edit-config> + </rpc> + + + **Day-2 configuration:** + + Execute the request `Create Config Assign Day-2`. It will make the same request like in day-1-config just with + different values (resolution-key = day-2, stream-count = 10). + + You can verify the day-2 NETCONF RPC payload looking into CDS DB. You should see the NETCONF RPC with 10 + streams (fw_udp_1 TO fw_udp_10). Connect to the DB like mentioned above and run following statement. + + .. code-block:: sh + + MariaDB [sdnctl]> select * from TEMPLATE_RESOLUTION where resolution_key='day-2' AND artifact_name='netconfrpc'; + + <rpc xmlns="urn:ietf:params:xml:ns:netconf:base:1.0" message-id="1"> + <edit-config> + <target> + <running/> + </target> + <config> + <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin"> + <pg-streams> + <pg-stream> + <id>fw_udp_1</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_2</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_3</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_4</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_5</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_6</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_7</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_8</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_9</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_10</id> + <is-enabled>true</is-enabled> + </pg-stream> + </pg-streams> + </sample-plugin> + </config> + </edit-config> + </rpc> + + .. note:: + Until this step CDS did not interact with the PNF simulator or device. We just created the day-1 and day-2 + configurations and stored in CDS database + + **Config-Deploy:** + + Now we will make the CDS REST API calls to push the day-1 and day-2 configuration changes to the PNF simulator. + + If you run CDS in Kubernetes open a new terminal and keep it running with ``bash -x ./tail-cds-bp-log.sh``, + we can use it to review the config-deploy actions. If you run CDS in an IDE you can have a look into the IDE terminal. + + Executing `Config Assign Day-1 Deploy` request will deploy day-1 configuration. You have to replace the PNF IP Adress + in the request body. + + Go back to PNF netopeer cli console and verify if you can see 5 streams fw_udp_1 to fw_udp_5 enabled + + .. code-block:: sh + + > get --filter-xpath /sample-plugin:* + DATA + <sample-plugin xmlns="urn:opendaylight:params:xml:ns:yang:sample-plugin"> + <pg-streams> + <pg-stream> + <id>1</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_1</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_2</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_3</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_4</id> + <is-enabled>true</is-enabled> + </pg-stream> + <pg-stream> + <id>fw_udp_5</id> + <is-enabled>true</is-enabled> + </pg-stream> + </pg-streams> + </sample-plugin> + > + + The same can be done for day-2 config (follow same steps just with day-2 resolution key) + + .. note:: + Through deployment we did not deploy the PNF, we just modified the PNF. The PNF could also be installed by CDS + but this is not targeted in this guide. + + +.. |saveResponseImage| image:: media/save-response-postman.png + :width: 500pt
\ No newline at end of file |