[CORD-2054] Added vspgwu service with new TOSCA configuration

Change-Id: I6f878f07fc2fc7a91b66b0cc35d7d93c6dc7efb7
diff --git a/profile_manifests/mcord.yml b/profile_manifests/mcord.yml
index fdf1613..4b9471d 100644
--- a/profile_manifests/mcord.yml
+++ b/profile_manifests/mcord.yml
@@ -50,6 +50,7 @@
   - internet-emulator-service.yaml
   - sdn-controller-service.yaml
   - vspgwc-service.yaml
+  - vspgwu-service.yaml
 
 xos_other_templates:
   - fabric-network-cfg.json
@@ -84,6 +85,9 @@
   - name: vspgwc
     path: orchestration/xos_services/vspgwc
     keypair: mcord_rsa
+  - name: vspgwu
+    path: orchestration/xos_services/vspgwu
+    keypair: mcord_rsa
   - name: exampleservice
     path: orchestration/xos_services/exampleservice
     keypair: exampleservice_rsa
diff --git a/roles/cord-profile/templates/vspgwu-service.yaml.j2 b/roles/cord-profile/templates/vspgwu-service.yaml.j2
new file mode 100644
index 0000000..f6fc2ea
--- /dev/null
+++ b/roles/cord-profile/templates/vspgwu-service.yaml.j2
@@ -0,0 +1,189 @@
+{#
+Copyright 2017-present Open Networking Foundation
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+#}
+
+
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: created by platform-install, need to add M-CORD services later
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/slice.yaml
+   - custom_types/site.yaml
+   - custom_types/image.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networkslice.yaml
+   - custom_types/vspgwuservice.yaml
+   - custom_types/vspgwuvendor.yaml
+   - custom_types/vspgwutenant.yaml
+
+topology_template:
+  node_templates:
+
+# site, image, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+        must-exist: true
+        name: {{ site_name }}
+
+    m1.small:
+      type: tosca.nodes.Flavor
+      properties:
+        name: m1.small
+        must-exist: true
+
+    trusty-server-multi-nic:
+      type: tosca.nodes.Image
+      properties:
+        name: trusty-server-multi-nic
+        must-exist: true
+
+# management networks, fully created in management-net.yaml
+    management:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: management
+
+{% if use_management_hosts %}
+    management_hosts:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: management_hosts
+{% endif %}
+
+# sgi_network is for connectivity between VMs, fully created in sgi-net.yaml
+    sgi_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: sgi_network
+
+# sbi_network is for connectivity between VMs, fully created in sbi-net.yaml
+    sbi_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: sbi_network
+
+# s1u_network is for connectivity between VMs, fully created in s1u-net.yaml
+    s1u_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: s1u_network
+
+# CORD Services
+    service#vspgwu:
+      type: tosca.nodes.VSPGWUService
+      properties:
+          name: vspgwu
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vspgwu/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+# CORD Slices
+    {{ site_name }}_vspgwu:
+      description: SDN controller slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vspgwu
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vspgwu
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: trusty-server-multi-nic
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.small
+              relationship: tosca.relationships.BelongsToOne
+
+# CORD Service Instances
+
+    intel_vspgwu:
+      type: tosca.nodes.VSPGWUVendor
+      properties:
+        name: intel_vspgwu
+      requirements:
+        - image:
+            node: trusty-server-multi-nic
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.small
+            relationship: tosca.relationships.BelongsToOne
+
+    serviceinstance#vspgwu_instance:
+      type: tosca.nodes.VSPGWUTenant
+      properties:
+          name: vspgwu_instance1
+      requirements:
+        - vspgwu_vendor:
+            node: intel_vspgwu
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            node: service#vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+# CORD NetworkSlices
+    vspgwu_slice_management_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: management
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwu_slice_sgi_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: sgi_network
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwu_slice_sbi_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: sbi_network
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwu
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwu_slice_s1u_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: s1u_network
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwu
+            relationship: tosca.relationships.BelongsToOne