Merge "Added links for use cases to its launching page." into casablanca
diff --git a/docs/docs_CCVPN.rst b/docs/docs_CCVPN.rst
index 71c5601..f4013f2 100644
--- a/docs/docs_CCVPN.rst
+++ b/docs/docs_CCVPN.rst
@@ -105,7 +105,7 @@
 b) Replace uuid of available files with what existing in SDC.
 c) Put available csar files in UUI local path (/home/uui).
 
-4) SO-1248. Csar needs to be manually placed into the bpmn corresponding directory
+4) SO docker branch 1.3.5 has fixes for the issues 1SO-1248.
 
 After SDC distribution success, copy all csar files from so-sdc-controller:
     connect to so-sdc-controller( eg: kubectl.exe exec -it -n onap dev-so-so-sdc-controller-77df99bbc9-stqdz /bin/sh )
diff --git a/docs/docs_vCPE with Tosca VNF.rst b/docs/docs_vCPE with Tosca VNF.rst
index 75aefda..4a5b6fc 100644
--- a/docs/docs_vCPE with Tosca VNF.rst
+++ b/docs/docs_vCPE with Tosca VNF.rst
@@ -4,25 +4,73 @@
 ----------------------------
 
 VNF Packages and NS Packages 
-~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+vCPE tosca file url: https://git.onap.org/demo/tree/tosca/vCPE
 
+5 VNFs are here for the ONAP vCPE use case. This VNFD is transformed manually from vCPE heat template.
+Please run "./generate_csar.sh" to create the CSAR package files for these 5 VNFS. CSAR package file is just a zip formatted file. If you want to use SRIOV SRIOV-NIC", please run "./generate_csar.sh sriov" to create the CSAR package files for SRIOV.
+All the generated VNF packges can be found in the following link:
 - VNF packages: https://wiki.onap.org/display/DW/vCPE+with+Tosca+VNF+Test+Guide
 - NS packages: https://wiki.onap.org/display/DW/vCPE+with+Tosca+VNF+Test+Guide
 
 Description
 ~~~~~~~~~~~
 The vCPE with Tosca VNF shows how to use ONAP to deploy tosca based vCPE. ONAP Casablanca release supports deployment,termination and manual heal Tosca based vCPE. User can trigger the above operation via UUI. and User can first chose Network serivce type and conrresponding service template in UUI and then UUI will directly invoke VF-C Northbound interfaces to do the life cycle management. In Casablanca release, we bypass SO, in the following release, we can add SO to the workflow. The main projects involved in this use case include: SDC, A&AI, UUI,VF-C, Multicloud,MSB, Policy,OOF.
-
+The use case is composed of five virtual functions (VFs): Infrastructure including vDNS, vDHCP, vAAA(Authorization, Authentication, Accounting) and vWEB, vBNG(Virtual Broadband Network Gateway), vGMUX(Virtual Gateway Multiplexer), vBRGEMU(Bridged Residential Gateway) and vGW(Virtual Gateway). Infrastructure VF run in one VM. the other VFs run in separate four VMs. We will send much data from vBRGEMU to vGW. we need to accelarate it using SRIOV-NIC.
 The original vCPE Use Case Wiki Page can be found here: https://wiki.onap.org/pages/viewpage.action?pageId=3246168
 
 How to Use
 ~~~~~~~~~~
-Design Time:
 
+
+Configuration:
+~~~~~~~~~~~~~~
+1) VIM Configuration
+If you want to use SRIOV-NIC, you need first config SRIOV NIC to refer to [1].
+[1] https://docs.openstack.org/ocata/networking-guide/config-sriov.html
+
+ONAP managing 1 cloud-region which have three flavors.
+Flavor 11:
+2 vcpus, 1 Gbytes of memory, 20Gb disk
+Numa page size: 2Mbytes and number pages 512
+::
+
+  openstack flavor create onap.hpa.flavor11 -id auto --ram 1024 --disk 20 --vcpus 2
+
+Flavor 12:
+2 vcpus, 2 Gbytes of memory, 20Gb disk
+Numa page size: 2Mbytes and number pages 1024
+::
+
+  openstack flavor create onap.hpa.flavor12 -id auto --ram 2048 --disk 20 --vcpus 2
+
+Flavor 13:
+2 vcpus, 4 Gbytes of memory, 20Gb disk
+Huge page size: 2Mbytes and number pages 2048
+1 SRIOV-NIC VF
+::
+
+  openstack flavor create onap.hpa.flavor13 -id auto --ram 4096 --disk 20 -vcpus 2
+  openstack flavor set onap.hpa.flavor11 --property aggregate_instance_extra_specs:sriov_nic=sriov-nic-intel-1234-5678-physnet1:1
+  openstack aggregate create --property sriov_nic=sriov-nic-intel-1234-5678-physnet1:1 hpa_aggr11
+
+comments: you must change 1234 and 5678 to real vendor id and product id. you also need change physnet1 to the provider network.
+
+2)Policy Configuration
+After the patch https://gerrit.onap.org/r/#/c/73502/ is merged. With the generated policy and do some manually update as follows, the service could be distributed successfully and the Policy/VFC/OOF could work as excepted.
+
+- Need manually modify policy item because the “vendor id” and “PCI device id” and “architecture” must be changed in different VIMs since we have different PCI devices in different VIMs
+- The value of mandatory in CSAR is “true”, OOF is case intensive, it needs to use “True”. Have to update it. suggest OOF to use ignoreCase in R4.
+- The attribute key in CSAR is pciNumDevices, but the responding one in OOF/Mutlicloud is pciCount.  Suggest keeping alignment in R4.
+- The policy scope has to add a value “us” into it which is a configuration issue in OOF side. Policy side also need do improvement to deal with policy scope automatically append instead of replacement so such policy could be used by several services at the same time.
+
+Design Time:
+~~~~~~~~~~~
 1) Because SDC doesn't export ETSI aigned VNF package and NS package, so in this release, we put the real ETSI aligned package as package artifact.
 2) When design Network service in SDC, should assign "gvnfmdriver" as the value of nf_type in Properties Assignment. so that VF-C can know will use gvnfm to manage VNF life cycle.
 
 Run Time:
+~~~~~~~~
 1) First onboard VNF/NS package from SDC to VF-C catalog in sequence.
 2) Trigger the NS operation via UUI
 
@@ -30,17 +78,78 @@
 
 Test Status and Plans
 ~~~~~~~~~~~~~~~~~~~~~
