CORD-2183 Remove SDN Controller service from Spirent profile

Change-Id: I9d0807ead51783a66b20861576edfb8b8099339e
diff --git a/profile_manifests/mcord-spirent.yml b/profile_manifests/mcord-spirent.yml
index 4520e41..e31d4a7 100644
--- a/profile_manifests/mcord-spirent.yml
+++ b/profile_manifests/mcord-spirent.yml
@@ -39,16 +39,13 @@
   - xos-gui-extensions.yml
 
 xos_new_tosca_config_templates:
-  - mcord-subscriber.yml
   - s11-net.yaml
   - s1u-net.yaml
   - nbi-net.yaml
   - sbi-net.yaml
+  - spgw-net.yaml
   - sgi-net.yaml
   - mcord-spirent-services.yml
-  - sdn-controller-service.yaml
-  - vspgwc-service.yaml
-  - vspgwu-service.yaml
 
 xos_other_templates:
   - fabric-network-cfg.json
@@ -74,18 +71,12 @@
   - name: venb
     path: orchestration/xos_services/venb
     keypair: mcord_rsa
-  - name: sdncontroller
-    path: orchestration/xos_services/sdn-controller
-    keypair: mcord_rsa
   - 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
 
 profile_library: "mcord"
 
diff --git a/roles/cord-profile/templates/mcord-spirent-services.yml.j2 b/roles/cord-profile/templates/mcord-spirent-services.yml.j2
index 0b257b1..1392c20 100644
--- a/roles/cord-profile/templates/mcord-spirent-services.yml.j2
+++ b/roles/cord-profile/templates/mcord-spirent-services.yml.j2
@@ -31,6 +31,12 @@
    - custom_types/networkslice.yaml
    - custom_types/venbservice.yaml
    - custom_types/venbserviceinstance.yaml
+   - custom_types/vspgwcservice.yaml
+   - custom_types/vspgwcvendor.yaml
+   - custom_types/vspgwctenant.yaml
+   - custom_types/vspgwuservice.yaml
+   - custom_types/vspgwuvendor.yaml
+   - custom_types/vspgwutenant.yaml
 
 topology_template:
   node_templates:
@@ -113,6 +119,12 @@
       properties:
         must-exist: true
         name: sgi_network
+# spgw_network is for connectivity between VMs, fully created in sgi-net.yaml
+    spgw_network:
+      type: tosca.nodes.Network
+      properties:
+        must-exist: true
+        name: spgw_network
 
 # ONOS_CORD, fully created in vtn.yaml
     service#ONOS_CORD:
@@ -128,7 +140,7 @@
         must-exist: true
         name: ONOS_Fabric
 
-# CORD Services
+# vENB Service
     service#venb:
       type: tosca.nodes.VENBService
       properties:
@@ -139,7 +151,6 @@
       artifacts:
           pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
 
-# CORD Slices
     {{ site_name }}_venb:
       description: vENB Service Slice
       type: tosca.nodes.Slice
@@ -209,3 +220,183 @@
         - slice:
             node: {{ site_name }}_venb
             relationship: tosca.relationships.BelongsToOne
