Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Table of Contents


Jira Legacy
serverSystem Jira
serverId4733707d-2057-3a0f-ae5e-4fd8aff50176
keyUCA-20

...

SeqNameSourceTargetActorREST writeREST read

deploy service modelvidaaidemo user

9023f592-5c64-4a5b-9333-3287fdc9d304

create service instancevidaaidemo user

Input:

InstanceName=DemoInstance
Subscriber=Demonstration
ServiceType=vFW

Output:
SIID=c54316d8-464e-4967-bece-8c2b2f458b66



07/27/17 12:10:39 HTTP Status: OK (200)
{
  "request": {
    "requestId": "96dcaa23-88cb-41ac-bf8c-e1e5bb423232",
    "startTime": "Wed, 26 Jul 2017 16:10:26 GMT",
    "requestScope": "service",
    "requestType": "createInstance",
    "requestDetails": {
      "modelInfo": {
        "modelCustomizationName": null,
        "modelInvariantId": "43d59b70-8829-4a50-a3f7-d261b220ceef",
        "modelType": "service",
        "modelNameVersionId": "dcb40136-9cec-45be-b080-2a36b31c2f06",
        "modelName": "vfservice",
        "modelVersion": "1.0"
      },
      "requestInfo": {
        "billingAccountNumber": null,
        "callbackUrl": null,
        "correlator": null,
        "orderNumber": null,
        "productFamilyId": null,
        "orderVersion": null,
        "source": "VID",
        "instanceName": "DemoInstance",
        "suppressRollback": false
      },
      "relatedInstanceList": null,
      "subscriberInfo": {
        "globalSubscriberId": "Demonstration",
        "subscriberName": null
      },
      "cloudConfiguration": null,
      "requestParameters": {
        "subscriptionServiceType": "vFW",
        "userParams": []
      }
    },
    "instanceReferences": {
      "serviceInstanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167",
      "serviceInstanceName": "DemoInstance",
      "vnfInstanceId": null,
      "vnfInstanceName": null,
      "vfModuleInstanceId": null,
      "vfModuleInstanceName": null,
      "volumeGroupInstanceId": null,
      "volumeGroupInstanceName": null,
      "networkInstanceId": null,
      "networkInstanceName": null
    },
    "requestStatus": {
      "requestState": "COMPLETE",
      "statusMessage": "Service Instance has been created successfully.",
      "percentProgress": 100,
      "finishTime": "Wed, 26 Jul 2017 16:10:31 GMT"
    }
  }
}

07/27/17 12:10:28 HTTP Status: Accepted (202)
{
  "requestReferences": {
    "instanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167",
    "requestId": "96dcaa23-88cb-41ac-bf8c-e1e5bb423232"
  }
}


https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW

https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/