+The test plan 3 in https://wiki.onap.org/pages/viewpage.action?pageId=41421112.
+Test Plan 3: VF-C HPA testing
+This test plan covers the tests related to testing
+Support for the vCPE use case in VF-C
+Use vCPE (Infra, vGW, vBNG, vBRGEMU and vGMUX)
+
+Infra part of  policy asking for:
+::
+
+  2 vcpus
+  >= 2Gbytes of memory
+  > 40Gbytes of disk
+
+vGW part of policy asking for:
+::
+
+  2 vcpus
+  >=4Gbytes of memory
+  >= 40Gbytes of disk
+  Numa page size: 2Mbytes and pages 1024
+  with one SRIOV-NIC
+
+vBNG part of policy asking for:
+::
+
+  2 vcpus
+  >= 2Gbytes of memory
+  > 40Gbytes of disk
+  Numa page size: 2Mbytes and pages 1024
+  with one SRIOV-NIC
+
+vBGREMU part of policy asking for:
+::
+
+  2 vcpus
+  >= 2Gbytes of memory
+  >= 40Gbytes of disk
+  Numa page size: 2Mbytes and pages 1024
+  with one SRIOV-NIC
+
+vGMUX part of policy asking for:
+::
+
+  2 vcpus
+  >= 2Gbytes of memory
+  > 40Gbytes of disk
+  Numa page size: 2Mbytes and pages 1024
+  with one SRIOV-NIC
+
+Instantiate the VNF
+Check for results:
+It would have selected flavor13 for vGW, vBNG, vBRGEMU and vGMUX VMs. It would have selected flavor13 and flavor12 for Infrastructure.
+
 This case completed all tests as found here: https://wiki.onap.org/display/DW/vCPE+with+TOSCA+VNF+Integration+Test++-+Test+status
 
 Known Issues and Resolutions
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-1) VF-C catalog config should be updated with the right SDC URL and user/pwd
 
+- Some SDC NS data model is not aligned to VFC NS data model, VFC NS also according to ETSI SOL0001. we also can refer to https://jira.onap.org/browse/SDC-1897. we have a workaround for this issue, we put the service as artifact file and distribute to VFC.
+- NFV Tosca parser bug https://jira.opnfv.org/browse/PARSER-187. we also filed a bug in VFC https://jira.onap.org/browse/VFC-1196.
+- 'artifacts' definition is missing in the exported csar's VDU node, we also can refer to https://jira.onap.org/browse/SDC-1900. It’s a very hacky workaround in VFC’s GVFNM. Because currently the only use case will use GVFNM is vCPE, which only uses the ubuntu16.04 image, so GVFNM just makes the ubuntu16.04 image as the default if the "sw_image" artifact is missing in the SDC’s exported CSAR.
+- OOF patch https://gerrit.onap.org/r/#/c/73332/ is not accepted by 1.2.4 image. 1.2.5 is available in nexus3 repo. But not available in Casablanca release. If you want to use it, you can use 1.2.5-SNAPSHOT-latest. If you use 1.2.4 image, you also need to modify code according to the patch.
+- vnflcm notification error patch  https://gerrit.onap.org/r/#/c/73852/
+- grant error patch not merged into VF-C 1.2.2 image: https://gerrit.onap.org/r/#/c/73833/  and https://gerrit.onap.org/r/#/c/73770/
+- VF-C catalog config should be updated with the right SDC URL and user/pwd
 Resolution: Disable VFC catalog livenessprobe and update configuration
 
-- edit dev-vfc-catalog deployment
-- remove livenessprobe section
-- enter into catalog pod and update configuration
+a) edit dev-vfc-catalog deployment
+b) remove livenessprobe section
+c) enter into catalog pod and update configuration
+::
+
 kubectl -n onap exec -it dev-vfc-catalog-6978b76c86-87722  /bin/bash
 config file location: service/vfc/nfvo/catalog/catalog/pub/config/config.py 
 Update the SDC configuration as follows:
@@ -48,15 +157,3 @@
 SDC_USER = "aai"
 SDC_PASSWD = "Kp8bJ4SXszM0WXlhak3eHlcse2gAw84vaoGGmJvUy2U"
 
