aboutsummaryrefslogtreecommitdiffstats
path: root/robot/assets
diff options
context:
space:
mode:
authorDR695H <dr695h@att.com>2017-02-17 18:44:24 -0500
committerDR695H <dr695h@att.com>2017-02-17 18:44:41 -0500
commitccff30b6e325f359879595998e83bbfe6624c851 (patch)
treec98f950f33baa71d21b091b6b10ca3ffb7700467 /robot/assets
parent234c2226d8cb3368a7af3d280a5ec280782bed63 (diff)
Initial checkin of EopenECOMP testsuite
Change-Id: I64a2b6d8cf66169829866b73b3d26a4ff59b0a42 Signed-off-by: DR695H <dr695h@att.com>
Diffstat (limited to 'robot/assets')
-rw-r--r--robot/assets/asdc/.gitignore1
-rw-r--r--robot/assets/asdc/base_vfw/MANIFEST.json17
-rw-r--r--robot/assets/asdc/base_vfw/base_vfw.env4
-rw-r--r--robot/assets/asdc/base_vfw/base_vfw.yaml423
-rw-r--r--robot/assets/asdc/base_vlb/MANIFEST.json28
-rw-r--r--robot/assets/asdc/base_vlb/base_vlb.env4
-rw-r--r--robot/assets/asdc/base_vlb/base_vlb.yaml330
-rw-r--r--robot/assets/asdc/base_vlb/dnsscaling.env4
-rw-r--r--robot/assets/asdc/base_vlb/dnsscaling.yaml182
-rw-r--r--robot/assets/asdc/base_vvg/MANIFEST.json17
-rw-r--r--robot/assets/asdc/base_vvg/base_vvg.env3
-rw-r--r--robot/assets/asdc/base_vvg/base_vvg.yaml22
-rw-r--r--robot/assets/dcae/dcae_healthcheck.json5
-rw-r--r--robot/assets/keys/ecompdemo.pvt30
-rw-r--r--robot/assets/keys/robot_ssh_private_key.ppk26
-rw-r--r--robot/assets/keys/robot_ssh_private_key.pvt27
-rw-r--r--robot/assets/keys/robot_ssh_public_key.pub9
-rw-r--r--robot/assets/keys/robot_ssh_public_key.txt1
-rw-r--r--robot/assets/service_mappings.py29
-rw-r--r--robot/assets/templates/aai/add_cloud_region_body.template15
-rw-r--r--robot/assets/templates/aai/add_customer.template25
-rw-r--r--robot/assets/templates/aai/add_service_body.template6
-rw-r--r--robot/assets/templates/aai/add_tenant_body.template17
-rw-r--r--robot/assets/templates/aai/named_query.template17
-rw-r--r--robot/assets/templates/aai/service_subscription.template19
-rw-r--r--robot/assets/templates/aai/vlb_closed_loop_hack.template7
-rw-r--r--robot/assets/templates/appc/vnf_mount.template16
-rw-r--r--robot/assets/templates/asdc/action.template3
-rw-r--r--robot/assets/templates/asdc/catalog_resource.template43
-rw-r--r--robot/assets/templates/asdc/catalog_service.template34
-rw-r--r--robot/assets/templates/asdc/entitlement_pool.template26
-rw-r--r--robot/assets/templates/asdc/feature_group.template11
-rw-r--r--robot/assets/templates/asdc/key_group.template11
-rw-r--r--robot/assets/templates/asdc/license_agreement.template12
-rw-r--r--robot/assets/templates/asdc/license_model.template5
-rw-r--r--robot/assets/templates/asdc/resource_instance.template10
-rw-r--r--robot/assets/templates/asdc/software_product.template16
-rw-r--r--robot/assets/templates/asdc/user_remarks.template1
-rw-r--r--robot/assets/templates/cinder_add_volume.template9
-rw-r--r--robot/assets/templates/heat_add_stack.template12
-rw-r--r--robot/assets/templates/keystone_get_auth.template8
-rw-r--r--robot/assets/templates/neutron_add_network.template7
-rw-r--r--robot/assets/templates/neutron_add_subnet.template8
-rw-r--r--robot/assets/templates/nova_add_keypair.template6
-rw-r--r--robot/assets/templates/nova_add_server.template17
-rw-r--r--robot/assets/templates/policy/closedloop_configpolicy.template31
-rw-r--r--robot/assets/templates/policy/closedloop_createpolicy.template21
-rw-r--r--robot/assets/templates/policy/closedloop_deletepolicy.template5
-rw-r--r--robot/assets/templates/policy/closedloop_getconfigpolicy.template8
-rw-r--r--robot/assets/templates/policy/closedloop_opspolicy.template25
-rw-r--r--robot/assets/templates/policy/closedloop_pushpolicy.template5
-rw-r--r--robot/assets/templates/sdnc/dnsscaling_preload.template96
-rw-r--r--robot/assets/templates/sdnc/vfw_preload.template132
-rw-r--r--robot/assets/templates/sdnc/vlb_preload.template108
-rw-r--r--robot/assets/templates/sdnc/vvg_preload.template36
-rw-r--r--robot/assets/templates/template_example.template6
-rw-r--r--robot/assets/templates/vfw_pg_stream_enable.template4
-rw-r--r--robot/assets/templates/vfw_pg_streams_enable.template7
58 files changed, 2007 insertions, 0 deletions
diff --git a/robot/assets/asdc/.gitignore b/robot/assets/asdc/.gitignore
new file mode 100644
index 00000000..abe251a7
--- /dev/null
+++ b/robot/assets/asdc/.gitignore
@@ -0,0 +1 @@
+/temp \ No newline at end of file
diff --git a/robot/assets/asdc/base_vfw/MANIFEST.json b/robot/assets/asdc/base_vfw/MANIFEST.json
new file mode 100644
index 00000000..a4e5cfd0
--- /dev/null
+++ b/robot/assets/asdc/base_vfw/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "virtualFireWall",
+ "description": "robot ete manifest",
+ "data": [
+ {
+ "file": "base_vfw.yaml",
+ "type": "HEAT",
+ "isBase": "true",
+ "data": [
+ {
+ "file": "base_vfw.env",
+ "type": "HEAT_ENV"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/robot/assets/asdc/base_vfw/base_vfw.env b/robot/assets/asdc/base_vfw/base_vfw.env
new file mode 100644
index 00000000..f7d2c803
--- /dev/null
+++ b/robot/assets/asdc/base_vfw/base_vfw.env
@@ -0,0 +1,4 @@
+parameters:
+ vfw_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
+ vfw_flavor_name: 4 GB General Purpose v1
+ public_net_id: 00000000-0000-0000-0000-000000000000 \ No newline at end of file
diff --git a/robot/assets/asdc/base_vfw/base_vfw.yaml b/robot/assets/asdc/base_vfw/base_vfw.yaml
new file mode 100644
index 00000000..076a8340
--- /dev/null
+++ b/robot/assets/asdc/base_vfw/base_vfw.yaml
@@ -0,0 +1,423 @@
+heat_template_version: 2013-05-23
+
+description: Heat template to deploy vFirewall demo app for OpenECOMP
+
+parameters:
+ vfw_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ vfw_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ public_net_id:
+ type: string
+ label: Public network name or ID
+ description: Public network that enables remote connection to VNF
+ unprotected_private_net_id:
+ type: string
+ label: Unprotected private network name or ID
+ description: Private network that connects vPacketGenerator with vFirewall
+ protected_private_net_id:
+ type: string
+ label: Protected private network name or ID
+ description: Private network that connects vFirewall with vSink
+ ecomp_private_net_id:
+ type: string
+ label: ECOMP management network name or ID
+ description: Private network that connects ECOMP component and the VNF
+ ecomp_private_subnet_id:
+ type: string
+ label: ECOMP management sub-network name or ID
+ description: Private sub-network that connects ECOMP component and the VNF
+ unprotected_private_net_cidr:
+ type: string
+ label: Unprotected private network CIDR
+ description: The CIDR of the unprotected private network
+ protected_private_net_cidr:
+ type: string
+ label: Protected private network CIDR
+ description: The CIDR of the protected private network
+ ecomp_private_net_cidr:
+ type: string
+ label: ECOMP private network CIDR
+ description: The CIDR of the protected private network
+ vfw_private_ip_0:
+ type: string
+ label: vFirewall private IP address towards the unprotected network
+ description: Private IP address that is assigned to the vFirewall to communicate with the vPacketGenerator
+ vfw_private_ip_1:
+ type: string
+ label: vFirewall private IP address towards the protected network
+ description: Private IP address that is assigned to the vFirewall to communicate with the vSink
+ vfw_private_ip_2:
+ type: string
+ label: vFirewall private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vFirewall to communicate with ECOMP components
+ vpg_private_ip_0:
+ type: string
+ label: vPacketGenerator private IP address towards the unprotected network
+ description: Private IP address that is assigned to the vPacketGenerator to communicate with the vFirewall
+ vpg_private_ip_1:
+ type: string
+ label: vPacketGenerator private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vPacketGenerator to communicate with ECOMP components
+ vsn_private_ip_0:
+ type: string
+ label: vSink private IP address towards the protected network
+ description: Private IP address that is assigned to the vSink to communicate with the vFirewall
+ vsn_private_ip_1:
+ type: string
+ label: vSink private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vSink to communicate with ECOMP components
+ vfw_name_0:
+ type: string
+ label: vFirewall name
+ description: Name of the vFirewall
+ vpg_name_0:
+ type: string
+ label: vPacketGenerator name
+ description: Name of the vPacketGenerator
+ vsn_name_0:
+ type: string
+ label: vSink name
+ description: Name of the vSink
+ vnf_id:
+ type: string
+ label: VNF ID
+ description: The VNF ID is provided by ECOMP
+ vf_module_id:
+ type: string
+ label: vFirewall module ID
+ description: The vFirewall Module ID is provided by ECOMP
+ webserver_ip:
+ type: string
+ label: Webserver IP address
+ description: IP address of the webserver that hosts the source code and binaries
+ dcae_collector_ip:
+ type: string
+ label: DCAE collector IP address
+ description: IP address of the DCAE collector
+ dcae_collector_port:
+ type: string
+ label: DCAE collector port
+ description: Port of the DCAE collector
+ key_name:
+ type: string
+ label: Key pair name
+ description: Public/Private key pair name
+ pub_key:
+ type: string
+ label: Public key
+ description: Public key to be installed on the compute instance
+ repo_user:
+ type: string
+ label: Repository username
+ description: Username to access the repository that hosts the demo packages
+ repo_passwd:
+ type: string
+ label: Repository password
+ description: Password to access the repository that hosts the demo packages
+ repo_url:
+ type: string
+ label: Repository URL
+ description: URL of the repository that hosts the demo packages
+
+resources:
+ my_keypair:
+ type: OS::Nova::KeyPair
+ properties:
+ name: { get_param: key_name }
+ public_key: { get_param: pub_key }
+ save_private_key: false
+
+ unprotected_private_network:
+ type: OS::Neutron::Net
+ properties:
+ name: { get_param: unprotected_private_net_id }
+
+ protected_private_network:
+ type: OS::Neutron::Net
+ properties:
+ name: { get_param: protected_private_net_id }
+
+ unprotected_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: unprotected_private_network }
+ cidr: { get_param: unprotected_private_net_cidr }
+
+ protected_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ network_id: { get_resource: protected_private_network }
+ cidr: { get_param: protected_private_net_cidr }
+
+ vfw_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vfw_image_name }
+ flavor: { get_param: vfw_flavor_name }
+ name: { get_param: vfw_name_0 }
+ key_name: { get_resource: my_keypair }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vfw_private_0_port }
+ - port: { get_resource: vfw_private_1_port }
+ - port: { get_resource: vfw_private_2_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __webserver__: { get_param: webserver_ip }
+ __dcae_collector_ip__ : { get_param: dcae_collector_ip }
+ __dcae_collector_port__ : { get_param: dcae_collector_port }
+ __repo_url__ : { get_param: repo_url }
+ __repo_user__ : { get_param: repo_user }
+ __repo_passwd__ : { get_param: repo_passwd }
+ template: |
+ #!/bin/bash
+
+ WEBSERVER_IP=__webserver__
+ DCAE_COLLECTOR_IP=__dcae_collector_ip__
+ DCAE_COLLECTOR_PORT=__dcae_collector_port__
+ REPO_URL=__repo_url__
+ REPO_USER=__repo_user__
+ REPO_PASSWD=__repo_passwd__
+
+ # Download required dependencies
+ add-apt-repository -y ppa:openjdk-r/ppa
+ apt-get update
+ apt-get install -y make wget openjdk-8-jdk gcc libcurl4-openssl-dev python-pip bridge-utils apt-transport-https ca-certificates
+ pip install jsonschema
+
+ # Install Nexus certificate
+ echo "$WEBSERVER_IP ecomp-nexus" >> /etc/hosts
+ keytool -printcert -sslserver $WEBSERVER_IP:8443 -rfc > nexus.crt
+ cp nexus.crt /usr/local/share/ca-certificates/
+ update-ca-certificates
+
+ # Download vFirewall code for virtual firewall
+ mkdir /opt/config
+ cd /opt
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/v_firewall_init.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vfirewall.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/VESvFW.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vpp.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/honeycomb.tar.gz
+ tar -zxvf VESvFW.tar.gz
+ tar -zxvf vpp.tar.gz
+ tar -zxvf honeycomb.tar.gz
+ rm *.tar.gz
+ chmod +x v_firewall_init.sh
+ chmod +x vfirewall.sh
+ echo $DCAE_COLLECTOR_IP > config/dcae_collector_ip.txt
+ echo $DCAE_COLLECTOR_PORT > config/dcae_collector_port.txt
+
+ # Install VPP
+ cd /opt/vpp/build-root/
+ dpkg -i vpp-lib_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dbg_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dev_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dpdk-dev_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-plugins_16.09-3~gc021053_amd64.deb
+ sleep 1
+
+ # Install VES
+ cd /opt/VES1.1/bldjobs/
+ make clean
+ make
+ sleep 1
+
+ # Run instantiation script
+ cd /opt
+ mv vfirewall.sh /etc/init.d
+ update-rc.d vfirewall.sh defaults
+ ./v_firewall_init.sh
+
+ vfw_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: unprotected_private_network }
+ fixed_ips: [{"subnet": { get_resource: unprotected_private_subnet }, "ip_address": { get_param: vfw_private_ip_0 }}]
+
+ vfw_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: protected_private_network }
+ fixed_ips: [{"subnet": { get_resource: protected_private_subnet }, "ip_address": { get_param: vfw_private_ip_1 }}]
+
+ vfw_private_2_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: ecomp_private_net_id }
+ fixed_ips: [{"subnet": { get_param: ecomp_private_subnet_id }, "ip_address": { get_param: vfw_private_ip_2 }}]
+
+ vpg_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vfw_image_name }
+ flavor: { get_param: vfw_flavor_name }
+ name: { get_param: vpg_name_0 }
+ key_name: { get_resource: my_keypair }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vpg_private_0_port }
+ - port: { get_resource: vpg_private_1_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __webserver__: { get_param: webserver_ip }
+ __fw_ipaddr__: { get_param: vfw_private_ip_0 }
+ __protected_net_cidr__: { get_param: protected_private_net_cidr }
+ __sink_ipaddr__: { get_param: vsn_private_ip_0 }
+ __repo_url__ : { get_param: repo_url }
+ __repo_user__ : { get_param: repo_user }
+ __repo_passwd__ : { get_param: repo_passwd }
+ template: |
+ #!/bin/bash
+
+ WEBSERVER_IP=__webserver__
+ FW_IPADDR=__fw_ipaddr__
+ PROTECTED_NET_CIDR=__protected_net_cidr__
+ SINK_IPADDR=__sink_ipaddr__
+ REPO_URL=__repo_url__
+ REPO_USER=__repo_user__
+ REPO_PASSWD=__repo_passwd__
+
+ # Download required dependencies
+ add-apt-repository -y ppa:openjdk-r/ppa
+ apt-get update
+ apt-get install -y make wget openjdk-8-jdk gcc libcurl4-openssl-dev python-pip bridge-utils apt-transport-https ca-certificates
+ pip install jsonschema
+
+ # Install Nexus certificate
+ echo "$WEBSERVER_IP ecomp-nexus" >> /etc/hosts
+ keytool -printcert -sslserver $WEBSERVER_IP:8443 -rfc > nexus.crt
+ cp nexus.crt /usr/local/share/ca-certificates/
+ update-ca-certificates
+
+ # Download vFirewall demo code for packet generator
+ mkdir /opt/config
+ cd /opt
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/v_packetgen_init.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vpacketgen.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vpp.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/honeycomb.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/pg_streams.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/run_traffic_fw_demo.sh
+ tar -zxvf vpp.tar.gz
+ tar -zxvf honeycomb.tar.gz
+ tar -zxvf pg_streams.tar.gz
+ rm *.tar.gz
+ chmod +x v_packetgen_init.sh
+ chmod +x vpacketgen.sh
+ echo $FW_IPADDR > config/fw_ipaddr.txt
+ echo $PROTECTED_NET_CIDR > config/protected_net_cidr.txt
+ echo $SINK_IPADDR > config/sink_ipaddr.txt
+
+ # Install VPP
+ cd /opt/vpp/build-root/
+ dpkg -i vpp-lib_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dbg_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dev_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dpdk-dev_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-plugins_16.09-3~gc021053_amd64.deb
+ sleep 1
+
+ # Run instantiation script
+ cd /opt
+ mv vpacketgen.sh /etc/init.d
+ update-rc.d vpacketgen.sh defaults
+ ./v_packetgen_init.sh
+
+ vpg_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: unprotected_private_network }
+ fixed_ips: [{"subnet": { get_resource: unprotected_private_subnet }, "ip_address": { get_param: vpg_private_ip_0 }}]
+
+ vpg_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: ecomp_private_net_id }
+ fixed_ips: [{"subnet": { get_param: ecomp_private_subnet_id }, "ip_address": { get_param: vpg_private_ip_1 }}]
+
+ vsn_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vfw_image_name }
+ flavor: { get_param: vfw_flavor_name }
+ name: { get_param: vsn_name_0 }
+ key_name: { get_resource: my_keypair }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vsn_private_0_port }
+ - port: { get_resource: vsn_private_1_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __webserver__: { get_param: webserver_ip }
+ __protected_net_gw__: { get_param: vfw_private_ip_1 }
+ __unprotected_net__: { get_param: unprotected_private_net_cidr }
+ __repo_url__ : { get_param: repo_url }
+ __repo_user__ : { get_param: repo_user }
+ __repo_passwd__ : { get_param: repo_passwd }
+ template: |
+ #!/bin/bash
+
+ WEBSERVER_IP=__webserver__
+ PROTECTED_NET_GW=__protected_net_gw__
+ UNPROTECTED_NET=__unprotected_net__
+ UNPROTECTED_NET=$(echo $UNPROTECTED_NET | cut -d'/' -f1)
+ REPO_URL=__repo_url__
+ REPO_USER=__repo_user__
+ REPO_PASSWD=__repo_passwd__
+
+ # Download required dependencies
+ add-apt-repository -y ppa:openjdk-r/ppa
+ apt-get update
+ apt-get install -y make wget openjdk-8-jdk apt-transport-https ca-certificates darkstat
+
+ # Configure and run darkstat
+ sed -i "s/START_DARKSTAT=.*/START_DARKSTAT=yes/g" /etc/darkstat/init.cfg
+ sed -i "s/INTERFACE=.*/INTERFACE=\"-i eth1\"/g" /etc/darkstat/init.cfg
+ /etc/init.d/darkstat start
+
+ # Install Nexus certificate
+ echo "$WEBSERVER_IP ecomp-nexus" >> /etc/hosts
+ keytool -printcert -sslserver $WEBSERVER_IP:8443 -rfc > nexus.crt
+ cp nexus.crt /usr/local/share/ca-certificates/
+ update-ca-certificates
+
+ mkdir /opt/config
+ cd /opt
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/v_sink_init.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vsink.sh
+ chmod +x v_sink_init.sh
+ chmod +x vsink.sh
+ echo $PROTECTED_NET_GW > config/protected_net_gw.txt
+ echo $UNPROTECTED_NET > config/unprotected_net.txt
+ mv vsink.sh /etc/init.d
+ update-rc.d vsink.sh defaults
+ ./v_sink_init.sh
+
+ vsn_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: protected_private_network }
+ fixed_ips: [{"subnet": { get_resource: protected_private_subnet }, "ip_address": { get_param: vsn_private_ip_0 }}]
+
+ vsn_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: ecomp_private_net_id }
+ fixed_ips: [{"subnet": { get_param: ecomp_private_subnet_id }, "ip_address": { get_param: vsn_private_ip_1 }}]
diff --git a/robot/assets/asdc/base_vlb/MANIFEST.json b/robot/assets/asdc/base_vlb/MANIFEST.json
new file mode 100644
index 00000000..bb8d70a1
--- /dev/null
+++ b/robot/assets/asdc/base_vlb/MANIFEST.json
@@ -0,0 +1,28 @@
+{
+ "name": "virtualLoadBalancer",
+ "description": "robot ete manifest",
+ "data": [
+ {
+ "file": "base_vlb.yaml",
+ "type": "HEAT",
+ "isBase": "true",
+ "data": [
+ {
+ "file": "base_vlb.env",
+ "type": "HEAT_ENV"
+ }
+ ]
+ },
+ {
+ "file": "dnsscaling.yaml",
+ "type": "HEAT",
+ "isBase": "false",
+ "data": [
+ {
+ "file": "dnsscaling.env",
+ "type": "HEAT_ENV"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/robot/assets/asdc/base_vlb/base_vlb.env b/robot/assets/asdc/base_vlb/base_vlb.env
new file mode 100644
index 00000000..f18b0011
--- /dev/null
+++ b/robot/assets/asdc/base_vlb/base_vlb.env
@@ -0,0 +1,4 @@
+parameters:
+ vlb_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
+ vlb_flavor_name: 4 GB General Purpose v1
+ public_net_id: 00000000-0000-0000-0000-000000000000 \ No newline at end of file
diff --git a/robot/assets/asdc/base_vlb/base_vlb.yaml b/robot/assets/asdc/base_vlb/base_vlb.yaml
new file mode 100644
index 00000000..5dfc4322
--- /dev/null
+++ b/robot/assets/asdc/base_vlb/base_vlb.yaml
@@ -0,0 +1,330 @@
+heat_template_version: 2013-05-23
+
+description: Heat template to deploy vLoadBalancer/vDNS demo app for OpenECOMP
+
+parameters:
+ vlb_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ vlb_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ public_net_id:
+ type: string
+ label: Public network name or ID
+ description: Public network that enables remote connection to VNF
+ vlb_private_net_id:
+ type: string
+ label: vLoadBalancer private network name or ID
+ description: Private network that connects vLoadBalancer with vDNSs
+ ecomp_private_net_id:
+ type: string
+ label: ECOMP management network name or ID
+ description: Private network that connects ECOMP component and the VNF
+ ecomp_private_subnet_id:
+ type: string
+ label: ECOMP management sub-network name or ID
+ description: Private sub-network that connects ECOMP component and the VNF
+ vlb_private_net_cidr:
+ type: string
+ label: vLoadBalancer private network CIDR
+ description: The CIDR of the vLoadBalancer private network
+ ecomp_private_net_cidr:
+ type: string
+ label: ECOMP private network CIDR
+ description: The CIDR of the protected private network
+ vlb_private_ip_0:
+ type: string
+ label: vLoadBalancer private IP address towards the private network
+ description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs
+ vlb_private_ip_1:
+ type: string
+ label: vLoadBalancer private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vLoadBalancer to communicate with ECOMP components
+ vdns_private_ip_0:
+ type: string
+ label: vDNS private IP address towards the private network
+ description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer
+ vdns_private_ip_1:
+ type: string
+ label: vDNS private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vDNS to communicate with ECOMP components
+ vlb_name_0:
+ type: string
+ label: vLoadBalancer name
+ description: Name of the vLoadBalancer
+ vdns_name_0:
+ type: string
+ label: vDNS name
+ description: Name of the vDNS
+ vnf_id:
+ type: string
+ label: VNF ID
+ description: The VNF ID is provided by ECOMP
+ vf_module_id:
+ type: string
+ label: vFirewall module ID
+ description: The vLoadBalancer Module ID is provided by ECOMP
+ webserver_ip:
+ type: string
+ label: Webserver IP address
+ description: IP address of the webserver that hosts the source code and binaries
+ dcae_collector_ip:
+ type: string
+ label: DCAE collector IP address
+ description: IP address of the DCAE collector
+ dcae_collector_port:
+ type: string
+ label: DCAE collector port
+ description: Port of the DCAE collector
+ key_name:
+ type: string
+ label: Key pair name
+ description: Public/Private key pair name
+ pub_key:
+ type: string
+ label: Public key
+ description: Public key to be installed on the compute instance
+ repo_user:
+ type: string
+ label: Repository username
+ description: Username to access the repository that hosts the demo packages
+ repo_passwd:
+ type: string
+ label: Repository password
+ description: Password to access the repository that hosts the demo packages
+ repo_url:
+ type: string
+ label: Repository URL
+ description: URL of the repository that hosts the demo packages
+
+resources:
+ my_keypair:
+ type: OS::Nova::KeyPair
+ properties:
+ name: { get_param: key_name }
+ public_key: { get_param: pub_key }
+ save_private_key: false
+
+ vlb_private_network:
+ type: OS::Neutron::Net
+ properties:
+ name: { get_param: vlb_private_net_id }
+
+ vlb_private_subnet:
+ type: OS::Neutron::Subnet
+ properties:
+ name: { get_param: vlb_private_net_id }
+ network_id: { get_resource: vlb_private_network }
+ cidr: { get_param: vlb_private_net_cidr }
+
+ vlb_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vlb_image_name }
+ flavor: { get_param: vlb_flavor_name }
+ name: { get_param: vlb_name_0 }
+ key_name: { get_resource: my_keypair }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vlb_private_0_port }
+ - port: { get_resource: vlb_private_1_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __webserver__: { get_param: webserver_ip }
+ __dcae_collector_ip__: { get_param: dcae_collector_ip }
+ __dcae_collector_port__: { get_param: dcae_collector_port }
+ __local_private_ipaddr__: { get_param: vlb_private_ip_0 }
+ __repo_url__ : { get_param: repo_url }
+ __repo_user__ : { get_param: repo_user }
+ __repo_passwd__ : { get_param: repo_passwd }
+ template: |
+ #!/bin/bash
+
+ WEBSERVER_IP=__webserver__
+ DCAE_COLLECTOR_IP=__dcae_collector_ip__
+ DCAE_COLLECTOR_PORT=__dcae_collector_port__
+ LOCAL_PRIVATE_IPADDR=__local_private_ipaddr__
+ REPO_URL=__repo_url__
+ REPO_USER=__repo_user__
+ REPO_PASSWD=__repo_passwd__
+
+ # Download required dependencies
+ add-apt-repository -y ppa:openjdk-r/ppa
+ apt-get update
+ apt-get install -y make gcc wget openjdk-8-jdk bridge-utils libcurl4-openssl-dev apt-transport-https ca-certificates
+ sleep 1
+
+ # Install Nexus certificate
+ echo "$WEBSERVER_IP ecomp-nexus" >> /etc/hosts
+ keytool -printcert -sslserver $WEBSERVER_IP:8443 -rfc > nexus.crt
+ cp nexus.crt /usr/local/share/ca-certificates/
+ update-ca-certificates
+
+ # Download vLB demo code for load balancer
+ mkdir /opt/config
+ cd /opt
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/v_lb_init.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vlb.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vpp.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/DNSManager.tar.gz
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/VESvLB.tar.gz
+ tar -zxvf vpp.tar.gz
+ tar -zxvf DNSManager.tar.gz
+ tar -zxvf VESvLB.tar.gz
+ rm *.tar.gz
+ chmod +x v_lb_init.sh
+ chmod +x vlb.sh
+ echo $DCAE_COLLECTOR_IP > config/dcae_collector_ip.txt
+ echo $DCAE_COLLECTOR_PORT > config/dcae_collector_port.txt
+ echo $LOCAL_PRIVATE_IPADDR > config/local_private_ipaddr.txt
+ LOCAL_PUBLIC_IPADDR=$(ifconfig eth0 | grep "inet addr" | tr -s ' ' | cut -d' ' -f3 | cut -d':' -f2)
+ echo $LOCAL_PUBLIC_IPADDR > config/local_public_ipaddr.txt
+
+ # Install VPP
+ cd /opt/vpp/build-root/
+ dpkg -i vpp-lib_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dbg_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dev_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-dpdk-dev_16.09-3~gc021053_amd64.deb
+ dpkg -i vpp-plugins_16.09-3~gc021053_amd64.deb
+ sleep 1
+
+ # Install Failure Detector
+ cd /opt/DNSManager/src
+ javac -d ../bin/ *.java
+ cd /opt/DNSManager/bin
+ chmod +x dnsmembership.sh
+ chmod +x add_dns.sh
+ chmod +x remove_dns.sh
+ sleep 1
+
+ # Install VES
+ cd /opt/VES1.1/bldjobs/
+ make clean
+ make
+ sleep 1
+
+ # Run instantiation script
+ cd /opt
+ mv vlb.sh /etc/init.d
+ update-rc.d vlb.sh defaults
+ ./v_lb_init.sh
+
+ vlb_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: vlb_private_network }
+ fixed_ips: [{"subnet": { get_resource: vlb_private_subnet }, "ip_address": { get_param: vlb_private_ip_0 }}]
+
+ vlb_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: ecomp_private_net_id }
+ fixed_ips: [{"subnet": { get_param: ecomp_private_subnet_id }, "ip_address": { get_param: vlb_private_ip_1 }}]
+
+ vdns_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vlb_image_name }
+ flavor: { get_param: vlb_flavor_name }
+ name: { get_param: vdns_name_0 }
+ key_name: { get_resource: my_keypair }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vdns_private_0_port }
+ - port: { get_resource: vdns_private_1_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __webserver__: { get_param: webserver_ip }
+ __lb_oam_int__ : { get_param: vlb_private_ip_1 }
+ __lb_private_ipaddr__: { get_param: vlb_private_ip_0 }
+ __local_private_ipaddr__: { get_param: vdns_private_ip_0 }
+ __repo_url__ : { get_param: repo_url }
+ __repo_user__ : { get_param: repo_user }
+ __repo_passwd__ : { get_param: repo_passwd }
+ template: |
+ #!/bin/bash
+
+ WEBSERVER_IP=__webserver__
+ LB_OAM_INT=__lb_oam_int__
+ LB_PRIVATE_IPADDR=__lb_private_ipaddr__
+ LOCAL_PRIVATE_IPADDR=__local_private_ipaddr__
+ REPO_URL=__repo_url__
+ REPO_USER=__repo_user__
+ REPO_PASSWD=__repo_passwd__
+
+ # Download required dependencies
+ add-apt-repository -y ppa:openjdk-r/ppa
+ apt-get update
+ apt-get install -y wget openjdk-8-jdk bind9 bind9utils bind9-doc apt-transport-https ca-certificates
+ sleep 1
+
+ # Install Nexus certificate
+ echo "$WEBSERVER_IP ecomp-nexus" >> /etc/hosts
+ keytool -printcert -sslserver $WEBSERVER_IP:8443 -rfc > nexus.crt
+ cp nexus.crt /usr/local/share/ca-certificates/
+ update-ca-certificates
+
+ # Download vDNS demo code for DNS Server
+ mkdir /opt/config
+ cd /opt
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/v_dns_init.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vdns.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/DNSClient.tar.gz
+ tar -zxvf DNSClient.tar.gz
+ rm *.tar.gz
+ chmod +x v_dns_init.sh
+ chmod +x vdns.sh
+ echo $LB_OAM_INT > config/lb_oam_int.txt
+ echo $LB_PRIVATE_IPADDR > config/lb_private_ipaddr.txt
+ echo $LOCAL_PRIVATE_IPADDR > config/local_private_ipaddr.txt
+
+ # Download Bind config files
+ cd /opt/config
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/db_dnsdemo_openecomp_org
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/named.conf.options
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/named.conf.local
+
+ # Configure Bind
+ modprobe ip_gre
+ mkdir /etc/bind/zones
+ sed -i "s/OPTIONS=.*/OPTIONS=\"-4 -u bind\"/g" /etc/default/bind9
+ cp /opt/config/db_dnsdemo_openecomp_org /etc/bind/zones/db.dnsdemo.openecomp.org
+ cp /opt/config/named.conf.local /etc/bind/
+ sleep 1
+
+ # Start Failure Detector
+ cd /opt/DNSClient/src
+ javac -d ../bin/ *.java
+ cd /opt/DNSClient/bin
+ chmod +x dnsclient.sh
+ chmod +x set_gre_tunnel.sh
+ sleep 1
+
+ # Run instantiation script
+ cd /opt
+ mv vdns.sh /etc/init.d
+ update-rc.d vdns.sh defaults
+ ./v_dns_init.sh
+
+ vdns_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_resource: vlb_private_network }
+ fixed_ips: [{"subnet": { get_resource: vlb_private_subnet }, "ip_address": { get_param: vdns_private_ip_0 }}]
+
+ vdns_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: ecomp_private_net_id }
+ fixed_ips: [{"subnet": { get_param: ecomp_private_subnet_id }, "ip_address": { get_param: vdns_private_ip_1 }}]
diff --git a/robot/assets/asdc/base_vlb/dnsscaling.env b/robot/assets/asdc/base_vlb/dnsscaling.env
new file mode 100644
index 00000000..f18b0011
--- /dev/null
+++ b/robot/assets/asdc/base_vlb/dnsscaling.env
@@ -0,0 +1,4 @@
+parameters:
+ vlb_image_name: Ubuntu 14.04 LTS (Trusty Tahr) (PVHVM)
+ vlb_flavor_name: 4 GB General Purpose v1
+ public_net_id: 00000000-0000-0000-0000-000000000000 \ No newline at end of file
diff --git a/robot/assets/asdc/base_vlb/dnsscaling.yaml b/robot/assets/asdc/base_vlb/dnsscaling.yaml
new file mode 100644
index 00000000..8f177231
--- /dev/null
+++ b/robot/assets/asdc/base_vlb/dnsscaling.yaml
@@ -0,0 +1,182 @@
+heat_template_version: 2013-05-23
+
+description: Heat template to deploy a vDNS for OpenECOMP (scaling-up scenario)
+
+parameters:
+ vlb_image_name:
+ type: string
+ label: Image name or ID
+ description: Image to be used for compute instance
+ vlb_flavor_name:
+ type: string
+ label: Flavor
+ description: Type of instance (flavor) to be used
+ public_net_id:
+ type: string
+ label: Public network name or ID
+ description: Public network that enables remote connection to VNF
+ vlb_private_net_id:
+ type: string
+ label: vLoadBalancer private network name or ID
+ description: Private network that connects vLoadBalancer with vDNSs
+ ecomp_private_net_id:
+ type: string
+ label: ECOMP management network name or ID
+ description: Private network that connects ECOMP component and the VNF
+ ecomp_private_subnet_id:
+ type: string
+ label: ECOMP management sub-network name or ID
+ description: Private sub-network that connects ECOMP component and the VNF
+ vlb_private_ip_0:
+ type: string
+ label: vLoadBalancer private IP address towards the private network
+ description: Private IP address that is assigned to the vLoadBalancer to communicate with the vDNSs
+ vlb_private_ip_1:
+ type: string
+ label: vLoadBalancer private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vLoadBalancer to communicate with ECOMP components
+ vdns_private_ip_0:
+ type: string
+ label: vDNS private IP address towards the private network
+ description: Private IP address that is assigned to the vDNS to communicate with the vLoadBalancer
+ vdns_private_ip_1:
+ type: string
+ label: vDNS private IP address towards the ECOMP management network
+ description: Private IP address that is assigned to the vDNS to communicate with ECOMP components
+ vdns_name_0:
+ type: string
+ label: vDNS name
+ description: Name of the vDNS
+ vnf_id:
+ type: string
+ label: VNF ID
+ description: The VNF ID is provided by ECOMP
+ vf_module_id:
+ type: string
+ label: vFirewall module ID
+ description: The vLoadBalancer Module ID is provided by ECOMP
+ webserver_ip:
+ type: string
+ label: Webserver IP address
+ description: IP address of the webserver that hosts the source code and binaries
+ key_name:
+ type: string
+ label: Key pair name
+ description: Public/Private key pair name
+ pub_key:
+ type: string
+ label: Public key
+ description: Public key to be installed on the compute instance
+ repo_user:
+ type: string
+ label: Repository username
+ description: Username to access the repository that hosts the demo packages
+ repo_passwd:
+ type: string
+ label: Repository password
+ description: Password to access the repository that hosts the demo packages
+ repo_url:
+ type: string
+ label: Repository URL
+ description: URL of the repository that hosts the demo packages
+
+resources:
+ vdns_0:
+ type: OS::Nova::Server
+ properties:
+ image: { get_param: vlb_image_name }
+ flavor: { get_param: vlb_flavor_name }
+ name: { get_param: vdns_name_0 }
+ key_name: { get_param: key_name }
+ networks:
+ - network: { get_param: public_net_id }
+ - port: { get_resource: vdns_private_0_port }
+ - port: { get_resource: vdns_private_1_port }
+ metadata: {vnf_id: { get_param: vnf_id }, vf_module_id: { get_param: vf_module_id }}
+ user_data_format: RAW
+ user_data:
+ str_replace:
+ params:
+ __webserver__: { get_param: webserver_ip }
+ __lb_oam_int__ : { get_param: vlb_private_ip_1 }
+ __lb_private_ipaddr__: { get_param: vlb_private_ip_0 }
+ __local_private_ipaddr__: { get_param: vdns_private_ip_0 }
+ __repo_url__ : { get_param: repo_url }
+ __repo_user__ : { get_param: repo_user }
+ __repo_passwd__ : { get_param: repo_passwd }
+ template: |
+ #!/bin/bash
+
+ WEBSERVER_IP=__webserver__
+ LB_OAM_INT=__lb_oam_int__
+ LB_PRIVATE_IPADDR=__lb_private_ipaddr__
+ LOCAL_PRIVATE_IPADDR=__local_private_ipaddr__
+ REPO_URL=__repo_url__
+ REPO_USER=__repo_user__
+ REPO_PASSWD=__repo_passwd__
+
+ # Download required dependencies
+ add-apt-repository -y ppa:openjdk-r/ppa
+ apt-get update
+ apt-get install -y wget openjdk-8-jdk bind9 bind9utils bind9-doc apt-transport-https ca-certificates
+ sleep 1
+
+ # Install Nexus certificate
+ echo "$WEBSERVER_IP ecomp-nexus" >> /etc/hosts
+ keytool -printcert -sslserver $WEBSERVER_IP:8443 -rfc > nexus.crt
+ cp nexus.crt /usr/local/share/ca-certificates/
+ update-ca-certificates
+
+ # Download vDNS demo code for DNS Server
+ mkdir /opt/config
+ cd /opt
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/v_dns_init.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/vdns.sh
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/DNSClient.tar.gz
+ tar -zxvf DNSClient.tar.gz
+ rm *.tar.gz
+ chmod +x v_dns_init.sh
+ chmod +x vdns.sh
+ echo $LB_OAM_INT > config/lb_oam_int.txt
+ echo $LB_PRIVATE_IPADDR > config/lb_private_ipaddr.txt
+ echo $LOCAL_PRIVATE_IPADDR > config/local_private_ipaddr.txt
+
+ # Download Bind config files
+ cd /opt/config
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/db_dnsdemo_openecomp_org
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/named.conf.options
+ wget --user=$REPO_USER --password=$REPO_PASSWD $REPO_URL/named.conf.local
+
+ # Configure Bind
+ modprobe ip_gre
+ mkdir /etc/bind/zones
+ sed -i "s/OPTIONS=.*/OPTIONS=\"-4 -u bind\"/g" /etc/default/bind9
+ cp /opt/config/db_dnsdemo_openecomp_org /etc/bind/zones/db.dnsdemo.openecomp.org
+ cp /opt/config/named.conf.local /etc/bind/
+ sleep 1
+
+ # Start Failure Detector
+ cd /opt/DNSClient/src
+ javac -d ../bin/ *.java
+ cd /opt/DNSClient/bin
+ chmod +x dnsclient.sh
+ chmod +x set_gre_tunnel.sh
+ sleep 1
+
+ # Run instantiation script
+ cd /opt
+ mv vdns.sh /etc/init.d
+ update-rc.d vdns.sh defaults
+ ./v_dns_init.sh
+
+ vdns_private_0_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: vlb_private_net_id }
+ fixed_ips: [{"subnet": { get_param: vlb_private_net_id }, "ip_address": { get_param: vdns_private_ip_0 }}]
+
+ vdns_private_1_port:
+ type: OS::Neutron::Port
+ properties:
+ network: { get_param: ecomp_private_net_id }
+ fixed_ips: [{"subnet": { get_param: ecomp_private_subnet_id }, "ip_address": { get_param: vdns_private_ip_1 }}]
diff --git a/robot/assets/asdc/base_vvg/MANIFEST.json b/robot/assets/asdc/base_vvg/MANIFEST.json
new file mode 100644
index 00000000..67312f23
--- /dev/null
+++ b/robot/assets/asdc/base_vvg/MANIFEST.json
@@ -0,0 +1,17 @@
+{
+ "name": "volumeGroup.yaml",
+ "description": "robot ete manifest",
+ "data": [
+ {
+ "file": "base_vvg.yaml",
+ "type": "HEAT",
+ "isBase": "true",
+ "data": [
+ {
+ "file": "base_vvg.env",
+ "type": "HEAT_ENV"
+ }
+ ]
+ }
+ ]
+} \ No newline at end of file
diff --git a/robot/assets/asdc/base_vvg/base_vvg.env b/robot/assets/asdc/base_vvg/base_vvg.env
new file mode 100644
index 00000000..2b4e72b8
--- /dev/null
+++ b/robot/assets/asdc/base_vvg/base_vvg.env
@@ -0,0 +1,3 @@
+parameters:
+ volume_size: 100
+ nova_instance: 1234456 \ No newline at end of file
diff --git a/robot/assets/asdc/base_vvg/base_vvg.yaml b/robot/assets/asdc/base_vvg/base_vvg.yaml
new file mode 100644
index 00000000..c20d4e48
--- /dev/null
+++ b/robot/assets/asdc/base_vvg/base_vvg.yaml
@@ -0,0 +1,22 @@
+heat_template_version: 2013-05-23
+description: create a Nova instance, a Cinder volume and attach the volume to the instance.
+
+parameters:
+ nova_instance:
+ type: string
+ label: Instance name or ID
+ description: ID of the vm to use for the disk to be attached too
+ volume_size:
+ type: number
+ label: GB
+ description: Size of the volume to be created.
+resources:
+ cinder_volume:
+ type: OS::Cinder::Volume
+ properties:
+ size: { get_param: volume_size }
+ volume_attachment:
+ type: OS::Cinder::VolumeAttachment
+ properties:
+ volume_id: { get_resource: cinder_volume }
+ instance_uuid: { get_param: nova_instance } \ No newline at end of file
diff --git a/robot/assets/dcae/dcae_healthcheck.json b/robot/assets/dcae/dcae_healthcheck.json
new file mode 100644
index 00000000..d612b082
--- /dev/null
+++ b/robot/assets/dcae/dcae_healthcheck.json
@@ -0,0 +1,5 @@
+{
+ "path": "/reports/dcae/service-instances",
+ "start": "-24hour",
+ "end": "now"
+} \ No newline at end of file
diff --git a/robot/assets/keys/ecompdemo.pvt b/robot/assets/keys/ecompdemo.pvt
new file mode 100644
index 00000000..36d9e9cf
--- /dev/null
+++ b/robot/assets/keys/ecompdemo.pvt
@@ -0,0 +1,30 @@
+-----BEGIN RSA PRIVATE KEY-----
+Proc-Type: 4,ENCRYPTED
+DEK-Info: DES-EDE3-CBC,E9DC8BE477D6D4AC
+
+4lYXpDswDU9oNh/OdB/0krK7AVN2OYnU98ZvYUfQIVWgrAty0vp0PDErOAAP7AOE
+tz+tQwvg/JVqZlBGCYIkwx5ADJ9YFXMyn/Ztla2jC90dxbjlra+MvuU9nMfjWhjP
+PiaOysIDaRIPZqjkjRQcslgsDYgVF4JC+2qRMJ62e5exk0dw4Cn3XeN53pByQ8HT
+OnTuszejFNb3/HA5LsPyJl3cZqMBlKOHToUBbF2JBuo+aDq5S+YgzILep/nTQadh
+kLfuJThhAwTJsQWVCSOggAwsjV6fP5yi2q9iCmF07kxDgRsByj0nl/7YDoZ69ZoE
+LHkZEoZ1JSX0SSOrOUyVcpf8+ofK1aMEoWRvLGYfBD7wDJb4nzi4k1fdJGnoDLms
+dr+mL7RB5zoC3xlumSAK2AP8hhIfURtaSC9hpiUB6yIXCmUjx4FIzroa4gBUsrlJ
+R6KGp+6b54bf7hwFeCjYENjGq5YJJ24Aur2mR045LCBNP452pFVi5SIfX0PO5ocd
+dBvPHQUqtCoUkQMSTtjy6T384BbPeA5s5zazq7WUoNrQD37khR7MojBpww0s3wEh
+U+XWlQ5bEjEjac5Q8RIJrB2Bp6/cUQFSlqNDKxK2y1WzvPjM/Fkn2H+hImn+we7n
+Cp5fzx6s4roeEc9WvVmb2+V3xV883pkktd1IiWGfleB14ZJ1vcGzdW+lBINgm9h1
+5xvxP5Xtqj8KGGoA3mEo3CbzR1XbkEp7/S4MN1OsXSCy3jZpiP+ctd4fwk5Ltcqz
+YEjM5cb2+joNYTd4JW5DTtz7qrMn/sotAOlgw2ozmXLfbbMuOZ9SX76npEr8SKd+
+065bxJ+YvN6MFzwG75nFfXcPWdNVntXaH+zOZfBGBNX84gX4p3ORF1u18brNcd9z
+0sv1OiGdO5NFVA/3YixP1P2zZxlGsi972PtHoQ8SHxbEfNMCqkNGrHh+KmaT42k6
+W5lscEhPDtIsiRmhTTrL6L5sFCbLL+8UZktK1/TU27QtCtywi5xfzO9NhJg27R5b
+hPvQs43V7KItpdc5LdWrft7hTnmc4jn5F6aE7l9bCaaRgAy1MH6lzyjuaLphFXmP
+GdPLD9GhMFiTRJNVCRkYPZwtGKdfG6/z6kRZGIi6XPYzI3FcHOdKTGgvGxlko6Lr
+4FG0kOwgi55o1gQnL3wsBVoNZ7PrkHLFSQhu03ggXPrf75oMN0Tsqai+iaf4OvMr
+fgk4O5+D/CX94R50V1xUymUrRIAzKG3k+jebFcTzkb7B/e1bPwr8ZRUk31nZrgYp
+3qKJT77/Vz+tyL3H+U3YdvzxhG6+onXDkAvO8WAcfsKpEJ3thv8NOqXZeKCY2m1G
+wrQ8vfl6MddOvlI5EKbnwesXIznO9Gl+RoCm18I/M8bETTAOMJXb3cp4GiBffXbI
+8kbYwVeHGscXizHdkuqjbN1NLg5KPZV10KRchg0g85PWgDr59wY5kMplFNUrkxY2
+1ETYOZsmOa3/Afcq2dgxEw1t1t+ZRR5dh6OdQXKCvsHHugQisnPi5NAb8gkZbRJI
+yHNInMegrG2S17n75P0o+GM+XItc74ygnv/KedJFW9uBaOr7sXtB4A==
+-----END RSA PRIVATE KEY-----
diff --git a/robot/assets/keys/robot_ssh_private_key.ppk b/robot/assets/keys/robot_ssh_private_key.ppk
new file mode 100644
index 00000000..0a327c24
--- /dev/null
+++ b/robot/assets/keys/robot_ssh_private_key.ppk
@@ -0,0 +1,26 @@
+PuTTY-User-Key-File-2: ssh-rsa
+Encryption: none
+Comment: rsa-key-20161026
+Public-Lines: 6
+AAAAB3NzaC1yc2EAAAABJQAAAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4K
+VwhTJVTTeB6CqrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVP
+KSIeH63kgVugwgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMT
+LKXvZZZGqxW94bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poT
+QnQm/3D6hiJICrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7
+D7M/yj292RT1XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOw==
+Private-Lines: 14
+AAABAGoWftznbzMMs0zrEmSThd7m+qehjNdrP+0PpZAMGAJy//6PgahiFjHkmMqn
+N3p5BP1DXQ40oNp/rP9gM8YQPy3eXFRxh8/k4mYiAMaK1HSOsKNwTyx+7jdxpUrn
+Rv1arqTMHM5lo7YVKWha+ik5egUEMpKxo3NtNBUdJ5hLeSN4EzbS0xq6dYA0EU33
+kjmkoqtj2qMhwZQmTUCyqvtae6t9I7YTP9DbkG+kyuWSLCrbIFN3SPU7jsLBxI45
+cdUiAKBbd6WjPYauSyhTenZvqjxDV0w/QUPKv3vxpqPvLfdA/gQfvhFLkNMStdb9
+DKB4ni8uiAPtM5AVYlgEpC7Nuw0AAACBANa5Wi9KvsPp5ltbiwrLeoVTPmFwAhJP
+w+B+OEoRN4oMqstIBOZiYz1+WV/nA3WR1gOd/TbDL4kzXL9SYl/y8QmFjrc7B4vI
+GLhWnDBjl1l/wvYhxMXbfHEN2VqZVICSoEVICphx6SPflFH53kmGrIiBs9GWFv9c
+AVGHi1j52rvRAAAAgQDLeCWfKS24gUcSfn/UHlc9EGgyNayeC3eX4K2xV9yMSXub
+uQVvxiuBXd6OWW9I/CQyNVoLN3tboAzRl61ds15Ml+V/uLMjxrXJXDWkEiQHsOMX
+BhREWZL0T3hlFZsyfVZPPH5BavZzA4PB1/BF+t06N10pnASXB4kcKjQD0JQCSwAA
+AIBfQ7PZM1KuL0zpD6imxUgyNNSXdGTfM9XUSY5L8e2xWqjnZT+Cj1bUGVYMxrpC
+8bpfGGTyBv/v6N7NxPep1QeyM9E0o0z0ID9ybRpX4ErYSp1sLZBNlBXdAAL9nexo
+XbZDpN0zdBE5wnAMjcjHTp9PMSDeWt4/r2aiNde3VFwnWg==
+Private-MAC: 50d4bf08bffb34c3aba06d57afb241242ca9e242
diff --git a/robot/assets/keys/robot_ssh_private_key.pvt b/robot/assets/keys/robot_ssh_private_key.pvt
new file mode 100644
index 00000000..17c17a3d
--- /dev/null
+++ b/robot/assets/keys/robot_ssh_private_key.pvt
@@ -0,0 +1,27 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIEoQIBAAKCAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4KVwhTJVTTeB6C
+qrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVPKSIeH63kgVug
+wgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMTLKXvZZZGqxW9
+4bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poTQnQm/3D6hiJI
+CrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7D7M/yj292RT1
+XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOwIBJQKCAQBqFn7c528zDLNM6xJk
+k4Xe5vqnoYzXaz/tD6WQDBgCcv/+j4GoYhYx5JjKpzd6eQT9Q10ONKDaf6z/YDPG
+ED8t3lxUcYfP5OJmIgDGitR0jrCjcE8sfu43caVK50b9Wq6kzBzOZaO2FSloWvop
+OXoFBDKSsaNzbTQVHSeYS3kjeBM20tMaunWANBFN95I5pKKrY9qjIcGUJk1Asqr7
+WnurfSO2Ez/Q25BvpMrlkiwq2yBTd0j1O47CwcSOOXHVIgCgW3eloz2GrksoU3p2
+b6o8Q1dMP0FDyr978aaj7y33QP4EH74RS5DTErXW/QygeJ4vLogD7TOQFWJYBKQu
+zbsNAoGBANa5Wi9KvsPp5ltbiwrLeoVTPmFwAhJPw+B+OEoRN4oMqstIBOZiYz1+
+WV/nA3WR1gOd/TbDL4kzXL9SYl/y8QmFjrc7B4vIGLhWnDBjl1l/wvYhxMXbfHEN
+2VqZVICSoEVICphx6SPflFH53kmGrIiBs9GWFv9cAVGHi1j52rvRAoGBAMt4JZ8p
+LbiBRxJ+f9QeVz0QaDI1rJ4Ld5fgrbFX3IxJe5u5BW/GK4Fd3o5Zb0j8JDI1Wgs3
+e1ugDNGXrV2zXkyX5X+4syPGtclcNaQSJAew4xcGFERZkvRPeGUVmzJ9Vk88fkFq
+9nMDg8HX8EX63To3XSmcBJcHiRwqNAPQlAJLAoGAdBEp1F/BD/QN0ISCgmAmjUHA
+2rkV4GJ3t54sQ7ZHiORApTuvnyBs/qUpZEWFVE7UjFVmRx1lzZ85DXij4NZYxuBo
+0b8K/3MUR/d3BWZD+QbKP9rm532PX7R1fRScYSypqOiryAY41R7oY6molnJPbGHI
++6sTWZmELBHqdUjJQu0CgYEAuvjIoBgAgAgXy84wRmER5RX+4gfPDcVZI8eK2lC8
+0/B/bICBiU5RfcvhRImI20iP9sk9/HgsKq6/q9d8tvfaHN6bih9Ygb2Ec9gxSqji
+1qKLfPDUWnvTJbDPf3ujXtQKH0xYV8oS5jqUv/bcyq8sJ6h/H1EY+XyL1LEo4Oku
+D/ECgYBfQ7PZM1KuL0zpD6imxUgyNNSXdGTfM9XUSY5L8e2xWqjnZT+Cj1bUGVYM
+xrpC8bpfGGTyBv/v6N7NxPep1QeyM9E0o0z0ID9ybRpX4ErYSp1sLZBNlBXdAAL9
+nexoXbZDpN0zdBE5wnAMjcjHTp9PMSDeWt4/r2aiNde3VFwnWg==
+-----END RSA PRIVATE KEY-----
diff --git a/robot/assets/keys/robot_ssh_public_key.pub b/robot/assets/keys/robot_ssh_public_key.pub
new file mode 100644
index 00000000..934c60a8
--- /dev/null
+++ b/robot/assets/keys/robot_ssh_public_key.pub
@@ -0,0 +1,9 @@
+---- BEGIN SSH2 PUBLIC KEY ----
+Comment: "rsa-key-20161026"
+AAAAB3NzaC1yc2EAAAABJQAAAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4K
+VwhTJVTTeB6CqrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVP
+KSIeH63kgVugwgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMT
+LKXvZZZGqxW94bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poT
+QnQm/3D6hiJICrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7
+D7M/yj292RT1XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOw==
+---- END SSH2 PUBLIC KEY ----
diff --git a/robot/assets/keys/robot_ssh_public_key.txt b/robot/assets/keys/robot_ssh_public_key.txt
new file mode 100644
index 00000000..43a61cd9
--- /dev/null
+++ b/robot/assets/keys/robot_ssh_public_key.txt
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAqqnA9BAiMLtjOPSYBfhzLu4CiBolWoskDg4KVwhTJVTTeB6CqrQNcadlGXxOHhCYuNCKkUmIVF4WTOisVOJ75Z1c4OMoZLL85xVPKSIeH63kgVugwgPYQu55NbbWX+rsbUha3LnElDhNviMM3iTPbD5nnhKixNERAJMTLKXvZZZGqxW94bREknYPQTT2qrk3YRqwldncopp6Nkgv3AnSJz2gc9tjxnWF0poTQnQm/3D6hiJICrzKfAV0EaPN0KdtYjPhKrYoy6Qb/tKOVaaqsvwfKBJGrT9LfcA7D7M/yj292RT1XN63hI84WC383LsaPJ6eWdDTE6zUP1eGTWCoOw== rsa-key-20161026 \ No newline at end of file
diff --git a/robot/assets/service_mappings.py b/robot/assets/service_mappings.py
new file mode 100644
index 00000000..9e7a2cc0
--- /dev/null
+++ b/robot/assets/service_mappings.py
@@ -0,0 +1,29 @@
+GLOBAL_SERVICE_FOLDER_MAPPING = {"vFW" : ['base_vfw'], \
+ "vLB" : ['base_vlb'], \
+ "vVG" : ['base_vvg'], \
+ }
+
+GLOBAL_SERVICE_TEMPLATE_MAPPING = {"vFW" : [{"isBase" : "true", "template" : "vfw_preload.template", "name_pattern": "base_vfw"}], \
+ "vLB" : [{"isBase" : "true", "template" : "vlb_preload.template", "name_pattern": "base_vlb"},
+ {"isBase" : "false", "template" : "dnsscaling_preload.template", "name_pattern": "dnsscaling", "prefix" : "vDNS_"}],
+ "vVG" : [{"isBase" : "true", "template" : "vvg_preload.template", "name_pattern": "base_vvg"}], \
+ }
+
+
+##
+## The following identifies the stack parameter names for the oam_ecomp network IPS
+## In stantiated by the stack. During stack teardown, we need to ensure that
+## These ports are deleted due to latency in rackspace to free these ports.
+## This is just a workaround to enable respinning a VM as soon as possible
+GLOBAL_SERVICE_ECOMP_IP_MAPPING = {"vFW" : ['vpg_private_ip_1', 'vfw_private_ip_2','vsn_private_ip_1'], \
+ "vLB" : ['vlb_private_ip_1', 'vdns_private_ip_1'],
+ "vVG" : [], \
+ }
+
+
+##
+## Used by the Heatbridge Validate Query to A&AI to locate the vserver name
+GLOBAL_VALIDATE_NAME_MAPPING = {"vFW" : 'vfw_name_0',
+ "vLB" : 'vlb_name_0',
+ "vVG" : ''
+ }
diff --git a/robot/assets/templates/aai/add_cloud_region_body.template b/robot/assets/templates/aai/add_cloud_region_body.template
new file mode 100644
index 00000000..95b2525c
--- /dev/null
+++ b/robot/assets/templates/aai/add_cloud_region_body.template
@@ -0,0 +1,15 @@
+{
+ "cloud-owner": "${cloud_owner}",
+ "cloud-region-id": "${cloud_region_id}",
+ "cloud-type": "${cloud_type}",
+ "owner-defined-type": "${owner_defined_type}",
+ "cloud-region-version": "${cloud_region_version}",
+ "cloud-zone": "${cloud_zone}",
+ "tenants": {
+ "tenant": [{
+ "tenant-id": "${tenant_id}",
+ "tenant-name": "${tenant_name}"
+
+ }]
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/aai/add_customer.template b/robot/assets/templates/aai/add_customer.template
new file mode 100644
index 00000000..d0ae174a
--- /dev/null
+++ b/robot/assets/templates/aai/add_customer.template
@@ -0,0 +1,25 @@
+{
+ "global-customer-id": "${global_customer_id}",
+ "subscriber-name": "${subscriber_name}",
+ "subscriber-type": "${subscriber_type}",
+ "service-subscriptions": {
+ "service-subscription": [{
+ "service-type": "${service1}",
+ "relationship-list": {
+ "relationship": [{
+ "related-to": "tenant",
+ "relationship-data": [{
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "${cloud_owner1}"
+ }, {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "${cloud_region_id1}"
+ }, {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "${tenant_id1}"
+ }]
+ }]
+ }
+ }]
+ }
+ } \ No newline at end of file
diff --git a/robot/assets/templates/aai/add_service_body.template b/robot/assets/templates/aai/add_service_body.template
new file mode 100644
index 00000000..ca32fd51
--- /dev/null
+++ b/robot/assets/templates/aai/add_service_body.template
@@ -0,0 +1,6 @@
+{
+ "service-id": "${UUID}",
+ "service-description": "${service_type}"
+}
+
+
diff --git a/robot/assets/templates/aai/add_tenant_body.template b/robot/assets/templates/aai/add_tenant_body.template
new file mode 100644
index 00000000..a3cea10a
--- /dev/null
+++ b/robot/assets/templates/aai/add_tenant_body.template
@@ -0,0 +1,17 @@
+{
+ "cloud-owner": "${cloud_owner}",
+ "cloud-region-id": "${cloud_region_id}",
+ "cloud-type": "${cloud_type}",
+ "owner-defined-type": "${owner_defined_type}",
+ "cloud-region-version": "${cloud_region_version}",
+ "cloud-zone": "${cloud_zone}",
+ "tenants": {
+ "tenant": [{
+ "tenant-id": "${tenant_id}",
+ "tenant-name": "${tenant_name}"
+
+ }]
+ }
+}
+
+
diff --git a/robot/assets/templates/aai/named_query.template b/robot/assets/templates/aai/named_query.template
new file mode 100644
index 00000000..de3f21f6
--- /dev/null
+++ b/robot/assets/templates/aai/named_query.template
@@ -0,0 +1,17 @@
+{
+ "query-parameters": {
+ "named-query": {
+ "named-query-uuid": "f199cb88-5e69-4b1f-93e0-6f257877d066"
+ }
+ },
+ "instance-filters": {
+ "instance-filter": [
+ {
+ "vserver":
+ {
+ "vserver-name": "${vserver_name}"
+ }
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/aai/service_subscription.template b/robot/assets/templates/aai/service_subscription.template
new file mode 100644
index 00000000..85703581
--- /dev/null
+++ b/robot/assets/templates/aai/service_subscription.template
@@ -0,0 +1,19 @@
+{
+ "service-subscription":[
+ {
+ "service-type":"{$service_type}",
+ "resource-version":"1473866861",
+ "service-instances":{
+ "service-instance":[
+ {
+ "service-instance-id":"d3f9a631-e280-4a87-846d-9ccd7a265980",
+ "service-instance-name":"VIV+IST+ezNew+Oct6",
+ "persona-model-id":"e6f1d393-6432-4820-ab86-7a10ba4b31ac",
+ "persona-model-version":"1.0",
+ "resource-version":"1475807447"
+ }
+ ]
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/robot/assets/templates/aai/vlb_closed_loop_hack.template b/robot/assets/templates/aai/vlb_closed_loop_hack.template
new file mode 100644
index 00000000..27f9c963
--- /dev/null
+++ b/robot/assets/templates/aai/vlb_closed_loop_hack.template
@@ -0,0 +1,7 @@
+{
+ "is-base-vf-module": false,
+ "persona-model-id": "${persona_model_id}",
+ "persona-model-version": "1.0",
+ "vf-module-id": "${vf_module_id}",
+ "vf-module-name": "${vf_module_id}"
+}
diff --git a/robot/assets/templates/appc/vnf_mount.template b/robot/assets/templates/appc/vnf_mount.template
new file mode 100644
index 00000000..8ad11359
--- /dev/null
+++ b/robot/assets/templates/appc/vnf_mount.template
@@ -0,0 +1,16 @@
+<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">
+ <node-id>${nodeid}</node-id>
+ <host xmlns="urn:opendaylight:netconf-node-topology">${host}</host>
+ <port xmlns="urn:opendaylight:netconf-node-topology">${port}</port>
+ <username xmlns="urn:opendaylight:netconf-node-topology">${username}</username>
+ <password xmlns="urn:opendaylight:netconf-node-topology">${password}</password>
+ <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>
+ <!-- non-mandatory fields with default values, you can safely remove these if you do not wish to override any of these values-->
+ <reconnect-on-changed-schema xmlns="urn:opendaylight:netconf-node-topology">false</reconnect-on-changed-schema>
+ <connection-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">20000</connection-timeout-millis>
+ <max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">0</max-connection-attempts>
+ <between-attempts-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">2000</between-attempts-timeout-millis>
+ <sleep-factor xmlns="urn:opendaylight:netconf-node-topology">1.5</sleep-factor>
+ <!-- keepalive-delay set to 0 turns off keepalives-->
+ <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">120</keepalive-delay>
+</node> \ No newline at end of file
diff --git a/robot/assets/templates/asdc/action.template b/robot/assets/templates/asdc/action.template
new file mode 100644
index 00000000..4d417c9f
--- /dev/null
+++ b/robot/assets/templates/asdc/action.template
@@ -0,0 +1,3 @@
+{
+ "action": "${action}"
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/catalog_resource.template b/robot/assets/templates/asdc/catalog_resource.template
new file mode 100644
index 00000000..fcc17ce2
--- /dev/null
+++ b/robot/assets/templates/asdc/catalog_resource.template
@@ -0,0 +1,43 @@
+{
+ "artifacts": {},
+ "toscaArtifacts": {},
+ "contactId": "cs0008",
+ "categories": [
+ {
+ "name": "Generic",
+ "normalizedName": "generic",
+ "uniqueId": "resourceNewCategory.generic",
+ "subcategories": [
+ {
+ "name": "Abstract",
+ "normalizedName": "abstract",
+ "uniqueId": "resourceNewCategory.generic.abstract",
+ "icons": [
+ "database"
+ ]
+ }
+ ]
+ }
+ ],
+ "description": "vendor software product",
+ "icon": "defaulticon",
+ "componentInstancesProperties": {},
+ "componentInstancesAttributes": {},
+ "name": "${software_product_name}",
+ "tags": [
+ "${software_product_name}"
+ ],
+ "capabilities": {},
+ "requirements": {},
+ "deploymentArtifacts": {},
+ "componentType": "RESOURCE",
+ "vendorName": "${vendor_name}",
+ "vendorRelease": "1.0",
+ "componentInstances": [],
+ "properties": [],
+ "attributes": [],
+ "groups": [],
+ "resourceType": "VF",
+ "csarUUID": "${software_product_id}",
+ "csarVersion": "1.0"
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/catalog_service.template b/robot/assets/templates/asdc/catalog_service.template
new file mode 100644
index 00000000..e7ffdea6
--- /dev/null
+++ b/robot/assets/templates/asdc/catalog_service.template
@@ -0,0 +1,34 @@
+{
+ "artifacts": {},
+ "toscaArtifacts": {},
+ "contactId": "cs0008",
+ "categories": [
+ {
+ "name": "Network L1-3",
+ "normalizedName": "network l1-3",
+ "uniqueId": "serviceNewCategory.network l1-3",
+ "icons": [
+ "network_l_1-3"
+ ]
+ }
+ ],
+ "description": "catalog service description",
+ "icon": "network_l_1-3",
+ "componentInstancesProperties": {},
+ "componentInstancesAttributes": {},
+ "name": "${service_name}",
+ "tags": [
+ "robot-ete",
+ "${service_name}"
+ ],
+ "capabilities": {},
+ "requirements": {},
+ "deploymentArtifacts": {},
+ "componentType": "SERVICE",
+ "projectCode": "123456",
+ "componentInstances": [],
+ "properties": [],
+ "attributes": [],
+ "groups": [],
+ "serviceApiArtifacts": {}
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/entitlement_pool.template b/robot/assets/templates/asdc/entitlement_pool.template
new file mode 100644
index 00000000..bcb04d2f
--- /dev/null
+++ b/robot/assets/templates/asdc/entitlement_pool.template
@@ -0,0 +1,26 @@
+{
+ "name": "${entitlement_pool_name}",
+ "description": "vendor entitlement pool",
+ "thresholdValue": "99",
+ "thresholdUnits": "Absolute",
+ "entitlementMetric": {
+ "choice": "CPU",
+ "other": ""
+ },
+ "increments": "robot",
+ "aggregationFunction": {
+ "choice": "Peak",
+ "other": ""
+ },
+ "operationalScope": {
+ "choices": [
+ "Availability_Zone"
+ ],
+ "other": ""
+ },
+ "time": {
+ "choice": "Hour",
+ "other": ""
+ },
+ "manufacturerReferenceNumber": "robot12345"
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/feature_group.template b/robot/assets/templates/asdc/feature_group.template
new file mode 100644
index 00000000..3d87b047
--- /dev/null
+++ b/robot/assets/templates/asdc/feature_group.template
@@ -0,0 +1,11 @@
+{
+ "name": "${feature_group_name}",
+ "description": "vendor feature group",
+ "partNumber": "123abc456",
+ "addedLicenseKeyGroupsIds": [
+ "${key_group_id}"
+ ],
+ "addedEntitlementPoolsIds": [
+ "${entitlement_pool_id}"
+ ]
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/key_group.template b/robot/assets/templates/asdc/key_group.template
new file mode 100644
index 00000000..2081261b
--- /dev/null
+++ b/robot/assets/templates/asdc/key_group.template
@@ -0,0 +1,11 @@
+{
+ "name": "${key_group_name}",
+ "description": "vendor license key group",
+ "operationalScope": {
+ "choices": [
+ "Tenant"
+ ],
+ "other": ""
+ },
+ "type": "Universal"
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/license_agreement.template b/robot/assets/templates/asdc/license_agreement.template
new file mode 100644
index 00000000..6324d140
--- /dev/null
+++ b/robot/assets/templates/asdc/license_agreement.template
@@ -0,0 +1,12 @@
+{
+ "name": "${license_agreement_name}",
+ "description": "vendor license agreement",
+ "requirementsAndConstrains": "abcdef",
+ "licenseTerm": {
+ "choice": "Fixed_Term",
+ "other": ""
+ },
+ "addedFeatureGroupsIds": [
+ "${feature_group_id}"
+ ]
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/license_model.template b/robot/assets/templates/asdc/license_model.template
new file mode 100644
index 00000000..45fc83fc
--- /dev/null
+++ b/robot/assets/templates/asdc/license_model.template
@@ -0,0 +1,5 @@
+{
+ "vendorName": "${vendor_name}",
+ "description": "vendor license model",
+ "iconRef": "icon"
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/resource_instance.template b/robot/assets/templates/asdc/resource_instance.template
new file mode 100644
index 00000000..215f8282
--- /dev/null
+++ b/robot/assets/templates/asdc/resource_instance.template
@@ -0,0 +1,10 @@
+{
+ "uniqueId": "${catalog_resource_id}${milli_timestamp}",
+ "posX": 406,
+ "posY": 248,
+ "name": "${catalog_resource_name}",
+ "componentVersion": "1.0",
+ "originType": "VF",
+ "icon": "defaulticon",
+ "componentUid": "${catalog_resource_id}"
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/software_product.template b/robot/assets/templates/asdc/software_product.template
new file mode 100644
index 00000000..f8a47521
--- /dev/null
+++ b/robot/assets/templates/asdc/software_product.template
@@ -0,0 +1,16 @@
+{
+ "name": "${software_product_name}",
+ "description": "vendor software product",
+ "category": "resourceNewCategory.generic",
+ "subCategory": "resourceNewCategory.generic.abstract",
+ "licensingVersion": "1.0",
+ "vendorName": "${vendor_name}",
+ "vendorId": "${vendor_id}",
+ "icon": "icon",
+ "licensingData": {
+ "licenseAgreement": "${license_agreement_id}",
+ "featureGroups": [
+ "${feature_group_id}"
+ ]
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/asdc/user_remarks.template b/robot/assets/templates/asdc/user_remarks.template
new file mode 100644
index 00000000..465115e6
--- /dev/null
+++ b/robot/assets/templates/asdc/user_remarks.template
@@ -0,0 +1 @@
+{"userRemarks":"${user_remarks}"} \ No newline at end of file
diff --git a/robot/assets/templates/cinder_add_volume.template b/robot/assets/templates/cinder_add_volume.template
new file mode 100644
index 00000000..544f41e3
--- /dev/null
+++ b/robot/assets/templates/cinder_add_volume.template
@@ -0,0 +1,9 @@
+{
+ "volume": {
+ "display_name": "${name}",
+ "display_description": "${description}",
+ "size": ${size},
+ "volume_type": "${type}",
+ "availability_zone": "${availability_zone}"
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/heat_add_stack.template b/robot/assets/templates/heat_add_stack.template
new file mode 100644
index 00000000..c3af3172
--- /dev/null
+++ b/robot/assets/templates/heat_add_stack.template
@@ -0,0 +1,12 @@
+{
+ "files": {},
+ "disable_rollback": true,
+ "stack_name": "${stack_name}",
+ "parameters":
+ ${parameters}
+ ,
+ "template":
+ ${template}
+ ,
+ "timeout_mins": 60
+} \ No newline at end of file
diff --git a/robot/assets/templates/keystone_get_auth.template b/robot/assets/templates/keystone_get_auth.template
new file mode 100644
index 00000000..255f8ffd
--- /dev/null
+++ b/robot/assets/templates/keystone_get_auth.template
@@ -0,0 +1,8 @@
+{
+ "auth": {
+ "passwordCredentials": {
+ "username": "${username}",
+ "password": "${password}"
+ }
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/neutron_add_network.template b/robot/assets/templates/neutron_add_network.template
new file mode 100644
index 00000000..36382d47
--- /dev/null
+++ b/robot/assets/templates/neutron_add_network.template
@@ -0,0 +1,7 @@
+{
+ "network":
+ {
+ "name": "${name}",
+ "admin_state_up": false
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/neutron_add_subnet.template b/robot/assets/templates/neutron_add_subnet.template
new file mode 100644
index 00000000..5a4264f8
--- /dev/null
+++ b/robot/assets/templates/neutron_add_subnet.template
@@ -0,0 +1,8 @@
+{
+ "subnet": {
+ "network_id": "${network_id}",
+ "ip_version": 4,
+ "name":"${subnet_name}",
+ "cidr": "${cidr}"
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/nova_add_keypair.template b/robot/assets/templates/nova_add_keypair.template
new file mode 100644
index 00000000..52e2b068
--- /dev/null
+++ b/robot/assets/templates/nova_add_keypair.template
@@ -0,0 +1,6 @@
+{
+ "keypair": {
+ "name": "${name}",
+ "public_key": "${publickey}"
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/nova_add_server.template b/robot/assets/templates/nova_add_server.template
new file mode 100644
index 00000000..81578393
--- /dev/null
+++ b/robot/assets/templates/nova_add_server.template
@@ -0,0 +1,17 @@
+{
+ "server": {
+ "name": "${name}",
+ "imageRef": "${imageRef}",
+ "flavorRef": "${flavorRef}",
+ "config_drive": true,
+ "OS-DCF:diskConfig": "MANUAL",
+ "metadata": {
+ "${name}": "Server for attaching VVG"
+ },
+ "networks": [
+ {
+ "uuid": "00000000-0000-0000-0000-000000000000"
+ }
+ ]
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/policy/closedloop_configpolicy.template b/robot/assets/templates/policy/closedloop_configpolicy.template
new file mode 100644
index 00000000..e14b615d
--- /dev/null
+++ b/robot/assets/templates/policy/closedloop_configpolicy.template
@@ -0,0 +1,31 @@
+{
+ "service": "TcaMetrics",
+ "location": "SampleServiceLocation",
+ "uuid": "/services/cdap-tca-hi-lo/instances/demo/configuration/metricsPerFunctionalRole/vFireWall",
+ "policyName": "${policy_name}",
+ "description": "vFirewall configuration Policy@CreatedBy:demo@CreatedBy:@ModifiedBy:demo@ModifiedBy:",
+ "configName": "SampleConfigName",
+ "templateVersion": "OpenSource.version.1",
+ "version": "1.0.0.5",
+ "priority": "1",
+ "policyScope": "resource=SampleResource,service=SampleService,type=SampleType,closedLoopControlName=SampleClosedLoop",
+ "content": {
+ "thresholds": [{
+ "severity": "MAJOR",
+ "fieldPath": "$$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn",
+ "thresholdValue": "300",
+ "closedLoopControlName": "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8",
+ "version": "1.0.2",
+ "direction": "LESS_OR_EQUAL"
+ }, {
+ "severity": "CRITICAL",
+ "fieldPath": "$$.event.measurementsForVfScalingFields.vNicUsageArray[*].packetsIn",
+ "thresholdValue": "800",
+ "closedLoopControlName": "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8",
+ "version": "1.0.2",
+ "direction": "GREATER_OR_EQUAL"
+ }],
+ "functionalRole": "vFirewall",
+ "name": "0"
+ }
+}
diff --git a/robot/assets/templates/policy/closedloop_createpolicy.template b/robot/assets/templates/policy/closedloop_createpolicy.template
new file mode 100644
index 00000000..7c693e84
--- /dev/null
+++ b/robot/assets/templates/policy/closedloop_createpolicy.template
@@ -0,0 +1,21 @@
+{
+ "policyConfigType": "BRMS_PARAM",
+ "policyName": "${policy_name}",
+ "policyDescription": "Create BRMS Param policy",
+ "attributes": {
+ "RULE": {
+ "templateName": "ClosedLoopDemo_closedLoopControlName",
+ "aaiNamedQueryUUID": "2",
+ "aaiPassword": "2",
+ "aaiPatternMatch": "2",
+ "aaiURL": "2",
+ "actor": "2",
+ "appcTopic": "2",
+ "closedLoopControlName": "2",
+ "msoPassword": "2",
+ "msoURL": "2",
+ "msoUsername": "2",
+ "aaiUsername": "3"
+ }
+ }
+}
diff --git a/robot/assets/templates/policy/closedloop_deletepolicy.template b/robot/assets/templates/policy/closedloop_deletepolicy.template
new file mode 100644
index 00000000..55510102
--- /dev/null
+++ b/robot/assets/templates/policy/closedloop_deletepolicy.template
@@ -0,0 +1,5 @@
+{
+ "pdpGroup": "default",
+ "policyComponent": "PDP",
+ "policyName": "${policy_name}"
+}
diff --git a/robot/assets/templates/policy/closedloop_getconfigpolicy.template b/robot/assets/templates/policy/closedloop_getconfigpolicy.template
new file mode 100644
index 00000000..34145e5b
--- /dev/null
+++ b/robot/assets/templates/policy/closedloop_getconfigpolicy.template
@@ -0,0 +1,8 @@
+{
+ "configAttributes" : {
+ },
+ "configName" : ".*",
+ "ecompName" : "DCAE",
+ "policyName" : "${config_policy_name}",
+ "unique" : true
+} \ No newline at end of file
diff --git a/robot/assets/templates/policy/closedloop_opspolicy.template b/robot/assets/templates/policy/closedloop_opspolicy.template
new file mode 100644
index 00000000..722c9dca
--- /dev/null
+++ b/robot/assets/templates/policy/closedloop_opspolicy.template
@@ -0,0 +1,25 @@
+
+{
+ "policyConfigType": "BRMS_PARAM",
+ "policyName": "${policy_name}",
+ "policyDescription": "Create BRMS Param policy for vFW",
+ "attributes": {
+ "RULE": {
+ "templateName": "ControlLoopDemo__closedLoopControlName",
+ "closedLoopControlName": "CL-FRWL-LOW-TRAFFIC-SIG-d925ed73-8231-4d02-9545-db4e101f88f8",
+ "policyVersion": "v1.0",
+ "aaiNamedQueryUUID": "null",
+ "aaiPassword": "null",
+ "aaiURL": "null",
+ "actor": "APPC",
+ "appcTopic": "APPC-CL",
+ "msoPassword": "null",
+ "msoURL": "null",
+ "msoUsername": "null",
+ "aaiUsername": "null",
+ "notificationTopic": "POLICY-CL-MGT",
+ "aaiPatternMatch": 1
+ }
+ }
+}
+
diff --git a/robot/assets/templates/policy/closedloop_pushpolicy.template b/robot/assets/templates/policy/closedloop_pushpolicy.template
new file mode 100644
index 00000000..ce1d4859
--- /dev/null
+++ b/robot/assets/templates/policy/closedloop_pushpolicy.template
@@ -0,0 +1,5 @@
+{
+ "policyName" : "${policy_name}",
+ "policyType" : "${policy_type}",
+ "pdpGroup" : "default"
+} \ No newline at end of file
diff --git a/robot/assets/templates/sdnc/dnsscaling_preload.template b/robot/assets/templates/sdnc/dnsscaling_preload.template
new file mode 100644
index 00000000..cf988d5b
--- /dev/null
+++ b/robot/assets/templates/sdnc/dnsscaling_preload.template
@@ -0,0 +1,96 @@
+{
+ "input": {
+ "vnf-topology-information": {
+ "vnf-topology-identifier": {
+ "service-type": "${service_type}",
+ "vnf-name": "${vf_module_name}",
+ "vnf-type": "${vf_module_type}",
+ "generic-vnf-name": "${generic_vnf_name}",
+ "generic-vnf-type": "${generic_vnf_type}"
+ },
+ "vnf-assignments": {
+ "availability-zones": [],
+ "vnf-networks": [],
+ "vnf-vms": []
+ },
+ "vnf-parameters": [
+ {
+ "vnf-parameter-name": "repo_url",
+ "vnf-parameter-value": "${repo_url}"
+ },
+ {
+ "vnf-parameter-name": "repo_user",
+ "vnf-parameter-value": "${repo_user}"
+ },
+ {
+ "vnf-parameter-name": "repo_passwd",
+ "vnf-parameter-value": "${repo_passwd}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_net_id",
+ "vnf-parameter-value": "${ecomp_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_subnet_id",
+ "vnf-parameter-value": "${ecomp_private_subnet_id}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_net_cidr",
+ "vnf-parameter-value": "${ecomp_private_net_cidr}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_net_id",
+ "vnf-parameter-value": "${vlb_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_ip_0",
+ "vnf-parameter-value": "${vlb_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_ip_1",
+ "vnf-parameter-value": "${vlb_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vdns_private_ip_0",
+ "vnf-parameter-value": "${vdns_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vdns_private_ip_1",
+ "vnf-parameter-value": "${vdns_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vdns_name_0",
+ "vnf-parameter-value": "${scaling_vdns_name_0}"
+ },
+ {
+ "vnf-parameter-name": "webserver_ip",
+ "vnf-parameter-value": "${webserver_ip}"
+ },
+ {
+ "vnf-parameter-name": "dcae_collector_ip",
+ "vnf-parameter-value": "${dcae_collector_ip}"
+ },
+ {
+ "vnf-parameter-name": "key_name",
+ "vnf-parameter-value": "${key_name}"
+ },
+ {
+ "vnf-parameter-name": "pub_key",
+ "vnf-parameter-value": "${pub_key}"
+ }
+ ]
+ },
+ "request-information": {
+ "request-id": "robot12",
+ "order-version": "1",
+ "notification-url": "openecomp.org",
+ "order-number": "1",
+ "request-action": "PreloadVNFRequest"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "robot12",
+ "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+ "svc-action": "reserve"
+ }
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/sdnc/vfw_preload.template b/robot/assets/templates/sdnc/vfw_preload.template
new file mode 100644
index 00000000..c94c565f
--- /dev/null
+++ b/robot/assets/templates/sdnc/vfw_preload.template
@@ -0,0 +1,132 @@
+{
+ "input": {
+ "vnf-topology-information": {
+ "vnf-topology-identifier": {
+ "service-type": "${service_type}",
+ "vnf-name": "${vf_module_name}",
+ "vnf-type": "${vf_module_type}",
+ "generic-vnf-name": "${generic_vnf_name}",
+ "generic-vnf-type": "${generic_vnf_type}"
+ },
+ "vnf-assignments": {
+ "availability-zones": [],
+ "vnf-networks": [],
+ "vnf-vms": []
+ },
+ "vnf-parameters": [
+ {
+ "vnf-parameter-name": "repo_url",
+ "vnf-parameter-value": "${repo_url}"
+ },
+ {
+ "vnf-parameter-name": "repo_user",
+ "vnf-parameter-value": "${repo_user}"
+ },
+ {
+ "vnf-parameter-name": "repo_passwd",
+ "vnf-parameter-value": "${repo_passwd}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_net_id",
+ "vnf-parameter-value": "${ecomp_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_subnet_id",
+ "vnf-parameter-value": "${ecomp_private_subnet_id}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_net_cidr",
+ "vnf-parameter-value": "${ecomp_private_net_cidr}"
+ },
+ {
+ "vnf-parameter-name": "unprotected_private_net_id",
+ "vnf-parameter-value": "${unprotected_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "protected_private_net_id",
+ "vnf-parameter-value": "${protected_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "protected_private_net_cidr",
+ "vnf-parameter-value": "${protected_private_net_cidr}"
+ },
+ {
+ "vnf-parameter-name": "unprotected_private_net_cidr",
+ "vnf-parameter-value": "${unprotected_private_net_cidr}"
+ },
+ {
+ "vnf-parameter-name": "vfw_private_ip_0",
+ "vnf-parameter-value": "${vfw_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vfw_private_ip_1",
+ "vnf-parameter-value": "${vfw_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vfw_private_ip_2",
+ "vnf-parameter-value": "${vfw_private_ip_2}"
+ },
+ {
+ "vnf-parameter-name": "vpg_private_ip_0",
+ "vnf-parameter-value": "${vpg_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vpg_private_ip_1",
+ "vnf-parameter-value": "${vpg_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vsn_private_ip_0",
+ "vnf-parameter-value": "${vsn_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vsn_private_ip_1",
+ "vnf-parameter-value": "${vsn_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vfw_name_0",
+ "vnf-parameter-value": "${vfw_name_0}"
+ },
+ {
+ "vnf-parameter-name": "vpg_name_0",
+ "vnf-parameter-value": "${vpg_name_0}"
+ },
+ {
+ "vnf-parameter-name": "vsn_name_0",
+ "vnf-parameter-value": "${vsn_name_0}"
+ },
+ {
+ "vnf-parameter-name": "webserver_ip",
+ "vnf-parameter-value": "${webserver_ip}"
+ },
+ {
+ "vnf-parameter-name": "dcae_collector_ip",
+ "vnf-parameter-value": "${dcae_collector_ip}"
+ },
+ {
+ "vnf-parameter-name": "dcae_collector_port",
+ "vnf-parameter-value": "${dcae_collector_port}"
+ },
+ {
+ "vnf-parameter-name": "key_name",
+ "vnf-parameter-value": "${key_name}"
+ },
+ {
+ "vnf-parameter-name": "pub_key",
+ "vnf-parameter-value": "${pub_key}"
+ }
+ ]
+ },
+ "request-information": {
+ "request-id": "robot12",
+ "order-version": "1",
+ "notification-url": "openecomp.org",
+ "order-number": "1",
+ "request-action": "PreloadVNFRequest"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "robot12",
+ "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+ "svc-action": "reserve"
+ }
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/sdnc/vlb_preload.template b/robot/assets/templates/sdnc/vlb_preload.template
new file mode 100644
index 00000000..736f790b
--- /dev/null
+++ b/robot/assets/templates/sdnc/vlb_preload.template
@@ -0,0 +1,108 @@
+{
+ "input": {
+ "vnf-topology-information": {
+ "vnf-topology-identifier": {
+ "service-type": "${service_type}",
+ "vnf-name": "${vf_module_name}",
+ "vnf-type": "${vf_module_type}",
+ "generic-vnf-name": "${generic_vnf_name}",
+ "generic-vnf-type": "${generic_vnf_type}"
+ },
+ "vnf-assignments": {
+ "availability-zones": [],
+ "vnf-networks": [],
+ "vnf-vms": []
+ },
+ "vnf-parameters": [
+ {
+ "vnf-parameter-name": "repo_url",
+ "vnf-parameter-value": "${repo_url}"
+ },
+ {
+ "vnf-parameter-name": "repo_user",
+ "vnf-parameter-value": "${repo_user}"
+ },
+ {
+ "vnf-parameter-name": "repo_passwd",
+ "vnf-parameter-value": "${repo_passwd}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_net_id",
+ "vnf-parameter-value": "${ecomp_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_subnet_id",
+ "vnf-parameter-value": "${ecomp_private_subnet_id}"
+ },
+ {
+ "vnf-parameter-name": "ecomp_private_net_cidr",
+ "vnf-parameter-value": "${ecomp_private_net_cidr}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_net_id",
+ "vnf-parameter-value": "${vlb_private_net_id}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_net_cidr",
+ "vnf-parameter-value": "${vlb_private_net_cidr}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_ip_0",
+ "vnf-parameter-value": "${vlb_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vlb_private_ip_1",
+ "vnf-parameter-value": "${vlb_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vdns_private_ip_0",
+ "vnf-parameter-value": "${vdns_private_ip_0}"
+ },
+ {
+ "vnf-parameter-name": "vdns_private_ip_1",
+ "vnf-parameter-value": "${vdns_private_ip_1}"
+ },
+ {
+ "vnf-parameter-name": "vlb_name_0",
+ "vnf-parameter-value": "${vlb_name_0}"
+ },
+ {
+ "vnf-parameter-name": "vdns_name_0",
+ "vnf-parameter-value": "${vdns_name_0}"
+ },
+ {
+ "vnf-parameter-name": "webserver_ip",
+ "vnf-parameter-value": "${webserver_ip}"
+ },
+ {
+ "vnf-parameter-name": "dcae_collector_ip",
+ "vnf-parameter-value": "${dcae_collector_ip}"
+ },
+ {
+ "vnf-parameter-name": "dcae_collector_port",
+ "vnf-parameter-value": "${dcae_collector_port}"
+ },
+ {
+ "vnf-parameter-name": "key_name",
+ "vnf-parameter-value": "${key_name}"
+ },
+ {
+ "vnf-parameter-name": "pub_key",
+ "vnf-parameter-value": "${pub_key}"
+ }
+ ]
+ },
+ "request-information": {
+ "request-id": "robot12",
+ "order-version": "1",
+ "notification-url": "openecomp.org",
+ "order-number": "1",
+ "request-action": "PreloadVNFRequest"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "robot12",
+ "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+ "svc-action": "reserve"
+ }
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/sdnc/vvg_preload.template b/robot/assets/templates/sdnc/vvg_preload.template
new file mode 100644
index 00000000..83095e9d
--- /dev/null
+++ b/robot/assets/templates/sdnc/vvg_preload.template
@@ -0,0 +1,36 @@
+{
+ "input": {
+ "vnf-topology-information": {
+ "vnf-topology-identifier": {
+ "service-type": "${service_type}",
+ "vnf-name": "${vf_module_name}",
+ "vnf-type": "${vf_module_type}",
+ "generic-vnf-name": "${generic_vnf_name}",
+ "generic-vnf-type": "${generic_vnf_type}"
+ },
+ "vnf-assignments": {
+ "availability-zones": [],
+ "vnf-networks": [],
+ "vnf-vms": []
+ },
+ "vnf-parameters": [
+ {
+ "vnf-parameter-name": "nova_instance",
+ "vnf-parameter-value": "${nova_instance}"
+ }
+ ]
+ },
+ "request-information": {
+ "request-id": "robot12",
+ "order-version": "1",
+ "notification-url": "openecomp.org",
+ "order-number": "1",
+ "request-action": "PreloadVNFRequest"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "robot12",
+ "svc-notification-url": "http:\/\/openecomp.org:8080\/adapters\/rest\/SDNCNotify",
+ "svc-action": "reserve"
+ }
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/template_example.template b/robot/assets/templates/template_example.template
new file mode 100644
index 00000000..42583f14
--- /dev/null
+++ b/robot/assets/templates/template_example.template
@@ -0,0 +1,6 @@
+{
+ "requestReferences": {
+ "instanceId": "${instanceId}",
+ "requestId": "${requestId}"
+ }
+} \ No newline at end of file
diff --git a/robot/assets/templates/vfw_pg_stream_enable.template b/robot/assets/templates/vfw_pg_stream_enable.template
new file mode 100644
index 00000000..c5036334
--- /dev/null
+++ b/robot/assets/templates/vfw_pg_stream_enable.template
@@ -0,0 +1,4 @@
+ {
+ "id" : "${stream}",
+ "is-enabled" : "true"
+ }
diff --git a/robot/assets/templates/vfw_pg_streams_enable.template b/robot/assets/templates/vfw_pg_streams_enable.template
new file mode 100644
index 00000000..8f5fec61
--- /dev/null
+++ b/robot/assets/templates/vfw_pg_streams_enable.template
@@ -0,0 +1,7 @@
+{
+ "pg-streams" : {
+ "pg-stream" : [
+${pgstreams}
+ ]
+ }
+}