+
+#vSPGWC Service
+    service#vspgwc:
+      type: tosca.nodes.VSPGWCService
+      properties:
+          name: vspgwc
+          public_key: {{ lookup('file', config_cord_profile_dir + '/key_import/mcord_rsa.pub') }}
+          private_key_fn: /opt/xos/services/vspgwc/keys/mcord_rsa
+      artifacts:
+          pubkey: /opt/cord_profile/key_import/mcord_rsa.pub
+
+    {{ site_name }}_vspgwc:
+      description: SDN controller slice
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_vspgwc
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: mysite
+              relationship: tosca.relationships.BelongsToOne
+          - service:
+              node: service#vspgwc
+              relationship: tosca.relationships.BelongsToOne
+          - default_image:
+              node: trusty-server-multi-nic
+              relationship: tosca.relationships.BelongsToOne
+          - default_flavor:
+              node: m1.small
+              relationship: tosca.relationships.BelongsToOne
+
+    intel_vspgwc:
+      type: tosca.nodes.VSPGWCVendor
+      properties:
+        name: intel_vspgwc
+      requirements:
+        - image:
+            node: trusty-server-multi-nic
+            relationship: tosca.relationships.BelongsToOne
+        - flavor:
+            node: m1.small
+            relationship: tosca.relationships.BelongsToOne
+
+    serviceinstance#vspgwc_instance:
+      type: tosca.nodes.VSPGWCTenant
+      properties:
+          name: vspgwc_instance1
+      requirements:
+        - vspgwc_vendor:
+            node: intel_vspgwc
+            relationship: tosca.relationships.BelongsToOne
+        - owner:
+            node: service#vspgwc
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwc_slice_management_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: management
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwc
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwc_slice_s11_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: s11_network
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwc
+            relationship: tosca.relationships.BelongsToOne
+
+    vspgwc_slice_spgw_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: spgw_network
+            relationship: tosca.relationships.BelongsToOne
+        - slice:
+            node: {{ site_name }}_vspgwc
+            relationship: tosca.relationships.BelongsToOne
+
+#vSPGWU Service
+    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
+
+    {{ 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
+
+    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
+
+    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_spgw_network:
+      type: tosca.nodes.NetworkSlice
+      requirements:
+        - network:
+            node: spgw_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
diff --git a/roles/cord-profile/templates/spgw-net.yaml.j2 b/roles/cord-profile/templates/spgw-net.yaml.j2
new file mode 100644
index 0000000..0f4739a
--- /dev/null
+++ b/roles/cord-profile/templates/spgw-net.yaml.j2
@@ -0,0 +1,56 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+imports:
+   - custom_types/xos.yaml
+   - custom_types/site.yaml
+   - custom_types/slice.yaml
+   - custom_types/flavor.yaml
+   - custom_types/network.yaml
+   - custom_types/networktemplate.yaml
+
+description: network for direct communication between SPGW-C and SPGW-U
+
+topology_template:
+  node_templates:
+
+# site, fully created in deployment.yaml
+    {{ site_name }}:
+      type: tosca.nodes.Site
+      properties:
+          name: {{ site_name }}
+
+# spgw network
+    spgw_template:
+      type: tosca.nodes.NetworkTemplate
+      properties:
+          name: spgw_template
+          visibility: private
+          translation: none
+          vtn_kind: PRIVATE
+
+    spgw_network:
+      type: tosca.nodes.Network
+      properties:
+          name: spgw_network
+          subnet: 117.0.0.0/24
+          permit_all_slices: true
+      requirements:
+          - template:
+              node: spgw_template
+              relationship: tosca.relationships.BelongsToOne
+          - owner:
+              node: {{ site_name }}_spgw
+              relationship: tosca.relationships.BelongsToOne
+
+    {{ site_name }}_spgw:
+      description: This slice exists solely to own the private network
+      type: tosca.nodes.Slice
+      properties:
+          name: {{ site_name }}_spgw
+          default_isolation: vm
+          network: noauto
+      requirements:
+          - site:
+              node: {{ site_name }}
+              relationship: tosca.relationships.BelongsToOne
+
diff --git a/roles/test-mcord-base-spirent/defaults/main.yml b/roles/test-mcord-base-spirent/defaults/main.yml
index 2e0ccc9..c6392b3 100644
--- a/roles/test-mcord-base-spirent/defaults/main.yml
+++ b/roles/test-mcord-base-spirent/defaults/main.yml
@@ -26,13 +26,14 @@
   - management
   - sgi_network
   - s11_network
-  - sbi_network
-  - nbi_network
+  - spgw_network
+#  - sbi_network
+#  - nbi_network
 
 test_services:
   - venb
   - vspgwc
-  - sdncontroller
+#  - sdncontroller
   - vspgwu
 
 test_ports:
@@ -42,11 +43,13 @@
   - { vm: venb, network: s1u_network }
   - { vm: vspgwc, network: management }
   - { vm: vspgwc, network: s11_network }
-  - { vm: vspgwc, network: nbi_network }
-  - { vm: sdncontroller, network: management }
-  - { vm: sdncontroller, network: nbi_network }
-  - { vm: sdncontroller, network: sbi_network }
+  - { vm: vspgwc, network: spgw_network }
+#  - { vm: vspgwc, network: nbi_network }
+#  - { vm: sdncontroller, network: management }
+#  - { vm: sdncontroller, network: nbi_network }
+#  - { vm: sdncontroller, network: sbi_network }
   - { vm: vspgwu, network: management }
   - { vm: vspgwu, network: s1u_network }
   - { vm: vspgwu, network: sgi_network }
-  - { vm: vspgwu, network: sbi_network }
+  - { vm: vspgwu, network: spgw_network }
+#  - { vm: vspgwu, network: sbi_network }