{ "service-instance": [{
"service-instance-id": "c54316d8-464e-4967-bece-8c2b2f458b66",
"service-instance-name": "DemoInstance",
"persona-model-id": "2a01ef12-9bb1-4205-9941-a506cbae99c9",

...

SeqNameSourceTargetActorREST writeREST read

Add VNF to

Service Instance

vidsdc

demo user



07/27/17 12:15:13 HTTP Status: OK (200)
{
  "request": {
    "requestId": "e867be64-e725-4e29-8448-c9eceb51ce3c",
    "startTime": "Wed, 26 Jul 2017 16:15:02 GMT",
    "requestScope": "vnf",
    "requestType": "createInstance",
    "requestDetails": {
      "modelInfo": {
        "modelCustomizationName": "vsp 1",
        "modelInvariantId": "27036887-1053-48e8-a55e-3d2a7264a658",
        "modelType": "vnf",
        "modelNameVersionId": "b63a0b42-a151-460a-9bb2-ba469948622b",
        "modelName": "vsp",
        "modelVersion": "1.0"
      },
      "requestInfo": {
        "billingAccountNumber": null,
        "callbackUrl": null,
        "correlator": null,
        "orderNumber": null,
        "productFamilyId": "03606d31-c2f3-483e-9882-6d050ab3610f",
        "orderVersion": null,
        "source": "VID",
        "instanceName": "DemoVNF",
        "suppressRollback": false
      },
      "relatedInstanceList": [
        {
          "relatedInstance": {
            "instanceName": null,
            "instanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167",
            "modelInfo": {
              "modelCustomizationName": null,
              "modelInvariantId": "43d59b70-8829-4a50-a3f7-d261b220ceef",
              "modelType": "service",
              "modelNameVersionId": "dcb40136-9cec-45be-b080-2a36b31c2f06",
              "modelName": "vfservice",
              "modelVersion": "1.0"
            }
          }
        }
      ],
      "subscriberInfo": null,
      "cloudConfiguration": {
        "aicNodeClli": null,
        "tenantId": "1035021",
        "lcpCloudRegionId": "DFW"
      },
      "requestParameters": {
        "subscriptionServiceType": null,
        "userParams": []
      }
    },
    "instanceReferences": {
      "serviceInstanceId": "cd2eb659-2463-461b-9c3b-3bf03619c167",
      "serviceInstanceName": null,
      "vnfInstanceId": "110f0e9c-52f9-4b12-8bd8-fa2980e48454",
      "vnfInstanceName": "DemoVNF",
      "vfModuleInstanceId": null,
      "vfModuleInstanceName": null,
      "volumeGroupInstanceId": null,
      "volumeGroupInstanceName": null,
      "networkInstanceId": null,
      "networkInstanceName": null
    },
    "requestStatus": {
      "requestState": "COMPLETE",
      "statusMessage": "Vnf has been created successfully.",
      "percentProgress": 100,
      "finishTime": "Wed, 26 Jul 2017 16:15:03 GMT"
    }
  }
}

07/27/17 12:15:02 HTTP Status: Accepted (202)
{
  "requestReferences": {
    "instanceId": "110f0e9c-52f9-4b12-8bd8-fa2980e48454",
    "requestId": "e867be64-e725-4e29-8448-c9eceb51ce3c"
  }
}
SeqNameSource

get VSPs

http://{{sdc_ip}}:8080/onboarding-api/v1.0/vendor-software-products

"name": "vsp",
"description": "vsp",
"category": "resourceNewCategory.application l4+",

VfModule Preload


https://{{aai_ip}}:8443/aai/v8/network/generic-vnfs/generic-vnf/6229cdee-10f6-4ec4-a5e0-0593154e6d83








VfModule Preload

SeqNameSourceTargetActorrobotREST writeREST read

preload vnfrobot

./demo.sh preload <DemoVNF> <DemoModule>

or

http://sdnc:8843/signup

http://sdnc:8843/login
Add VNF Profile

Starting Xvfb on display :89 with res 1280x1024x24

Executing robot tests at log level TRACE

==============================================================================

OpenECOMP ETE                                                                 

==============================================================================

OpenECOMP ETE.Robot                                                           

==============================================================================

OpenECOMP ETE.Robot.Testsuites                                                

==============================================================================

OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestration Test ...

==============================================================================

Preload VNF                                                           | PASS |

------------------------------------------------------------------------------

OpenECOMP ETE.Robot.Testsuites.Demo :: Executes the VNF Orchestrat... | PASS |

1 critical test, 1 passed, 0 failed

1 test total, 1 passed, 0 failed

==============================================================================

OpenECOMP ETE.Robot.Testsuites                                        | PASS |

1 critical test, 1 passed, 0 failed

1 test total, 1 passed, 0 failed

==============================================================================

OpenECOMP ETE.Robot                                                   | PASS |

1 critical test, 1 passed, 0 failed

1 test total, 1 passed, 0 failed

==============================================================================

OpenECOMP ETE                                                         | PASS |

1 critical test, 1 passed, 0 failed

1 test total, 1 passed, 0 failed

==============================================================================

Output:  /share/logs/demo/PreloadDemo/output.xml

Log:     /share/logs/demo/PreloadDemo/log.html

Report:  /share/logs/demo/PreloadDemo/report.html

http://{{sdnc_ip}}:8282/restconf/operations/VNF-API:preload-vnf-topology-operation

where "service-type" = the root service instance id at top of vid page

(do a get on - https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/

Accept:application/json

Content-Type:application/json

X-TransactionId:0a3f6713-ba96-4971-a6f8-c2da85a3176e

X-FromAppId:API client

Authorization:Basic YWRtaW46S3A4Yko0U1hzek0wV1hsaGFrM2VIbGNzZTJnQXc4NHZhb0dHbUp2VXkyVQ==

{    "input": {

        "request-information": {

            "notification-url": "openecomp.org",

            "order-number": "1",

            "order-version": "1",

            "request-action": "PreloadVNFRequest",

            "request-id": "test"

        },

        "sdnc-request-header": {

            "svc-action": "reserve",

            "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",

            "svc-request-id": "test"

        },

        "vnf-topology-information": {

            "vnf-assignments": {

                "availability-zones": [],

                "vnf-networks": [],

                "vnf-vms": []

            },

            "vnf-parameters": [{

                            "vnf-parameter-name": "vfw_private_ip_0",

                            "vnf-parameter-value": "192.168.110.100"

                        },                        {

                            "vnf-parameter-name": "vfw_private_ip_1",

                            "vnf-parameter-value": "192.168.120.100"

                        },                        {

                            "vnf-parameter-name": "vfw_private_ip_2",

                            "vnf-parameter-value": "10.1.0.11"

                        },                        {

                            "vnf-parameter-name": "vpg_name_0",

                            "vnf-parameter-value": "demofwl01pgn"

                        },                        {

                            "vnf-parameter-name": "demo_artifacts_version",

                            "vnf-parameter-value": "1.0.0"

                        },                        {

                            "vnf-parameter-name": "ecomp_private_net_cidr",

                            "vnf-parameter-value": "10.0.0.0/8"

                        },                        {

                            "vnf-parameter-name": "key_name",

                            "vnf-parameter-value": "vfw_keydemo"

                        },                        {

                            "vnf-parameter-name": "repo_url_artifacts",

                            "vnf-parameter-value": "https://nexus.onap.org/content/groups/staging"

                        },                        {

                            "vnf-parameter-name": "protected_private_net_id",

                            "vnf-parameter-value": "demofwl_protected"

                        },                        {

                            "vnf-parameter-name": "vpg_private_ip_0",

                            "vnf-parameter-value": "192.168.110.200"

                        },                        {

                            "vnf-parameter-name": "vpg_private_ip_1",

                            "vnf-parameter-value": "10.1.0.12"

                        },                        {

                            "vnf-parameter-name": "unprotected_private_net_cidr",

                            "vnf-parameter-value": "192.168.110.0/24"

                        },                        {

                            "vnf-parameter-name": "dcae_collector_ip",

                            "vnf-parameter-value": "10.0.4.102"

                        },                        {

                            "vnf-parameter-name": "repo_url_blob",

                            "vnf-parameter-value": "https://nexus.onap.org/content/repositories/raw"

                        },                        {

                            "vnf-parameter-name": "vsn_private_ip_0",

                            "vnf-parameter-value": "192.168.120.250"

                        },                        {

                            "vnf-parameter-name": "vsn_private_ip_1",

                            "vnf-parameter-value": "10.1.0.13"

                        },                        {

                            "vnf-parameter-name": "vsn_name_0",

                            "vnf-parameter-value": "demofwl01snk"

                        },                        {

                            "vnf-parameter-name": "vfw_name_0",

                            "vnf-parameter-value": "demofwl01fwl"

                        },                        {

                            "vnf-parameter-name": "pub_key",

                            "vnf-parameter-value": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4KVwhTJVTTeB6CqrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVPKSIeH63kgVugwgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMTLKXvZZZGqxW94bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poTQnQm/3D6hiJICrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7D7M/yj292RT1XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOw== rsa-key-20161026"

                        },                        {

                            "vnf-parameter-name": "ecomp_private_net_id",

                            "vnf-parameter-value": "oam_ecomp_LbMf"

                        },                        {

                            "vnf-parameter-name": "dcae_collector_port",

                            "vnf-parameter-value": "8080"

                        },                        {

                            "vnf-parameter-name": "unprotected_private_net_id",

                            "vnf-parameter-value": "demofwl_unprotected"

                        },                        {

                            "vnf-parameter-name": "ecomp_private_subnet_id",

                            "vnf-parameter-value": "oam_ecomp_LbMf"

                        },                        {

                            "vnf-parameter-name": "protected_private_net_cidr",

                            "vnf-parameter-value": "192.168.120.0/24"

                        }            ],

            "vnf-topology-identifier": {

                "generic-vnf-name": "DemoVNF",

                "generic-vnf-type": "service/vsp 1",

                "service-type": "c54316d8-464e-4967-bece-8c2b2f458b66",

                "vnf-name": "DemoModule",

                "vnf-type": "Vsp..base_vfw..module-0"

            }        }    }}


output

{ "output": {
"response-code": "200",
"ack-final-indicator": "Y",
"svc-request-id": "test"
}}

see also

Tutorial: Creating a Service Instance from a Design Model#PreloadFlow

http://{{sdnc_ip}}:8282/restconf/config/VNF-API:preload-vnfs

{ "preload-vnfs": {
"vnf-preload-list": [
{ "vnf-name": "DemoModule",
"vnf-type": "Vsp..base_vfw..module-0",

http://{{sdnc_ip}}:8282/restconf/config/VNF-API:preload-vnfs/vnf-preload-list/DemoModule/Vsp..base_vfw..module-0

{"vnf-preload-list": [{
"vnf-name": "DemoModule",
"vnf-type": "Vsp..base_vfw..module-0",









...

SeqNameSourceTargetActorREST writeREST read

create Vf module <DemoModule>vid
demo user

Output:

VfModuleID=5a08199b-4161-4181-9b2d-da29f6df1410
HeatStackID=DemoModule/55bd16d6-6bac-4638-9e87-9063df6d03c3

via OpenStack

openstack server list

4be336b3-a31c-4be0-9261-0cb1cb51227d | demofwl01fwl  | ACTIVE | oam_ecomp_LbMf=10.1.0.11; demofwl_unprotected=192.168.110.100; public=104.239.230.93, | ||  | |  | 2001:4802:7803:104:be76:4eff:fe20:377b; demofwl_protected=192.168.120.100 

post call

http://{{mso_ip}}:8080/ecomp/mso/infra/serviceInstances/v2/<id>/vnfs/<id>/vfModules

inputs:

serviceInstance id = c543... from relatedInstance:type=service

vnf id = 6229.. from relatedInstance:type=vnf

using

https://{{aai_ip}}:8443/aai/v8/network/generic-vnfs

get: "relatedInstance": { "instanceId": "6229cdee-10f6-4ec4-a5e0-0593154e6d83",

from: {"generic-vnf": [{"vnf-id": "6229cdee-10f6-4ec4-a5e0-0593154e6d83"

get: modelInvariantId": "7425ba97-e159-4c0f-87dd-3af3b439148b"

from: "persona-model-id": "7425ba97-e159-4c0f-87dd-3af3b439148b"


using

https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/

get: "instanceReferences": { "serviceInstanceId": "c54316d8-464e-4967-bece-8c2b2f458b66"

from: { "service-instance": [{"service-instance-id": "c54316d8-464e-4967-bece-8c2b2f458b66",


body :

{ "requestDetails": {
"requestInfo": {
"instanceName": "DemoModule",
"source": "VID",
"suppressRollback": false
},
"modelInfo": {
"modelType": "vfModule",
"modelInvariantId": "1051e887-365f-4e90-b4cc-3f5c6f588188",
"modelNameVersionId": "02b1cf61-2dc9-4be9-869c-354395670faf",
"modelName": "Vsp..base_vfw..module-0",
"modelVersion": "1.0"
},
"requestParameters": {
"userParams": []
},
"relatedInstanceList": [
{"relatedInstance": {
"instanceId": "4827566dcd2eb659-80662463-4118461b-ba2e9c3b-34eb82120e6b3bf03619c167",
"modelInfo": {
"modelType":"service",
"modelName// from "service-instance-id" of https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/
"modelInfo": {
"modelType":"service",
"modelInvariantId":"03912025-3645-429e-9136-445cf20a520e",
" // from vnf-type of https://{{aai_ip}}:8443/aai/v8/network/generic-vnfs
"modelName":"service",
"modelInvariantId":"43d59b70-8829-4a50-a3f7-d261b220ceef", // from "persona-model-id" of https://{{aai_ip}}:8443/aai/v8/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/
"modelVersion":"1.0",
"modelNameVersionId":"15eb2af8831ed809-766c345e-4e534ed0-9038b216-a4a95e79f1056308c0f0d8e4"
} } },
{"relatedInstance": {
"instanceId": "492ada02110f0e9c-069552f9-4ee44b12-aa3b8bd8-5d0d029cb6a3",fa2980e48454", // from "vnf-id" of https://{{aai_ip}}:8443/aai/v8/network/generic-vnfs
"modelInfo": {
"modelType":"vnf",
"modelName":"vsp",
"modelInvariantId":"a32fae2d27036887-a73f1053-4f3148e8-bdd9a55e-49a7694d158e",3d2a7264a658", // from "persona-model-id" ofhttps://{{aai_ip}}:8443/aai/v8/network/generic-vnfs
"modelVersion":"1.0",
"modelNameVersionId":"2e5273f39c265d0b-a6a4e606-4c504242-9b0a9ace-bc9b25749ca398962a1b93e7",
"modelCustomizationName":"vsp 1"
} } }],
"cloudConfiguration": {
"lcpCloudRegionId": "DFW",
"tenantId": "{{tenant_id}}"
} }}

however there is more to this than just a rest call.

http://{{mso_ip}}:8080/ecomp/mso/infra/serviceInstances/v2/c54316d8-464e-4967-bece-8c2b2f458b66/vnfs/6229cdee-10f6-4ec4-a5e0-0593154e6d83/vfModules

{
"serviceException": {
"messageId": "SVC0002",
"text": "VnfType service/vsp 1 and VF Module Model Name Vsp..base_vfw..module-0 with version 1.0 not found in MSO Catalog DB"
}
}

http://{{mso_ip}}:8080/ecomp/mso/infra/orchestrationRequests/v2/?filter=vfModuleInstanceId%3AEQUALS%3A5a08199b-4161-4181-9b2d-da29f6df1410







Closed Loop

SeqNameSourceTargetActorREST writeREST read

appcrobot
./demo.sh appc <DemoModule>




DMaaP

http://{{collector_ip}}:3904/events/unauthenticated.SEC_MEASUREMENT_OUTPUT/group3/sub1?timeout=9000


see JSON.parse(returnedData[i].event.commonEventHeader.eventId

["{\"event\":{\"measurementsForVfScalingFields\":{\"measurementInterval\":10,\"measurementsForVfScalingVersion\":1.1,\"vNicUsageArray\":[{\"multicastPacketsIn\":0,\"bytesIn\":14500,\"unicastPacketsIn\":0,\"multicastPacketsOut\":0,\"broadcastPacketsOut\":0,\"packetsOut\":0,\"bytesOut\":0,\"broadcastPacketsIn\":0,\"packetsIn\":500,\"unicastPacketsOut\":0,\"vNicIdentifier\":\"eth1\"}]},\"commonEventHeader\":{\"reportingEntityName\":\"demofwl01fwl\",\"startEpochMicrosec\":1500849487268085,\"lastEpochMicrosec\":1500849497268085,\"eventId\":\"43434\",\"sourceName\":\"Dummy VM name - No Metadata available\",\"sequence\":43434,\"priority\":\"Normal\",\"functionalRole\":\"vFirewall\",\"domain\":\"measurementsForVfScaling\",\"reportingEntityId\":\"No UUID available\",\"sourceId\":\"Dummy VM UUID - No Metadata available\",\"version\":1.2}}}",





DMaaP

http://{{collector_ip}}:3904/events/unauthenticated.TCA_EVENT_OUTPUT/group3/sub1?timeout=30000


...

// require: cert, username, password, headers(X-FromAppId,Accept), Authenticator
public String run(boolean isSSL, String url, String port, String path) {
  String record = null;
Client client = null;
WebTarget latestTarget = null;
WebTarget rootTarget = null;
if(isSSL) {
SslConfigurator sslConfig = SslConfigurator.newInstance();
SSLContext sslContext = sslConfig.createSSLContext();
HostnameVerifier verifier = new HostnameVerifier() {
public boolean verify(String hostname, SSLSession sslSession) {
return true; // TODO: security breach
}};
client = ClientBuilder.newBuilder().sslContext(sslContext).hostnameVerifier(verifier).build();
client.register(new Authenticator("AAI","AAI"));
} else {
      client = ClientBuilder.newClient();
}
rootTarget = client.target(url);
latestTarget = rootTarget.path(path);
try {
try { Thread.sleep(1); } catch (InterruptedException ie) { Thread.currentThread().interrupt(); }
record = finalTarget.request()
.header("X-FromAppId", "AAI").header("Accept", "application/json")
.get(String.class);
public class Authenticator implements ClientRequestFilter {
private final String user;
private final String pass;

public Authenticator(String user, String password) {
this.user = user; this.pass = password;
}

public void filter(ClientRequestContext requestContext) throws IOException {
MultivaluedMap<String, Object> headMap = requestContext.getHeaders();
String basicAuth = null;
try {
String aToken = user + ":" + pass;
basicAuth = "BASIC " + DatatypeConverter.printBase64Binary(aToken.getBytes("UTF-8"));
} catch (UnsupportedEncodingException uee) { throw new IllegalStateException("Encoding with UTF-8 failed", uee);}
headMap.add("Authorization", basicAuth);
}
}

DI 2: 20170712: Spring Boot Backend Framework

...

/testsuite/properties/demo.sh not /testsuite/docker/demo.sh

/testsuite/runtags.sh

/testsuite/resources/demo_preload.robot "Load Customer And Models"
"Create Customer For VNF Demo"

create_customer.robot (aai put /aai/v8//business/customers/customer/)

create_service.robot (aai put /aai/v8/service-design-and-creation/services

"Load Models" | Distribute Model | Model Distribution For Directory in model_test_template.robot | Distribute Model From ASDC in addc_interface.robot

(Add ASDC Catalog Service, Setup ASDC Catalog Resource, Get ASDC Catalog Resource, 
Add ASDC Resource Instance, Get ASDC Catalog Service, Checkin ASDC Catalog Service,
Request Certify ASDC Catalog Service, Start Certify ASDC Catalog Service, Certify ASDC Catalog Service, Approve ASDC Catalog Service, 
Distribute ASDC Catalog Service, Get ASDC Catalog Service, Check Catalog Service Distributed)
 
Preload VNF:demo.robot (
  Preload User Model:demo_preload.robot (
    Get Service Instance
    Get Relationship Data
    Get Persona Model Id
    Login To VID GUI
    Get Module Names from VID
    Preload Vnf:sdngc_interface.robot(
      Update Module Name
      Preload Vnf Profile(
        Login To SDNGC Admin GUI

goto sdnc:8843/mobility/getVnfProfile

        click add_vnf_profile

inserts directly to the DB from the client (for now)

/sdnc-oam/admportal/mobility.js
router.post('/addVnfNetwork', csp.checkAuth, function(req,res){
var sql = "INSERT INTO VNF_NETWORKS (vnf_type,network_role) VALUES ("
+ "'" + req.body.nf_vnf_type + "'," + "'" + req.body.nf_network_role + "')";
tasks.push( function(callback) { dbRoutes.executeSQL(sql,req,res,callback); } );

)

      Preload One Vnf Topology

)))


  

...