-2) nfvtosca parser bug
-
-nfvtoscaparse has error when parse sdc distribution package.
-To ignore that error, we need either apply the patch at https://jira.opnfv.org/browse/PARSER-187 locally in nfv-toscaparser which VFC uses or wait for nfv-toscaparser got that fixed. 
-
-3) grant error patch
-https://gerrit.onap.org/r/#/c/73833/
-https://gerrit.onap.org/r/#/c/73770/
-
-4) vnflcm notification error patch
-https://gerrit.onap.org/r/#/c/73852/
-
diff --git a/docs/docs_vFWDT.rst b/docs/docs_vFWDT.rst
new file mode 100755
index 0000000..633ffe3
--- /dev/null
+++ b/docs/docs_vFWDT.rst
@@ -0,0 +1,402 @@
+.. contents::
+   :depth: 3
+..
+
+vFW Traffic Distribution Use Case
+---------------------------------
+Description
+~~~~~~~~~~~
+
+The purpose of this work was to create new LCM API in APPC – DistributeTraffic. The APPC/SDN-C client is requesting a change to traffic distribution (redistribution) done by a traffic balancing/distribution entity (aka anchor point) or mechanism. This action targets the traffic balancing/distribution entity, in some cases DNS, other cases a load balancer external to the VNF instance, as examples. Traffic distribution (weight) changes intended to take a VNF instance out of service are completed only when all in-flight traffic/transactions have been completed. To complete the traffic redistribution process, gracefully taking a VNF instance out-of-service,without dropping in-flight calls or sessions, QuiesceTraffic command may need to follow traffic distribution changes (assigning weight 0 or very low weight to VNF instance). The VNF application remains in an active state.
+
+Traffic Distribution functionality is an outcome of Change Management project. Further details can be found on project's page
+
+https://wiki.onap.org/display/DW/Change+Management+Extensions
+
+Test Scenario
+~~~~~~~~~~~~~
+
+.. figure:: files/figure1.png
+   :scale: 40 %
+   :align: center
+
+   Figure 1 The idea of DistributeTraffic LCM Use Case
+
+The idea of the scenario is shown on Figure 1. In a result of the DistributeTraffic LCM action traffic flow originated from vPKG to vFW 1 and vSINK 1 is redirected to vFW 2 and vSINK 2. Result of the change can be observed also on the vSINKs' dashboards which show a current incoming traffic. Observation of the dashboard from vSINK 1 and vSINK 2 proves that API works properly.
+
+.. figure:: files/figure2.png
+   :scale: 50 %
+   :align: center
+
+   Figure 2 The result of traffic distribution
+
+In order to setup the scenario and to test the DistributeTraffic LCM API in action you need to perform the following steps:
+
+1. Create an instance of vFWDT (vPKG , 2 x vFW, 2 x vSINK) – dedicated for the DistributeTraffic LCM API tests
+
+#. Upload Ansible playbook to Ansible Server
+
+#. Setup Ansible Server to work with vPKG VM
+
+#. Create configuration file for DistributeTraffic LCM in Ansible Server
+
+#. Configure VNF in APPC CDT tool
+
+#. Invoke REST API via APIDOC explorer, CDT Test tool or DMaaP
+
+You need to have an access to the following containers:
+
+-  APPC MariaDB container – setup Ansible adapter for VNF
+
+-  APPC Ansible Server container – setyp of Ansible Server,
+   configuration of playbook and input parameters for action
+
+-  Any container that can be used to call DMaaP API e.g. the SO container
+
+.. note:: This tutorial is based on SB-07 integration lab that was based on OpenStack deployment. For OOM based deployment port number may be different.
+
+Scenario Setup
+--------------
+
+vFWDT Instantiation
+~~~~~~~~~~~~~~~~~~~
+
+In order to test a DistributeTraffic LCM API functionality a dedicated vFW instance must be prepared. It differs from a standard vFW instance by having an additional VF-module with a second instance of vFW and a second instance of vSINK. Thanks to that when a service instance is deployed there are already available two instances of vFW and vSINK that can be used for verification of DistributeTraffic LCM API – there is no need to use the ScaleOut function to test DistributeTraffic functionality what simplifies preparations for tests.
+
+In order to instantiate vFWDT please follow the procedure for standard vFW with following changes:
+
+1. Please use the following HEAT templates:
+
+https://github.com/onap/demo/tree/master/heat/vFWDT
+
+2. Create Virtual Service in SDC with composition like it is shown on Figure 3
+
+.. figure:: files/figure3.png
+   :scale: 50 %
+   :align: center
+
+   Figure 3 Composition of vFWDT Service
+
+3. Use the following payload files in the SDNC-Preload phase during the VF-Module instantiation
+
+- :download:`vPKG preload example <files/vpkg-preload.json>`
+
+- :download:`vFW/SNK 1 preload example <files/vfw-1-preload.json>`
+
+- :download:`vFW/SNK 2 preload example <files/vfw-2-preload.json>`
+
+**Note**: vFWDT has a specific configuration of the networks – different than the one in original vFW use case (see Figure 4). Two networks must be created before the heat stack creation: *onap-private* network (10.0.0.0/16 typically) and *onap-external-private* (e.g. "10.100.0.0/16"). The latter one should be connected over a router to the external network that gives an access to VMs. Thanks to that VMs can have a floating IP from the external network assigned automatically in a time of stacks' creation. Moreover, the vPKG heat stack must be created before the vFW/vSINK stacks (it means that the VF-module for vPKG must be created as a first one). The vPKG stack creates two networks for the vFWDT use case: *protected* and *unprotected*; so these networks must be present before the stacks for vFW/vSINK are created.
+
+.. figure:: files/figure4.png
+   :scale: 20 %
+   :align: center
+
+   Figure 4 Configuration of networks for vFWDT
+
+Configuration of Ansible Server
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+After an instantiation of the vFWDT service the Ansible server must be configured in order to allow it a reconfiguration of vPKG VM.
+
+1. Enter the Ansible Server container
+
+2. Install nano and wget
+
+::
+
+    apt install wget nano
+
+3. Download the distribute traffic playbook into the :file:`/opt/onap/ccsdk/Playbooks` directory
+
+::
+
+    cd /opt/onap/ccsdk/Playbooks
+
+    wget https://raw.githubusercontent.com/onap/appc-deployment/master/playbook/ansible_vfw_distributetraffic%400.00.yml
+
+4. Change with *nano* the *hosts: all* statement in the playbook into the *hosts: vpkg-1* statement
+
+5. Copy a private key file used for VMs' creation into the :file:`/opt/onap/ccsdk/Playbooks/vpkg-1.pem` file and give it proper rights
+
+::
+
+    chown 400 vpkg-1.pem
+
+.. note:: The private key file must be related with a public key specified in the *pub_key* statement used in the *SDNC-Preloading* phase
+
+6. Edit the :file:`/opt/onap/ccsdk/Playbooks/Ansible\ \_\ inventory` file including *vpkg-1* host
+
+::
+
+    [vpkg-1]
+    vpkg-1 ansible_ssh_host=10.0.110.2 ansible_ssh_user=ubuntu
+    ansible_ssh_private_key_file=/opt/onap/ccsdk/Playbooks/vpkg-1.pem
+
+.. note:: Change IP address respectively
+
+7. Test that the Ansible server can access *vpkg-1* host over ssh
+
+::
+
+    ansible –i Ansible_inventory vpkg-1 –m ping
+
+8. Upload the payload file :file:`/opt/onap/ccsdk/Playbooks/config.json` with extra parameters for the Ansible playbook.
+
+::
+
+    {
+       "fwIp": "192.168.10.110",
+       "sinkIp": "192.168.20.240"
+    }
+
+.. note:: This step can be omitted when the CDT template file for the *DistributeTraffic* action will be formulated in a different way. In consequence all the parameters required by a playbook can be defined directly on the CDT level and there is no need to maintain this file. For our VNF this file contains an IP address of vFW 2 from the *unprotected* network and an IP address of vSINK 2 from the *protected* network.
+
+Configuration of MySQL/MariaDB for Ansible
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+For each VNF that uses the Ansible protocol you need to configure *PASSWORD* and *URL* field* in the *DEVICE_AUTHENTICATION* table.
+
+1. Enter the MariaDB container
+
+2. Enter the Maria DB CLI (password is *gamma*)
+
+::
+
+    mysql -u sdnctl -p
+
+3. Invoke the following commands
+
+::
+
+    MariaDB [(none)]> use sdnctl;
+    MariaDB [sdnctl]> select * from DEVICE_AUTHENTICATION;
+    MariaDB [sdnctl]> UPDATE DEVICE_AUTHENTICATION SET URL = 'http://ansiblehost:8000/Dispatch' WHERE DEVICE_AUTHENTICATION_ID=51;
+    MariaDB [sdnctl]> UPDATE DEVICE_AUTHENTICATION SET PASSWORD = 'admin' WHERE DEVICE_AUTHENTICATION_ID=51;
+
+
+.. note:: You need to find in the *select* query result ID of row that has VNF Type like the one specified in the CDT, *DistributeTraffic* as an action name and *Ansible* as a name of a protocol. You should replace *ansiblehost* with an IP or a hostname of the Ansible Server reachable for the APPC container.
+
+Configuration of VNF in the APPC CDT tool
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Following steps aim to configure DistributeTraffic LCM action for our vFW VNF in APPC CDT tool.
+
+1. Enter the Controller Design Tool page: http://appc_ip:CDT_port
+
+.. note:: i.e. http://10.12.5.227:8080 for ONAP OpenStack deployment
+
+2. Click on the *CREATE NEW VNF TYPE* button
+
+.. figure:: files/figure5.png
+   :scale: 60 %
+   :align: center
+
+   Figure 5 Creation of new VNF type in CDT
+
+3. Enter the VNF Type retrieved from AAI or VID and press the *NEXT* button. Retrieve proper values for the vFWDT service instance
+
+.. figure:: files/figure6.png
+   :scale: 60 %
+   :align: center
+
+   Figure 6 Retrieving VNF type value with VID from Virtual Service Instance
+
+
+.. figure:: files/figure7.png
+   :scale: 60 %
+   :align: center
+
+   Figure 7 Creation of new VNF type in CDT
+
+4. For already created VNF Type (if the view does not open itself) click the *View/Edit* button. In the LCM action edit view in the first tab please choose:
+
+   -  *DistributeTraffic* as Action namethe
+
+   -  *ANSIBLE* as Device Protocol
+
+   -  *Y* value in Template dropdown menu
+
+   -  *admin* as User Name
+
+   -  *8000* as Port Number
+
+
+.. figure:: files/figure8.png
+   :scale: 60 %
+   :align: center
+
+   Figure 8 DistributeTraffic LCM action editing
+
+5. Go to the *Template* tab and upload the request template file of the DistributeTraffic LCM action
+
+::
+
+    {
+        "PlaybookName": "ansible_vfw_distributetraffic@400.00.yml",
+        "NodeList": ["vpkg-1"],
+        "EnvParameters": {
+            "ConfigFileName": "config.json"
+        },
+        "Timeout": 3600
+    }
+
+.. note:: This step allows to create and edit template file for any APPC LCM DistributeTraffic action request for specified before VNF Type.
+
+The *EnvParameters* group contains all the parameters that will be passed directly to the Ansible playbook during the request's execution. The *NodeList* parameter value must match the group of VMs like it was specified in the Ansible inventory file. *PlaybookName* must be the same as the name of playbook that was uploaded before to the Ansible server.
+
+.. figure:: files/figure9.png
+   :scale: 60 %
+   :align: center
+
+   Figure 9 Request template file after uploading
+
+Select *ansible_vfw_distributetraffic@400.00.yml* and press CTRL+4 buttons. The new dialog window will appear. Enter a name *playbook* for this value and press the *Submit* button.
+
+.. figure:: files/figure10.png
+   :scale: 60 %
+   :align: center
+
+   Figure 10 Editing "playbook" parameter of request template
+
+The same operation must be repeated for the *config.json* parameter. The parameter should have name *ConfigFileName*. Press the *Submit* button.
+
+.. figure:: files/figure11.png
+   :scale: 60 %
+   :align: center
+
+   Figure 11 Editing "ConfigFileName" parameter of request template
+
+Afterwards press the *SYNCHRONIZE WITH TEMPLATE PARAMETERS* button. You will be moved to the *Parameter Definition* tab. The new parameters will be listed there.
+
+.. figure:: files/figure12.png
+   :scale: 60 %
+   :align: center
+
+   Figure 12 Summary of parameters specified for DistributeTraffic LCM action.
+
+Finally, go back to the *Reference Data* tab and click *SAVE ALL TO APPC*.
+
+Testing DistributeTraffic LCM API
+---------------------------------
+
+Below we propose three different ways to test DistributeTraffic LCM API.
+
+Test in CDT
+~~~~~~~~~~~
+
+In order to test API in CDT go to *TEST* tab. Upload spreadsheet (Excel file) and enter VNF ID of vFWDT VNF.
+
+:download:`CDT request input <files/cdt-request-input.xlsx>`
+
+The spreadsheet contains input parameters for API request. Values from the this file are used to automatically fill in the LCM request template file being edited in previous steps. Click on *Execute test* button to test API in action.
+
+.. figure:: files/figure13.png
+   :scale: 60 %
+   :align: center
+
+   Figure 13 Result of DistributeTraffic LCM API execution from CDT
+
+APIDOC Explorer
+~~~~~~~~~~~~~~~
+
+Another way to test API is to use APIDOC explorer of APPC that comes with OpenDaylight.
+
+1. Enter APIDOC explorer page: http://appc_ip:appc_portal_port/apidoc/explorer/index.html
+
+.. note:: i.e. http://10.12.5.227:8282/apidoc/explorer/index.html for ONAP OpenStack deployment
+
+2. Choose *appc-provider-lcm* and find POST
+   */operations/appc-provider-lcm:distribute-traffic*
+
+3. In the *payload* input paste below mentioned content.
+
+::
+
+    {
+        "input": {
+            "common-header": {
+                "timestamp": "2018-10-18T08:51:01.628Z",
+                "api-ver": "2.00",
+                "originator-id": "demo",
+                "request-id": "1539852661628",
+                "sub-request-id": "1539852661629",
+                "flags": {
+                    "mode": "NORMAL",
+                    "force": "TRUE",
+                    "ttl": 3600
+                }
+            },
+            "action": "DistributeTraffic",
+            "action-identifiers": {
+                "vnf-id": "2bd5cc6e-9738-436f-b5a8-c1a749a89f52"
+            },
+            "payload": "{\"configuration-parameters\":{\"ConfigFileName\":\ "/opt/onap/ccsdk/Playbooks/dt-vpkg-1-config.json\",\"playbook\":\"ansible_vfw_distributetraffic@400.00.yml\",\"node_list\":\"[vpkg-1]\"}}"
+        }
+    }
+
+.. note:: Remember to use *vnf-id* of your instance of vFW 1 and to set a unique *request-id*. The value of *playbook* and *ConfigFileName* parameters should be the same as uploaded to Ansible Server names of files and their locations. Timestamp must have proper value as well (not from the future and from the past but not more than 30s). In the *payload* parameter *configuration-parameters* section must correspond to all the parameters defined in the template of *DistributeTraffic* action in CDT.
+
+DMaaP event distribution
+~~~~~~~~~~~~~~~~~~~~~~~~
+
+The last option that can be used to test DistributeTraffic API is distribution of DMaaP event e.g. from SO container. It is the closest way to how DistributeTraffic API will be used in the future – invoked from a specific workflow by SO BPMN engine. For that we have a python script that prepares input parameters for DMaaP request. There is a need to change in the script IP address and Port of DMaaP. This script can be copied into any machine/container than has access to DMaaP – in particular it can be copied into the SO container.
+
+::
+
+    from datetime import datetime
+    import os
+    import json
+    from pprint import pprint
+    from random import randint
+
+    request_id = randint(1, 100000000)
+
+    curr_utc_timestamp = datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.244Z')
+
+    data = ''
+
+    with open('dmaap-payload.json') as json_data:
+        data = json.load(json_data)
+        data['body']['input']['common-header']['timestamp'] = curr_utc_timestamp
+        data['body']['input']['common-header']['request-id'] = request_id
+        json_data.close()
+        pprint(data)
+
+    with open('dmaap-payload.json', 'w') as outfile:
+        json.dump(data, outfile)
+
+    os.system('curl -X POST -v -H "Content-Type: application/json" -d @./dmaap-payload.json http://10.12.6.80:3904/events/APPC-LCM-READ')
+
+
+POST request to DMaaP requires that *payload* data is specific to a APPC LCM request and defines the same input parameters for the DistributeTraffic LCM action like in the two previous methods.
+
+::
+
+    {
+        "body": {
+            "input": {
+                "action": "DistributeTraffic",
+                "payload": "{\"configuration-parameters\":{\"ConfigFileName\":\"/opt/onap/ccsdk/Playbooks/dt-vpkg-1-config.json\",\"playbook\":\"ansible_vfw_distributetraffic@400.00.yml\",\"node_list\":\"[vpkg-1]\"}}",
+                "common-header": {
+                    "api-ver": "2.00",
+                    "timestamp": "2018-10-22T11:11:25.244Z",
+                    "flags": {
+                        "force": "TRUE",
+                        "mode": "NORMAL",
+                        "ttl": 36000
+                    },
+                    "request-id": 27081074,
+                    "originator-id": "demo",
+                    "sub-request-id": "1540197850899"
+                },
+                "action-identifiers": {
+                    "vnf-id": "50ac9605-ce63-442d-a103-80e9cf4753ca"
+                }
+            }
+        },
+        "cambria.partition": "APPC",
+        "rpc-name": "distribute-traffic",
+        "correlation-id": "c09ac7d1-de62-0016-2000-e63701125557-201",
+        "version": "2.0",
+        "type": "request"
+    }
diff --git a/docs/docs_vcpe_tosca.rst b/docs/docs_vcpe_tosca.rst
deleted file mode 100644
index faa4e75..0000000
--- a/docs/docs_vcpe_tosca.rst
+++ /dev/null
@@ -1,136 +0,0 @@
-vCPE of Tosca Use Case
-----------------------
-
-Source files
-~~~~~~~~~~~
-
-vCPE tosca file url: https://git.onap.org/demo/tree/tosca/vCPE
-
-5 VNFs are here for the ONAP vCPE use case. This VNFD is transformed manually from vCPE heat template.
-Please run "./generate_csar.sh" to create the CSAR package files for these 5 VNFS. CSAR package file is just a zip formatted file. If you want to use SRIOV SRIOV-NIC", please run "./generate_csar.sh sriov" to create the CSAR package files for SRIOV.
-
-
-Description
-~~~~~~~~~~
-
-The use case is composed of five virtual functions (VFs): Infrastructure including vDNS, vDHCP, vAAA(Authorization, Authentication, Accounting) and
-vWEB, vBNG(Virtual Broadband Network Gateway), vGMUX(Virtual Gateway Multiplexer), vBRGEMU(Bridged Residential Gateway) and vGW(Virtual Gateway).
-Infrastructure VF run in one VM. the other VFs run in separate four VMs. We will send much data from vBRGEMU to vGW. we need to accelarate it using SRIOV-NIC.
-
-
-Test Plan:
-~~~~~~~~~~~~~~~~~~
-
-The test plan 3 in https://wiki.onap.org/pages/viewpage.action?pageId=41421112.
-Test Plan 3: VF-C HPA testing
-This test plan covers the tests related to testing
-Support for the vCPE use case in VF-C
-
-Use vCPE (Infra, vGW, vBNG, vBRGEMU and vGMUX)
-
-Infra part of  policy asking for:
-::
-
-  2 vcpus
-  >= 2Gbytes of memory
-  > 40Gbytes of disk
-
-vGW part of policy asking for:
-::
-
-  2 vcpus
-  >=4Gbytes of memory
-  >= 40Gbytes of disk
-  Numa page size: 2Mbytes and pages 1024
-  with one SRIOV-NIC
-
-vBNG part of policy asking for:
-::
-
-  2 vcpus
-  >= 2Gbytes of memory
-  > 40Gbytes of disk
-  Numa page size: 2Mbytes and pages 1024
-  with one SRIOV-NIC
-
-vBGREMU part of policy asking for:
-::
-
-  2 vcpus
-  >= 2Gbytes of memory
-  >= 40Gbytes of disk
-  Numa page size: 2Mbytes and pages 1024
-  with one SRIOV-NIC
-
-vGMUX part of policy asking for:
-::
-
-  2 vcpus
-  >= 2Gbytes of memory
-  > 40Gbytes of disk
-  Numa page size: 2Mbytes and pages 1024
-  with one SRIOV-NIC
-
-Instantiate the VNF
-Check for results:
-It would have selected flavor13 for vGW, vBNG, vBRGEMU and vGMUX VMs. It would have selected flavor13 and flavor12 for Infrastructure.
-
-Test Steps:
-~~~~~~~~~~
-
-VIM Configuration:
-^^^^^^^^^^^^^^^^^^
-
-If you want to use SRIOV-NIC, you need first config SRIOV NIC to refer to [1].
-[1] https://docs.openstack.org/ocata/networking-guide/config-sriov.html
-
-ONAP managing 1 cloud-region which have three flavors.
-Flavor 11:
-2 vcpus, 1 Gbytes of memory, 20Gb disk
-Numa page size: 2Mbytes and number pages 512
-::
-
-  openstack flavor create onap.hpa.flavor11 -id auto --ram 1024 --disk 20 --vcpus 2
-
-Flavor 12:
-2 vcpus, 2 Gbytes of memory, 20Gb disk
-Numa page size: 2Mbytes and number pages 1024
-::
-
-  openstack flavor create onap.hpa.flavor12 -id auto --ram 2048 --disk 20 --vcpus 2
-
-Flavor 13:
-2 vcpus, 4 Gbytes of memory, 20Gb disk
-Huge page size: 2Mbytes and number pages 2048
-1 SRIOV-NIC VF
-::
-
-  openstack flavor create onap.hpa.flavor13 -id auto --ram 4096 --disk 20 -vcpus 2
-  openstack flavor set onap.hpa.flavor11 --property aggregate_instance_extra_specs:sriov_nic=sriov-nic-intel-1234-5678-physnet1:1
-  openstack aggregate create --property sriov_nic=sriov-nic-intel-1234-5678-physnet1:1 hpa_aggr11
-
-comments: you must change 1234 and 5678 to real vendor id and product id. you also need change physnet1 to the provider network.
-
-Policy Configuration:
-^^^^^^^^^^^^^^^^^^^^^
-
-After the patch https://gerrit.onap.org/r/#/c/73502/ is merged. With the generated policy and do some manually update as follows, the service could be distributed successfully and the Policy/VFC/OOF could work as excepted.
-
-- Need manually modify policy item because the “vendor id” and “PCI device id” and “architecture” must be changed in different VIMs since we have different PCI devices in different VIMs
-- The value of mandatory in CSAR is “true”, OOF is case intensive, it needs to use “True”. Have to update it. suggest OOF to use ignoreCase in R4.
-- The attribute key in CSAR is pciNumDevices, but the responding one in OOF/Mutlicloud is pciCount.  Suggest keeping alignment in R4.
-- The policy scope has to add a value “us” into it which is a configuration issue in OOF side. Policy side also need do improvement to deal with policy scope automatically append instead of replacement so such policy could be used by several services at the same time.
-
-
-Running the Use Case
-~~~~~~~~~~~~~~~~~~~
-
-We design vCPE in SDC and distribute it to VFC and Policy and UUI. We can click onboarding VNF and onboarding NS. we can instance it.
-
-Known issues and resolution
-~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-- Some SDC NS data model is not aligned to VFC NS data model, VFC NS also according to ETSI SOL0001. we also can refer to https://jira.onap.org/browse/SDC-1897. we have a workaround for this issue, we put the service as artifact file and distribute to VFC.
-- NFV Tosca parser bug https://jira.opnfv.org/browse/PARSER-187. we also filed a bug in VFC https://jira.onap.org/browse/VFC-1196.
-- 'artifacts' definition is missing in the exported csar's VDU node, we also can refer to https://jira.onap.org/browse/SDC-1900. It’s a very hacky workaround in VFC’s GVFNM. Because currently the only use case will use GVFNM is vCPE, which only uses the ubuntu16.04 image, so GVFNM just makes the ubuntu16.04 image as the default if the "sw_image" artifact is missing in the SDC’s exported CSAR.
-- OOF patch https://gerrit.onap.org/r/#/c/73332/ is not accepted by 1.2.4 image.It will be accepted by 1.2.5 image. but 1.2.5 image is not release. If you want to use it, you can use 1.2.5-SNAPSHOT-latest. If you use 1.2.4 image, you also need to modify code according to the patch.
diff --git a/docs/files/cdt-request-input.xlsx b/docs/files/cdt-request-input.xlsx
new file mode 100755
index 0000000..2d34985
--- /dev/null
+++ b/docs/files/cdt-request-input.xlsx
Binary files differ
diff --git a/docs/files/figure1.png b/docs/files/figure1.png
new file mode 100755
index 0000000..068e9e5
--- /dev/null
+++ b/docs/files/figure1.png
Binary files differ
diff --git a/docs/files/figure10.png b/docs/files/figure10.png
new file mode 100755
index 0000000..2cc9f8e
--- /dev/null
+++ b/docs/files/figure10.png
Binary files differ
diff --git a/docs/files/figure11.png b/docs/files/figure11.png
new file mode 100755
index 0000000..b9160b1
--- /dev/null
+++ b/docs/files/figure11.png
Binary files differ
diff --git a/docs/files/figure12.png b/docs/files/figure12.png
new file mode 100755
index 0000000..fb4b28c
--- /dev/null
+++ b/docs/files/figure12.png
Binary files differ
diff --git a/docs/files/figure13.png b/docs/files/figure13.png
new file mode 100755
index 0000000..9ad7295
--- /dev/null
+++ b/docs/files/figure13.png
Binary files differ
diff --git a/docs/files/figure2.png b/docs/files/figure2.png
new file mode 100755
index 0000000..7257eee
--- /dev/null
+++ b/docs/files/figure2.png
Binary files differ
diff --git a/docs/files/figure3.png b/docs/files/figure3.png
new file mode 100755
index 0000000..ded9a67
--- /dev/null
+++ b/docs/files/figure3.png
Binary files differ
diff --git a/docs/files/figure4.png b/docs/files/figure4.png
new file mode 100755
index 0000000..6b9eda7
--- /dev/null
+++ b/docs/files/figure4.png
Binary files differ
diff --git a/docs/files/figure5.png b/docs/files/figure5.png
new file mode 100755
index 0000000..1a8bcbf
--- /dev/null
+++ b/docs/files/figure5.png
Binary files differ
diff --git a/docs/files/figure6.png b/docs/files/figure6.png
new file mode 100755
index 0000000..adb8650
--- /dev/null
+++ b/docs/files/figure6.png
Binary files differ
diff --git a/docs/files/figure7.png b/docs/files/figure7.png
new file mode 100755
index 0000000..9887a87
--- /dev/null
+++ b/docs/files/figure7.png
Binary files differ
diff --git a/docs/files/figure8.png b/docs/files/figure8.png
new file mode 100755
index 0000000..4de0563
--- /dev/null
+++ b/docs/files/figure8.png
Binary files differ
diff --git a/docs/files/figure9.png b/docs/files/figure9.png
new file mode 100755
index 0000000..cc97cae
--- /dev/null
+++ b/docs/files/figure9.png
Binary files differ
diff --git a/docs/files/vfw-1-preload.json b/docs/files/vfw-1-preload.json
new file mode 100644
index 0000000..e58f9d5
--- /dev/null
+++ b/docs/files/vfw-1-preload.json
@@ -0,0 +1,144 @@
+{
+     "input": {
+          "request-information": {
+               "notification-url": "openecomp.org",
+               "order-number": "1",
+               "order-version": "1",
+               "request-action": "PreloadVNFRequest",
+               "request-id": "robot12"
+          },
+          "sdnc-request-header": {
+               "svc-action": "reserve",
+               "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+               "svc-request-id": "robot12"
+          },
+          "vnf-topology-information": {
+               "vnf-assignments": {
+                    "availability-zones": [],
+                    "vnf-networks": [],
+                    "vnf-vms": []
+               },
+               "vnf-parameters":
+               [{
+                         "vnf-parameter-name": "unprotected_private_net_id",
+                         "vnf-parameter-value": "unprotected_net_dt"
+                    }, {
+                         "vnf-parameter-name": "unprotected_private_subnet_id",
+                         "vnf-parameter-value": "unprotected_subnet_dt"
+                    }, {
+                         "vnf-parameter-name": "unprotected_private_net_cidr",
+                         "vnf-parameter-value": "192.168.10.0/24"
+                    }, {
+                         "vnf-parameter-name": "protected_private_net_id",
+                         "vnf-parameter-value": "protected_net_dt"
+                    }, {
+                         "vnf-parameter-name": "protected_private_net_cidr",
+                         "vnf-parameter-value": "192.168.20.0/24"
+                    }, {
+                         "vnf-parameter-name": "protected_private_subnet_id",
+                         "vnf-parameter-value": "protected_subnet_dt"
+                    }, {
+                         "vnf-parameter-name": "key_name",
+                         "vnf-parameter-value": "vfw_key"
+                    }, {
+                         "vnf-parameter-name": "cloud_env",
+                         "vnf-parameter-value": "openstack"
+                    }, {
+                         "vnf-parameter-name": "vsn_name_0",
+                         "vnf-parameter-value": "vfw-vsn-1-dt"
+                    }, {
+                         "vnf-parameter-name": "onap_private_net_id",
+                         "vnf-parameter-value": "oam_onap_y3id"
+                    }, {
+                         "vnf-parameter-name": "onap_private_subnet_id",
+                         "vnf-parameter-value": "oam_onap_y3id"
+                    }, {
+                         "vnf-parameter-name": "onap_private_net_cidr",
+                         "vnf-parameter-value": "10.0.0.0/16"
+                    }, {
+                         "vnf-parameter-name": "ext_private_net_id",
+                         "vnf-parameter-value": "onap_oam_ext"
+                    }, {
+                         "vnf-parameter-name": "ext_private_subnet_id",
+                         "vnf-parameter-value": "onap_oam_ext_sub"
+                    }, {
+                         "vnf-parameter-name": "ext_private_net_cidr",
+                         "vnf-parameter-value": "10.100.0.0/16"
+                    }, {
+                         "vnf-parameter-name": "repo_url_artifacts",
+                         "vnf-parameter-value": "https://nexus.onap.org/content/repositories/releases"
+                    }, {
+                         "vnf-parameter-name": "repo_url_blob",
+                         "vnf-parameter-value": "https://nexus.onap.org/content/repositories/raw"
+                    }, {
+                         "vnf-parameter-name": "vfw_name_0",
+                         "vnf-parameter-value": "vfw-vfw-1-dt"
+                    }, {
+                         "vnf-parameter-name": "dcae_collector_port",
+                         "vnf-parameter-value": "8080"
+                    }, {
+                         "vnf-parameter-name": "public_net_id",
+                         "vnf-parameter-value": "external"
+                    }, {
+                         "vnf-parameter-name": "image_name",
+                         "vnf-parameter-value": "ubuntu-14-04-cloud-amd64"
+                    }, {
+                         "vnf-parameter-name": "flavor_name",
+                         "vnf-parameter-value": "m1.medium"
+                    }, {
+                         "vnf-parameter-name": "install_script_version",
+                         "vnf-parameter-value": "1.2.1"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_0",
+                         "vnf-parameter-value": "192.168.10.100"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_1",
+                         "vnf-parameter-value": "192.168.20.100"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_2",
+                         "vnf-parameter-value": "10.0.110.1"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_3",
+                         "vnf-parameter-value": "10.100.100.1"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_0",
+                         "vnf-parameter-value": "192.168.10.200"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_1",
+                         "vnf-parameter-value": "10.0.110.2"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_2",
+                         "vnf-parameter-value": "10.100.100.2"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_1",
+                         "vnf-parameter-value": "10.0.110.3"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_0",
+                         "vnf-parameter-value": "192.168.20.250"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_2",
+                         "vnf-parameter-value": "10.100.100.3"
+                    }, {
+                         "vnf-parameter-name": "demo_artifacts_version",
+                         "vnf-parameter-value": "1.2.1"
+                    }, {
+                         "vnf-parameter-name": "pub_key",
+                         "vnf-parameter-value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6KbTxfT368DNBzLyfTYJ0INI7mkRXc/xMpx349TXGBTQ06g2toN/p9OM188EGZd/qERRXcdnKY8lYULVIXZEoQbXTus2gTQWXy1zn5nhSkhste3L1uG+sjHySQHBj5NyOC32iNehRNu03bHi8XRBAOHZsXx6JpkltLXgWqQI91+h9i7I/4trpPyODtzz1DLIkbXv9woncwllKf4bmm+Bk6/OJKHuAlBdCLL5diZqODEZlKOyPPC9c07a835sskMgbscPrvBQigZFRNerjQlFXXCHjRwoBMvfS7kD7/R/K1fmSLtH0w4VEp5iwS9SIezgEeO2aDFPucmYG4MQDGzAz"
+                    }, {
+                         "vnf-parameter-name": "dcae_collector_ip",
+                         "vnf-parameter-value": "10.0.4.1"
+                    }, {
+                         "vnf-parameter-name": "sec_group",
+                         "vnf-parameter-value": "onap_sg_y3id"
+                    }
+               ],
+               "vnf-topology-identifier": {
+                    "service-type": "1c38ef10-0f14-4d78-876c-3cc10ff4e535",
+                    "vnf-type": "VfwsnkDistributetraffic..base_vfw..module-0",
+                    "generic-vnf-name": "vfw-vsnk-dt-1",
+                    "generic-vnf-type": "vFWSNK-DistributeTraffic 0",
+                    "vnf-name": "vfw-dt-module-1"
+               }
+          }
+     }
+}
diff --git a/docs/files/vfw-2-preload.json b/docs/files/vfw-2-preload.json
new file mode 100644
index 0000000..a746754
--- /dev/null
+++ b/docs/files/vfw-2-preload.json
@@ -0,0 +1,144 @@
+{
+     "input": {
+          "request-information": {
+               "notification-url": "openecomp.org",
+               "order-number": "1",
+               "order-version": "1",
+               "request-action": "PreloadVNFRequest",
+               "request-id": "robot12"
+          },
+          "sdnc-request-header": {
+               "svc-action": "reserve",
+               "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+               "svc-request-id": "robot12"
+          },
+          "vnf-topology-information": {
+               "vnf-assignments": {
+                    "availability-zones": [],
+                    "vnf-networks": [],
+                    "vnf-vms": []
+               },
+               "vnf-parameters":
+               [{
+                         "vnf-parameter-name": "unprotected_private_net_id",
+                         "vnf-parameter-value": "unprotected_net_dt"
+                    }, {
+                         "vnf-parameter-name": "unprotected_private_subnet_id",
+                         "vnf-parameter-value": "unprotected_subnet_dt"
+                    }, {
+                         "vnf-parameter-name": "unprotected_private_net_cidr",
+                         "vnf-parameter-value": "192.168.10.0/24"
+                    }, {
+                         "vnf-parameter-name": "protected_private_net_id",
+                         "vnf-parameter-value": "protected_net_dt"
+                    }, {
+                         "vnf-parameter-name": "protected_private_net_cidr",
+                         "vnf-parameter-value": "192.168.20.0/24"
+                    }, {
+                         "vnf-parameter-name": "protected_private_subnet_id",
+                         "vnf-parameter-value": "protected_subnet_dt"
+                    }, {
+                         "vnf-parameter-name": "key_name",
+                         "vnf-parameter-value": "vfw_key"
+                    }, {
+                         "vnf-parameter-name": "cloud_env",
+                         "vnf-parameter-value": "openstack"
+                    }, {
+                         "vnf-parameter-name": "vsn_name_0",
+                         "vnf-parameter-value": "vfw-vsn-2-dt"
+                    }, {
+                         "vnf-parameter-name": "onap_private_net_id",
+                         "vnf-parameter-value": "oam_onap_y3id"
+                    }, {
+                         "vnf-parameter-name": "onap_private_subnet_id",
+                         "vnf-parameter-value": "oam_onap_y3id"
+                    }, {
+                         "vnf-parameter-name": "onap_private_net_cidr",
+                         "vnf-parameter-value": "10.0.0.0/16"
+                    }, {
+                         "vnf-parameter-name": "ext_private_net_id",
+                         "vnf-parameter-value": "onap_oam_ext"
+                    }, {
+                         "vnf-parameter-name": "ext_private_subnet_id",
+                         "vnf-parameter-value": "onap_oam_ext_sub"
+                    }, {
+                         "vnf-parameter-name": "ext_private_net_cidr",
+                         "vnf-parameter-value": "10.100.0.0/16"
+                    }, {
+                         "vnf-parameter-name": "repo_url_artifacts",
+                         "vnf-parameter-value": "https://nexus.onap.org/content/repositories/releases"
+                    }, {
+                         "vnf-parameter-name": "repo_url_blob",
+                         "vnf-parameter-value": "https://nexus.onap.org/content/repositories/raw"
+                    }, {
+                         "vnf-parameter-name": "vfw_name_0",
+                         "vnf-parameter-value": "vfw-vfw-2-dt"
+                    }, {
+                         "vnf-parameter-name": "dcae_collector_port",
+                         "vnf-parameter-value": "8080"
+                    }, {
+                         "vnf-parameter-name": "public_net_id",
+                         "vnf-parameter-value": "external"
+                    }, {
+                         "vnf-parameter-name": "image_name",
+                         "vnf-parameter-value": "ubuntu-14-04-cloud-amd64"
+                    }, {
+                         "vnf-parameter-name": "flavor_name",
+                         "vnf-parameter-value": "m1.medium"
+                    }, {
+                         "vnf-parameter-name": "install_script_version",
+                         "vnf-parameter-value": "1.2.1"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_0",
+                         "vnf-parameter-value": "192.168.10.110"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_1",
+                         "vnf-parameter-value": "192.168.20.110"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_2",
+                         "vnf-parameter-value": "10.0.110.4"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_3",
+                         "vnf-parameter-value": "10.100.100.4"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_0",
+                         "vnf-parameter-value": "192.168.10.200"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_1",
+                         "vnf-parameter-value": "10.0.110.2"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_2",
+                         "vnf-parameter-value": "10.100.100.2"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_1",
+                         "vnf-parameter-value": "10.0.110.5"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_0",
+                         "vnf-parameter-value": "192.168.20.240"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_2",
+                         "vnf-parameter-value": "10.100.100.5"
+                    }, {
+                         "vnf-parameter-name": "demo_artifacts_version",
+                         "vnf-parameter-value": "1.2.1"
+                    }, {
+                         "vnf-parameter-name": "pub_key",
+                         "vnf-parameter-value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6KbTxfT368DNBzLyfTYJ0INI7mkRXc/xMpx349TXGBTQ06g2toN/p9OM188EGZd/qERRXcdnKY8lYULVIXZEoQbXTus2gTQWXy1zn5nhSkhste3L1uG+sjHySQHBj5NyOC32iNehRNu03bHi8XRBAOHZsXx6JpkltLXgWqQI91+h9i7I/4trpPyODtzz1DLIkbXv9woncwllKf4bmm+Bk6/OJKHuAlBdCLL5diZqODEZlKOyPPC9c07a835sskMgbscPrvBQigZFRNerjQlFXXCHjRwoBMvfS7kD7/R/K1fmSLtH0w4VEp5iwS9SIezgEeO2aDFPucmYG4MQDGzAz"
+                    }, {
+                         "vnf-parameter-name": "dcae_collector_ip",
+                         "vnf-parameter-value": "10.0.4.1"
+                    }, {
+                         "vnf-parameter-name": "sec_group",
+                         "vnf-parameter-value": "onap_sg_y3id"
+                    }
+               ],
+               "vnf-topology-identifier": {
+                    "service-type": "1c38ef10-0f14-4d78-876c-3cc10ff4e535",
+                    "vnf-type": "VfwsnkDistributetraffic..base_vfw..module-0",
+                    "generic-vnf-name": "vfw-vsnk-dt-2",
+                    "generic-vnf-type": "vFWSNK-DistributeTraffic 1",
+                    "vnf-name": "vfw-dt-module-2"
+               }
+          }
+     }
+}
diff --git a/docs/files/vpkg-preload.json b/docs/files/vpkg-preload.json
new file mode 100644
index 0000000..bf76f99
--- /dev/null
+++ b/docs/files/vpkg-preload.json
@@ -0,0 +1,144 @@
+{
+     "input": {
+          "request-information": {
+               "notification-url": "openecomp.org",
+               "order-number": "1",
+               "order-version": "1",
+               "request-action": "PreloadVNFRequest",
+               "request-id": "robot12"
+          },
+          "sdnc-request-header": {
+               "svc-action": "reserve",
+               "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+               "svc-request-id": "robot12"
+          },
+          "vnf-topology-information": {
+               "vnf-assignments": {
+                    "availability-zones": [],
+                    "vnf-networks": [],
+                    "vnf-vms": []
+               },
+               "vnf-parameters":
+               [{
+                         "vnf-parameter-name": "unprotected_private_net_id",
+                         "vnf-parameter-value": "unprotected_net_dt"
+                    }, {
+                         "vnf-parameter-name": "unprotected_private_subnet_id",
+                         "vnf-parameter-value": "unprotected_subnet_dt"
+                    }, {
+                         "vnf-parameter-name": "unprotected_private_net_cidr",
+                         "vnf-parameter-value": "192.168.10.0/24"
+                    }, {
+                         "vnf-parameter-name": "protected_private_net_id",
+                         "vnf-parameter-value": "protected_net_dt"
+                    }, {
+                         "vnf-parameter-name": "protected_private_net_cidr",
+                         "vnf-parameter-value": "192.168.20.0/24"
+                    }, {
+                         "vnf-parameter-name": "protected_private_subnet_id",
+                         "vnf-parameter-value": "protected_subnet_dt"
+                    }, {
+                         "vnf-parameter-name": "key_name",
+                         "vnf-parameter-value": "vfw_key"
+                    }, {
+                         "vnf-parameter-name": "cloud_env",
+                         "vnf-parameter-value": "openstack"
+                    }, {
+                         "vnf-parameter-name": "vsn_name_0",
+                         "vnf-parameter-value": "vfw-vsn-0-dt"
+                    }, {
+                         "vnf-parameter-name": "onap_private_net_id",
+                         "vnf-parameter-value": "oam_onap_y3id"
+                    }, {
+                         "vnf-parameter-name": "onap_private_subnet_id",
+                         "vnf-parameter-value": "oam_onap_y3id"
+                    }, {
+                         "vnf-parameter-name": "onap_private_net_cidr",
+                         "vnf-parameter-value": "10.0.0.0/16"
+                    }, {
+                         "vnf-parameter-name": "ext_private_net_id",
+                         "vnf-parameter-value": "onap_oam_ext"
+                    }, {
+                         "vnf-parameter-name": "ext_private_subnet_id",
+                         "vnf-parameter-value": "onap_oam_ext_sub"
+                    }, {
+                         "vnf-parameter-name": "ext_private_net_cidr",
+                         "vnf-parameter-value": "10.100.0.0/16"
+                    }, {
+                         "vnf-parameter-name": "repo_url_artifacts",
+                         "vnf-parameter-value": "https://nexus.onap.org/content/repositories/releases"
+                    }, {
+                         "vnf-parameter-name": "repo_url_blob",
+                         "vnf-parameter-value": "https://nexus.onap.org/content/repositories/raw"
+                    }, {
+                         "vnf-parameter-name": "vfw_name_0",
+                         "vnf-parameter-value": "vfw-vfw-0-dt"
+                    }, {
+                         "vnf-parameter-name": "dcae_collector_port",
+                         "vnf-parameter-value": "8080"
+                    }, {
+                         "vnf-parameter-name": "public_net_id",
+                         "vnf-parameter-value": "external"
+                    }, {
+                         "vnf-parameter-name": "image_name",
+                         "vnf-parameter-value": "ubuntu-14-04-cloud-amd64"
+                    }, {
+                         "vnf-parameter-name": "flavor_name",
+                         "vnf-parameter-value": "m1.medium"
+                    }, {
+                         "vnf-parameter-name": "install_script_version",
+                         "vnf-parameter-value": "1.2.1"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_0",
+                         "vnf-parameter-value": "192.168.10.100"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_1",
+                         "vnf-parameter-value": "192.168.20.100"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_2",
+                         "vnf-parameter-value": "10.0.110.1"
+                    }, {
+                         "vnf-parameter-name": "vfw_private_ip_3",
+                         "vnf-parameter-value": "10.100.100.1"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_0",
+                         "vnf-parameter-value": "192.168.10.200"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_1",
+                         "vnf-parameter-value": "10.0.110.2"
+                    }, {
+                         "vnf-parameter-name": "vpg_private_ip_2",
+                         "vnf-parameter-value": "10.100.100.2"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_1",
+                         "vnf-parameter-value": "10.0.110.3"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_0",
+                         "vnf-parameter-value": "192.168.20.250"
+                    }, {
+                         "vnf-parameter-name": "vsn_private_ip_2",
+                         "vnf-parameter-value": "10.100.100.3"
+                    }, {
+                         "vnf-parameter-name": "demo_artifacts_version",
+                         "vnf-parameter-value": "1.2.1"
+                    }, {
+                         "vnf-parameter-name": "pub_key",
+                         "vnf-parameter-value": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC6KbTxfT368DNBzLyfTYJ0INI7mkRXc/xMpx349TXGBTQ06g2toN/p9OM188EGZd/qERRXcdnKY8lYULVIXZEoQbXTus2gTQWXy1zn5nhSkhste3L1uG+sjHySQHBj5NyOC32iNehRNu03bHi8XRBAOHZsXx6JpkltLXgWqQI91+h9i7I/4trpPyODtzz1DLIkbXv9woncwllKf4bmm+Bk6/OJKHuAlBdCLL5diZqODEZlKOyPPC9c07a835sskMgbscPrvBQigZFRNerjQlFXXCHjRwoBMvfS7kD7/R/K1fmSLtH0w4VEp5iwS9SIezgEeO2aDFPucmYG4MQDGzAz"
+                    }, {
+                         "vnf-parameter-name": "dcae_collector_ip",
+                         "vnf-parameter-value": "10.0.4.1"
+                    }, {
+                         "vnf-parameter-name": "sec_group",
+                         "vnf-parameter-value": "onap_sg_y3id"
+                    }
+               ],
+               "vnf-topology-identifier": {
+                    "service-type": "1c38ef10-0f14-4d78-876c-3cc10ff4e535",
+                    "vnf-type": "VpkgDistributetraffic..base_vpkg..module-0",
+                    "generic-vnf-name": "vpkg-dt-1",
+                    "generic-vnf-type": "vPKG-DistributeTraffic 0",
+                    "vnf-name": "vpkg-dt-module-1"
+               }
+          }
+     }
+}